made markdown/showdown image processing codepot wiki-aware
This commit is contained in:
parent
16d4213c53
commit
45d2d50ba6
@ -470,9 +470,6 @@ class Wiki extends Controller
|
|||||||
|
|
||||||
function attachment0 ($projectid = '', $target = '')
|
function attachment0 ($projectid = '', $target = '')
|
||||||
{
|
{
|
||||||
//$target => projectid:wikiname:attachment
|
|
||||||
//$target => projectid:#I1:file
|
|
||||||
|
|
||||||
$login = $this->login->getUser ();
|
$login = $this->login->getUser ();
|
||||||
if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '')
|
if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '')
|
||||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||||
@ -489,6 +486,8 @@ class Wiki extends Controller
|
|||||||
$part = explode (':', $target);
|
$part = explode (':', $target);
|
||||||
if (count($part) == 3)
|
if (count($part) == 3)
|
||||||
{
|
{
|
||||||
|
//$target => projectid:wikiname:attachment
|
||||||
|
//$target => projectid:#I1:file
|
||||||
if ($part[0] == '') $part[0] = $projectid;
|
if ($part[0] == '') $part[0] = $projectid;
|
||||||
if ($part[1][0] == '#' && $part[1][1] == 'I')
|
if ($part[1][0] == '#' && $part[1][1] == 'I')
|
||||||
{
|
{
|
||||||
@ -500,6 +499,20 @@ class Wiki extends Controller
|
|||||||
$this->_handle_wiki_attachment ($login, $part[0], $part[1], $part[2]);
|
$this->_handle_wiki_attachment ($login, $part[0], $part[1], $part[2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (count($part) == 2)
|
||||||
|
{
|
||||||
|
//$target => wikiname:attachment
|
||||||
|
//$target => #I1:file
|
||||||
|
if ($part[0][0] == '#' && $part[0][1] == 'I')
|
||||||
|
{
|
||||||
|
$issueid = substr ($part[0],2);
|
||||||
|
$this->_handle_issue_file ($login, $projectid, $issueid, $part[1]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->_handle_wiki_attachment ($login, $projectid, $part[0], $part[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function attachment ($projectid = '', $wikiname = '', $filename = '')
|
function attachment ($projectid = '', $wikiname = '', $filename = '')
|
||||||
@ -538,6 +551,25 @@ class Wiki extends Controller
|
|||||||
}
|
}
|
||||||
if ($part[2] != '') $filename = $part[2];
|
if ($part[2] != '') $filename = $part[2];
|
||||||
}
|
}
|
||||||
|
else if (count($part) == 2)
|
||||||
|
{
|
||||||
|
//$target => wikiname:attachment
|
||||||
|
//$target => #I1:file
|
||||||
|
if ($part[0] != '')
|
||||||
|
{
|
||||||
|
if ($part[0][0] == '#' && $part[0][1] == 'I')
|
||||||
|
{
|
||||||
|
$issueid = substr ($part[0],2);
|
||||||
|
$wikiname = '';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$wikiname = $part[0];
|
||||||
|
$issueid = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($part[1] != '') $filename = $part[1];
|
||||||
|
}
|
||||||
|
|
||||||
if ($wikiname != '')
|
if ($wikiname != '')
|
||||||
$this->_handle_wiki_attachment ($login, $projectid, $wikiname, $filename);
|
$this->_handle_wiki_attachment ($login, $projectid, $wikiname, $filename);
|
||||||
|
@ -32,6 +32,10 @@ $file_count = count($wiki->attachments);
|
|||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var wiki_original_name = '<?php print addslashes($wiki->name); ?>';
|
||||||
|
var wiki_original_text = <?php print codepot_json_encode($wiki->text); ?>;
|
||||||
|
var previewing_text = false;
|
||||||
|
|
||||||
function show_alert (outputMsg, titleMsg)
|
function show_alert (outputMsg, titleMsg)
|
||||||
{
|
{
|
||||||
$('#wiki_edit_alert').html(outputMsg).dialog({
|
$('#wiki_edit_alert').html(outputMsg).dialog({
|
||||||
@ -48,8 +52,33 @@ function show_alert (outputMsg, titleMsg)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function show_in_progress_message (outputMsg, titleMsg)
|
||||||
|
{
|
||||||
|
if (titleMsg == null || outputMsg == null)
|
||||||
|
{
|
||||||
|
$('#wiki_edit_alert').dialog('close');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$('#wiki_edit_alert').html(outputMsg).dialog({
|
||||||
|
title: titleMsg,
|
||||||
|
resizable: false,
|
||||||
|
modal: true,
|
||||||
|
width: 'auto',
|
||||||
|
height: 'auto',
|
||||||
|
|
||||||
var previewing_text = false;
|
buttons: {
|
||||||
|
"OK": function () {
|
||||||
|
// do nothing, don't event close the dialog.
|
||||||
|
}
|
||||||
|
},
|
||||||
|
beforeClose: function() {
|
||||||
|
// if importing is in progress, prevent dialog closing
|
||||||
|
return !work_in_progress;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function resize_text_editor()
|
function resize_text_editor()
|
||||||
{
|
{
|
||||||
@ -76,7 +105,6 @@ function resize_text_editor()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function preview_text (input_text)
|
function preview_text (input_text)
|
||||||
{
|
{
|
||||||
if (previewing_text)
|
if (previewing_text)
|
||||||
@ -107,7 +135,7 @@ function preview_text (input_text)
|
|||||||
input_text,
|
input_text,
|
||||||
"wiki_edit_text_preview",
|
"wiki_edit_text_preview",
|
||||||
"<?php print site_url()?>/wiki/show/<?php print $project->id?>/",
|
"<?php print site_url()?>/wiki/show/<?php print $project->id?>/",
|
||||||
"<?php print site_url()?>/wiki/attachment0/<?php print $project->id?>/",
|
"<?php print site_url()?>/wiki/attachment/<?php print $project->id?>/" + codepot_string_to_hex(wiki_original_name) + "/",
|
||||||
true // raw
|
true // raw
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -117,7 +145,7 @@ function preview_text (input_text)
|
|||||||
input_text,
|
input_text,
|
||||||
"wiki_edit_text_preview",
|
"wiki_edit_text_preview",
|
||||||
"<?php print site_url()?>/wiki/show/<?php print $project->id?>/",
|
"<?php print site_url()?>/wiki/show/<?php print $project->id?>/",
|
||||||
"<?php print site_url()?>/wiki/attachment0/<?php print $project->id?>/",
|
"<?php print site_url()?>/wiki/attachment/<?php print $project->id?>/" + codepot_string_to_hex(wiki_original_name) + "/",
|
||||||
true // raw
|
true // raw
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -204,7 +232,6 @@ function kill_file (no)
|
|||||||
resize_text_editor ();
|
resize_text_editor ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function update_original_file_name_array ()
|
function update_original_file_name_array ()
|
||||||
{
|
{
|
||||||
$('#wiki_edit_add_file_list').empty();
|
$('#wiki_edit_add_file_list').empty();
|
||||||
@ -259,37 +286,6 @@ function update_original_file_name_array ()
|
|||||||
|
|
||||||
var wiki_text_editor = null;
|
var wiki_text_editor = null;
|
||||||
var work_in_progress = false;
|
var work_in_progress = false;
|
||||||
var wiki_original_name = '<?php print addslashes($wiki->name); ?>';
|
|
||||||
var wiki_original_text = <?php print codepot_json_encode($wiki->text); ?>;
|
|
||||||
|
|
||||||
function show_in_progress_message (outputMsg, titleMsg)
|
|
||||||
{
|
|
||||||
if (titleMsg == null || outputMsg == null)
|
|
||||||
{
|
|
||||||
$('#wiki_edit_alert').dialog('close');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$('#wiki_edit_alert').html(outputMsg).dialog({
|
|
||||||
title: titleMsg,
|
|
||||||
resizable: false,
|
|
||||||
modal: true,
|
|
||||||
width: 'auto',
|
|
||||||
height: 'auto',
|
|
||||||
|
|
||||||
buttons: {
|
|
||||||
"OK": function () {
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
beforeClose: function() {
|
|
||||||
// if importing is in progress, prevent dialog closing
|
|
||||||
return !work_in_progress;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function save_wiki (wiki_new_name, wiki_new_text)
|
function save_wiki (wiki_new_name, wiki_new_text)
|
||||||
{
|
{
|
||||||
|
@ -37,6 +37,8 @@ $file_count = count($wiki->attachments);
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
var wiki_original_name = '<?php print addslashes($wiki->name); ?>';
|
||||||
|
var wiki_original_text = <?php print codepot_json_encode($wiki->text); ?>;
|
||||||
|
|
||||||
function show_alert (outputMsg, titleMsg)
|
function show_alert (outputMsg, titleMsg)
|
||||||
{
|
{
|
||||||
@ -54,6 +56,34 @@ function show_alert (outputMsg, titleMsg)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function show_in_progress_message (outputMsg, titleMsg)
|
||||||
|
{
|
||||||
|
if (titleMsg == null || outputMsg == null)
|
||||||
|
{
|
||||||
|
$('#wiki_edit_alert').dialog('close');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$('#wiki_edit_alert').html(outputMsg).dialog({
|
||||||
|
title: titleMsg,
|
||||||
|
resizable: false,
|
||||||
|
modal: true,
|
||||||
|
width: 'auto',
|
||||||
|
height: 'auto',
|
||||||
|
|
||||||
|
buttons: {
|
||||||
|
"OK": function () {
|
||||||
|
// do nothing, don't event close the dialog.
|
||||||
|
}
|
||||||
|
},
|
||||||
|
beforeClose: function() {
|
||||||
|
// if importing is in progress, prevent dialog closing
|
||||||
|
return !work_in_progress;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function resize_editor()
|
function resize_editor()
|
||||||
{
|
{
|
||||||
var editor = $("#wiki_edit_text_editor");
|
var editor = $("#wiki_edit_text_editor");
|
||||||
@ -208,36 +238,6 @@ function update_original_file_name_array ()
|
|||||||
|
|
||||||
var wiki_text_editor = null;
|
var wiki_text_editor = null;
|
||||||
var work_in_progress = false;
|
var work_in_progress = false;
|
||||||
var wiki_original_name = '<?php print addslashes($wiki->name); ?>';
|
|
||||||
var wiki_original_text = <?php print codepot_json_encode($wiki->text); ?>;
|
|
||||||
|
|
||||||
function show_in_progress_message (outputMsg, titleMsg)
|
|
||||||
{
|
|
||||||
if (titleMsg == null || outputMsg == null)
|
|
||||||
{
|
|
||||||
$('#wiki_edit_alert').dialog('close');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$('#wiki_edit_alert').html(outputMsg).dialog({
|
|
||||||
title: titleMsg,
|
|
||||||
resizable: false,
|
|
||||||
modal: true,
|
|
||||||
width: 'auto',
|
|
||||||
height: 'auto',
|
|
||||||
|
|
||||||
buttons: {
|
|
||||||
"OK": function () {
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
},
|
|
||||||
beforeClose: function() {
|
|
||||||
// if importing is in progress, prevent dialog closing
|
|
||||||
return !work_in_progress;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function save_wiki (wiki_new_name, wiki_new_text)
|
function save_wiki (wiki_new_name, wiki_new_text)
|
||||||
{
|
{
|
||||||
|
@ -416,16 +416,15 @@ var Url = {
|
|||||||
var img = document.createElement('img');
|
var img = document.createElement('img');
|
||||||
|
|
||||||
if (r[1].match(rx.uriPrefix))
|
if (r[1].match(rx.uriPrefix))
|
||||||
{
|
{
|
||||||
img.src = r[1];
|
img.src = r[1];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var tmp = r[1].replace(/~(.)/g, '$1');
|
var tmp = r[1].replace(/~(.)/g, '$1');
|
||||||
tmp = Url.encode (tmp);
|
tmp = Url.encode (tmp);
|
||||||
img.src = options && options.imgFormat?
|
img.src = options && options.imgFormat? formatLink (tmp, options.imgFormat): tmp;
|
||||||
formatLink (tmp, options.imgFormat): tmp;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
img.alt = r[2] === undefined
|
img.alt = r[2] === undefined
|
||||||
? (options && options.defaultImageText ? options.defaultImageText : '')
|
? (options && options.defaultImageText ? options.defaultImageText : '')
|
||||||
@ -450,15 +449,15 @@ var Url = {
|
|||||||
build: function(node, r, options) {
|
build: function(node, r, options) {
|
||||||
var link = document.createElement('a');
|
var link = document.createElement('a');
|
||||||
|
|
||||||
var tmp = r[1].replace(/~(.)/g, '$1');
|
var tmp = r[1].replace(/~(.)/g, '$1');
|
||||||
tmp = Url.encode (tmp);
|
tmp = Url.encode (tmp);
|
||||||
|
|
||||||
/*link.href = options && options.linkFormat
|
/*link.href = options && options.linkFormat
|
||||||
? formatLink(r[1].replace(/~(.)/g, '$1'), options.linkFormat)
|
? formatLink(r[1].replace(/~(.)/g, '$1'), options.linkFormat)
|
||||||
: r[1].replace(/~(.)/g, '$1');*/
|
: r[1].replace(/~(.)/g, '$1');*/
|
||||||
|
|
||||||
link.href = options && options.linkFormat?
|
link.href = options && options.linkFormat?
|
||||||
formatLink (tmp, options.linkFormat): tmp;
|
formatLink (tmp, options.linkFormat): tmp;
|
||||||
|
|
||||||
this.apply(link, r[2], options);
|
this.apply(link, r[2], options);
|
||||||
|
|
||||||
|
@ -1125,8 +1125,6 @@ showdown.subParser('anchors', function (text, options, globals) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
url = showdown.helper.escapeCharacters(url, '*_', false);
|
|
||||||
|
|
||||||
// codepot
|
// codepot
|
||||||
var front2 = url.substr(0, 2);
|
var front2 = url.substr(0, 2);
|
||||||
var front3 = url.substr(0, 3);
|
var front3 = url.substr(0, 3);
|
||||||
@ -1140,6 +1138,8 @@ showdown.subParser('anchors', function (text, options, globals) {
|
|||||||
url = options.codepotLinkBase + codepot_string_to_hex(url);
|
url = options.codepotLinkBase + codepot_string_to_hex(url);
|
||||||
}
|
}
|
||||||
// end codepot
|
// end codepot
|
||||||
|
|
||||||
|
url = showdown.helper.escapeCharacters(url, '*_', false);
|
||||||
var result = '<a href="' + url + '"';
|
var result = '<a href="' + url + '"';
|
||||||
|
|
||||||
if (title !== '' && title !== null) {
|
if (title !== '' && title !== null) {
|
||||||
@ -1908,7 +1908,20 @@ showdown.subParser('images', function (text, options, globals) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
altText = altText.replace(/"/g, '"');
|
altText = altText.replace(/"/g, '"');
|
||||||
altText = showdown.helper.escapeCharacters(altText, '*_', false);
|
altText = showdown.helper.escapeCharacters(altText, '*_', false);
|
||||||
|
|
||||||
|
// codepot
|
||||||
|
if (url.match (/^[a-zA-Z]+:\/\//))
|
||||||
|
{
|
||||||
|
// begins with XXX://
|
||||||
|
// do nothing special
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
url = options.codepotImageBase + codepot_string_to_hex(url);
|
||||||
|
}
|
||||||
|
// end codepot
|
||||||
|
|
||||||
url = showdown.helper.escapeCharacters(url, '*_', false);
|
url = showdown.helper.escapeCharacters(url, '*_', false);
|
||||||
var result = '<img src="' + url + '" alt="' + altText + '"';
|
var result = '<img src="' + url + '" alt="' + altText + '"';
|
||||||
|
|
||||||
@ -2548,7 +2561,7 @@ function showdown_render_wiki_with_input_text (input_text, outputid, linkbase, i
|
|||||||
tasklists: true,
|
tasklists: true,
|
||||||
|
|
||||||
codepotLinkBase: linkbase,
|
codepotLinkBase: linkbase,
|
||||||
codepotImgBase: imgbase
|
codepotImageBase: imgbase
|
||||||
});
|
});
|
||||||
|
|
||||||
function decodeEntities(str)
|
function decodeEntities(str)
|
||||||
|
Loading…
Reference in New Issue
Block a user