diff options
-rw-r--r-- | Bugzilla/Template.pm | 18 | ||||
-rw-r--r-- | template/en/default/bug/comments.html.tmpl | 2 |
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 %] |