Bug 1059684: markdown text should not be rendered within a <pre> tag
r=glob,a=glob git-svn-id: svn://10.0.0.236/trunk@265644 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
77ad1b019e
commit
00fc957fe6
@ -1 +1 @@
|
|||||||
9189
|
9190
|
||||||
@ -1 +1 @@
|
|||||||
2fbc1045f5b8e82d9a68328c35ba07d70d9d1877
|
1f5404213d4b93ef573e99112536ed5af6643770
|
||||||
@ -99,7 +99,7 @@ sub _RunSpanGamut {
|
|||||||
$text = $self->_EncodeAmpsAndAngles($text);
|
$text = $self->_EncodeAmpsAndAngles($text);
|
||||||
$text = $self->_DoItalicsAndBold($text);
|
$text = $self->_DoItalicsAndBold($text);
|
||||||
|
|
||||||
$text =~ s/ {2,}\n/ <br$self->{empty_element_suffix}\n/g;
|
$text =~ s/\n/<br$self->{empty_element_suffix}\n/g;
|
||||||
|
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
@ -323,13 +323,6 @@ sub _DoItalicsAndBold {
|
|||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Override this function to ignore 'wrap_in_p_tags' from
|
|
||||||
# the caller and to not generate <p> tags around the output.
|
|
||||||
sub _FormParagraphs {
|
|
||||||
my ($self, $text) = @_;
|
|
||||||
return $self->SUPER::_FormParagraphs($text, { wrap_in_p_tags => 0 });
|
|
||||||
}
|
|
||||||
|
|
||||||
sub _DoStrikethroughs {
|
sub _DoStrikethroughs {
|
||||||
my ($self, $text) = @_;
|
my ($self, $text) = @_;
|
||||||
|
|
||||||
|
|||||||
@ -632,6 +632,14 @@ sub is_bug_ignored {
|
|||||||
return (grep {$_->{'id'} == $bug_id} @{$self->bugs_ignored}) ? 1 : 0;
|
return (grep {$_->{'id'} == $bug_id} @{$self->bugs_ignored}) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub use_markdown {
|
||||||
|
my ($self, $comment) = @_;
|
||||||
|
return Bugzilla->feature('markdown')
|
||||||
|
&& $self->settings->{use_markdown}->{is_enabled}
|
||||||
|
&& $self->settings->{use_markdown}->{value} eq 'on'
|
||||||
|
&& (!defined $comment || $comment->is_markdown);
|
||||||
|
}
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
# Saved Recent Bug Lists #
|
# Saved Recent Bug Lists #
|
||||||
##########################
|
##########################
|
||||||
@ -2623,6 +2631,12 @@ C<string> The current summary of the bug.
|
|||||||
Returns true if the user does not want email notifications for the
|
Returns true if the user does not want email notifications for the
|
||||||
specified bug ID, else returns false.
|
specified bug ID, else returns false.
|
||||||
|
|
||||||
|
=item C<use_markdown>
|
||||||
|
|
||||||
|
Returns true if the user has set their preferences to use Markdown
|
||||||
|
for rendering comments. If an optional C<comment> object is passed
|
||||||
|
then it returns true if the comment has markdown enabled.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Saved Recent Bug Lists
|
=head2 Saved Recent Bug Lists
|
||||||
|
|||||||
@ -984,18 +984,32 @@ function initDirtyFieldTracking() {
|
|||||||
|
|
||||||
var last_comment_text = '';
|
var last_comment_text = '';
|
||||||
var last_markdown_cb_value = null;
|
var last_markdown_cb_value = null;
|
||||||
|
var comment_textarea_width = null;
|
||||||
|
var comment_textarea_height = null;
|
||||||
|
|
||||||
function show_comment_preview(bug_id) {
|
function refresh_markdown_preview (bug_id) {
|
||||||
|
if (!YAHOO.util.Dom.hasClass('comment_preview_tab', 'active_comment_tab'))
|
||||||
|
return;
|
||||||
|
show_comment_preview(bug_id, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function show_comment_preview(bug_id, refresh) {
|
||||||
var Dom = YAHOO.util.Dom;
|
var Dom = YAHOO.util.Dom;
|
||||||
var comment = document.getElementById('comment');
|
var comment = document.getElementById('comment');
|
||||||
var preview = document.getElementById('comment_preview');
|
var preview = document.getElementById('comment_preview');
|
||||||
var markdown_cb = document.getElementById('use_markdown');
|
var markdown_cb = document.getElementById('use_markdown');
|
||||||
|
|
||||||
if (!comment || !preview) return;
|
if (!comment || !preview) return;
|
||||||
if (Dom.hasClass('comment_preview_tab', 'active_comment_tab')) return;
|
if (Dom.hasClass('comment_preview_tab', 'active_comment_tab') && !refresh)
|
||||||
|
return;
|
||||||
|
|
||||||
preview.style.width = (comment.clientWidth - 4) + 'px';
|
if (!comment_textarea_width) {
|
||||||
preview.style.height = comment.offsetHeight + 'px';
|
comment_textarea_width = (comment.clientWidth - 4) + 'px';
|
||||||
|
comment_textarea_height = comment.offsetHeight + 'px';
|
||||||
|
}
|
||||||
|
|
||||||
|
preview.style.width = comment_textarea_width;
|
||||||
|
preview.style.height = comment_textarea_height;
|
||||||
|
|
||||||
var comment_tab = document.getElementById('comment_tab');
|
var comment_tab = document.getElementById('comment_tab');
|
||||||
Dom.addClass(comment, 'bz_default_hidden');
|
Dom.addClass(comment, 'bz_default_hidden');
|
||||||
@ -1029,6 +1043,12 @@ function show_comment_preview(bug_id) {
|
|||||||
document.getElementById('comment_preview_text').innerHTML = data.result.html;
|
document.getElementById('comment_preview_text').innerHTML = data.result.html;
|
||||||
Dom.addClass('comment_preview_loading', 'bz_default_hidden');
|
Dom.addClass('comment_preview_loading', 'bz_default_hidden');
|
||||||
Dom.removeClass('comment_preview_text', 'bz_default_hidden');
|
Dom.removeClass('comment_preview_text', 'bz_default_hidden');
|
||||||
|
if (markdown_cb.checked) {
|
||||||
|
Dom.removeClass('comment_preview_text', 'comment_preview_pre');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Dom.addClass('comment_preview_text', 'comment_preview_pre');
|
||||||
|
}
|
||||||
last_comment_text = comment.value;
|
last_comment_text = comment.value;
|
||||||
last_markdown_cb_value = markdown_cb.checked;
|
last_markdown_cb_value = markdown_cb.checked;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -233,8 +233,8 @@ if (should_set('keywords')) {
|
|||||||
$set_all_fields{keywords}->{$action} = $cgi->param('keywords');
|
$set_all_fields{keywords}->{$action} = $cgi->param('keywords');
|
||||||
}
|
}
|
||||||
if (should_set('comment')) {
|
if (should_set('comment')) {
|
||||||
my $is_markdown = ($user->settings->{use_markdown}->{is_enabled} &&
|
my $is_markdown = ($user->use_markdown
|
||||||
$cgi->param('use_markdown')) ? 1 : 0;
|
&& $cgi->param('use_markdown') eq '1') ? 1 : 0;
|
||||||
|
|
||||||
$set_all_fields{comment} = {
|
$set_all_fields{comment} = {
|
||||||
body => scalar $cgi->param('comment'),
|
body => scalar $cgi->param('comment'),
|
||||||
|
|||||||
@ -319,7 +319,7 @@ div#docslinks {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* tbody.file pre is for the Diff view of attachments. */
|
/* tbody.file pre is for the Diff view of attachments. */
|
||||||
.bz_comment_text, .uneditable_textarea, tbody.file pre {
|
pre.bz_comment_text, .uneditable_textarea, tbody.file pre {
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
}
|
}
|
||||||
@ -732,6 +732,10 @@ input.required, select.required, span.required_explanation {
|
|||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.comment_preview_pre {
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
#comment_preview_loading {
|
#comment_preview_loading {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,14 +32,15 @@
|
|||||||
<div id="comment_preview" class="bz_default_hidden bz_comment">
|
<div id="comment_preview" class="bz_default_hidden bz_comment">
|
||||||
<div id="comment_preview_loading" class="bz_default_hidden">Generating Preview...</div>
|
<div id="comment_preview_loading" class="bz_default_hidden">Generating Preview...</div>
|
||||||
<div id="comment_preview_error" class="bz_default_hidden"></div>
|
<div id="comment_preview_error" class="bz_default_hidden"></div>
|
||||||
<pre id="comment_preview_text" class="bz_comment_text"></pre>
|
<div id="comment_preview_text" class="bz_comment_text"></div>
|
||||||
</div>
|
</div>
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|
||||||
[% IF feature_enabled('markdown') AND user.settings.use_markdown.value == 'on' %]
|
[% IF user.use_markdown %]
|
||||||
<div id="comment_markdown">
|
<div id="comment_markdown">
|
||||||
<input type="checkbox" name="use_markdown" id="use_markdown" value="1"
|
<input type="checkbox" name="use_markdown"
|
||||||
[% "checked=\"checked\"" IF user.settings.use_markdown.value == 'on' %] >
|
id="use_markdown" value="1" checked="checked"
|
||||||
|
onchange="refresh_markdown_preview([% bug.id FILTER none %])">
|
||||||
<label id="use_markdown_label" for="use_markdown">Use Markdown for this [% terms.comment %]</label>
|
<label id="use_markdown_label" for="use_markdown">Use Markdown for this [% terms.comment %]</label>
|
||||||
(<a href="page.cgi?id=markdown.html" target="_blank" title="View Markdown Syntax Guide">help</a>)
|
(<a href="page.cgi?id=markdown.html" target="_blank" title="View Markdown Syntax Guide">help</a>)
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -267,12 +267,12 @@
|
|||||||
[%# Don't indent the <pre> block, since then the spaces are displayed in the
|
[%# Don't indent the <pre> block, since then the spaces are displayed in the
|
||||||
# generated HTML
|
# generated HTML
|
||||||
#%]
|
#%]
|
||||||
<pre class="bz_comment_text[% " collapsed" IF comment.collapsed %]"
|
<[% user.use_markdown(comment) ? "div" : "pre" %] class="bz_comment_text[% " collapsed" IF comment.collapsed %]"
|
||||||
[% IF mode == "edit" || comment.collapsed %]
|
[% IF mode == "edit" || comment.collapsed %]
|
||||||
id="comment_text_[% comment.count FILTER none %]"
|
id="comment_text_[% comment.count FILTER none %]"
|
||||||
[% END %]>
|
[% END %]>
|
||||||
[%- comment_text FILTER markdown(bug, comment) -%]
|
[%- comment_text FILTER markdown(bug, comment) -%]
|
||||||
</pre>
|
</[% user.use_markdown(comment) ? "div" : "pre" %]>
|
||||||
[% Hook.process('a_comment-end', 'bug/comments.html.tmpl') %]
|
[% Hook.process('a_comment-end', 'bug/comments.html.tmpl') %]
|
||||||
</div>
|
</div>
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user