summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Template.pm18
-rw-r--r--template/en/default/bug/comments.html.tmpl2
2 files changed, 12 insertions, 8 deletions
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm
index dbf52a97b..3f7205ca7 100644
--- a/Bugzilla/Template.pm
+++ b/Bugzilla/Template.pm
@@ -158,7 +158,7 @@ sub get_format {
# If you want to modify this routine, read the comments carefully
sub quoteUrls {
- my ($text, $curr_bugid) = (@_);
+ my ($text, $curr_bugid, $already_wrapped) = (@_);
return $text unless $text;
# We use /g for speed, but uris can have other things inside them
@@ -173,6 +173,10 @@ sub quoteUrls {
my $chr1 = chr(1);
$text =~ s/\0/$chr1\0/g;
+ # If the comment is already wrapped, we should ignore newlines when
+ # looking for matching regexps. Else we should take them into account.
+ my $s = $already_wrapped ? qr/\s/ : qr/\h/;
+
# However, note that adding the title (for buglinks) can affect things
# In particular, attachment matches go before bug titles, so that titles
# with 'attachment 1' don't double match.
@@ -227,7 +231,7 @@ sub quoteUrls {
("\0\0" . ($count-1) . "\0\0")
~egmx;
- $text =~ s~\b(attachment\s*\#?\s*(\d+))
+ $text =~ s~\b(attachment$s*\#?$s*(\d+))
~($things[$count++] = get_attachment_link($2, $1)) &&
("\0\0" . ($count-1) . "\0\0")
~egmxi;
@@ -240,9 +244,9 @@ sub quoteUrls {
# Also, we can't use $bug_re?$comment_re? because that will match the
# empty string
my $bug_word = get_text('term', { term => 'bug' });
- my $bug_re = qr/\Q$bug_word\E\s*\#?\s*(\d+)/i;
- my $comment_re = qr/comment\s*\#?\s*(\d+)/i;
- $text =~ s~\b($bug_re(?:\s*,?\s*$comment_re)?|$comment_re)
+ my $bug_re = qr/\Q$bug_word\E$s*\#?$s*(\d+)/i;
+ my $comment_re = qr/comment$s*\#?$s*(\d+)/i;
+ $text =~ s~\b($bug_re(?:$s*,?$s*$comment_re)?|$comment_re)
~ # We have several choices. $1 here is the link, and $2-4 are set
# depending on which part matched
(defined($2) ? get_bug_link($2,$1,$3) :
@@ -541,10 +545,10 @@ sub create {
css_class_quote => \&Bugzilla::Util::css_class_quote ,
quoteUrls => [ sub {
- my ($context, $bug) = @_;
+ my ($context, $bug, $already_wrapped) = @_;
return sub {
my $text = shift;
- return quoteUrls($text, $bug);
+ return quoteUrls($text, $bug, $already_wrapped);
};
},
1
diff --git a/template/en/default/bug/comments.html.tmpl b/template/en/default/bug/comments.html.tmpl
index bf9326e8f..127f4a5fb 100644
--- a/template/en/default/bug/comments.html.tmpl
+++ b/template/en/default/bug/comments.html.tmpl
@@ -217,7 +217,7 @@
[% END %]
<pre class="bz_comment_text"
[% ' id="comment_text_' _ count _ '"' IF mode == "edit" %]>
- [%- wrapped_comment FILTER quoteUrls(bug.bug_id) -%]
+ [%- wrapped_comment FILTER quoteUrls(bug.bug_id, comment.already_wrapped) -%]
</pre>
</div>
[% END %]