]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 105865: When converting bug/attachment/comment numbers to links, quoteUrls()...
authorlpsolit%gmail.com <>
Tue, 21 Oct 2008 07:04:09 +0000 (07:04 +0000)
committerlpsolit%gmail.com <>
Tue, 21 Oct 2008 07:04:09 +0000 (07:04 +0000)
Bugzilla/Template.pm
template/en/default/bug/comments.html.tmpl

index dbf52a97b0c671bb796e3b55a5cf2191d9af8213..3f7205ca7410ccf5939380ab043d38deff33da21 100644 (file)
@@ -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
index bf9326e8fa034f2bba0501c093434569f0ae1be6..127f4a5fb7fa6b724901ad3c37351ae320adf449 100644 (file)
 [% 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 %]