From 658f2f569dfb06448d7f45c370e7a1b468dd36a2 Mon Sep 17 00:00:00 2001 From: "terry%mozilla.org" <> Date: Sat, 11 Mar 2000 02:01:18 +0000 Subject: Italicize the "Additional Comments From" stuff, so that you can tell the difference between new comments and people copying stuff in from old comments. --- bug_form.pl | 90 +--------------------------------------- globals.pl | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- long_list.cgi | 2 +- process_bug.cgi | 8 ++-- processmail | 4 +- 5 files changed, 134 insertions(+), 96 deletions(-) diff --git a/bug_form.pl b/bug_form.pl index bac65d14c..e74f4f4d8 100644 --- a/bug_form.pl +++ b/bug_form.pl @@ -40,89 +40,6 @@ sub bug_form_pl_sillyness { $zz = @::legal_severity; } -my %knownattachments; - -# This routine quoteUrls contains inspirations from the HTML::FromText CPAN -# module by Gareth Rees . It has been heavily hacked, -# all that is really recognizable from the original is bits of the regular -# expressions. - -sub quoteUrls { - my $text = shift; # Take a copy; don't modify in-place. - return $text unless $text; - - my $base = Param('urlbase'); - - my $protocol = join '|', - qw(afs cid ftp gopher http https mid news nntp prospero telnet wais); - - my %options = ( metachars => 1, @_ ); - - my $count = 0; - - # Now, quote any "#" characters so they won't confuse stuff later - $text =~ s/#/%#/g; - - # Next, find anything that looks like a URL or an email address and - # pull them out the the text, replacing them with a "#### - # marker, and writing them into an array. All this confusion is - # necessary so that we don't match on something we've already replaced, - # which can happen if you do multiple s///g operations. - - my @things; - while ($text =~ s%((mailto:)?([\w\.\-\+\=]+\@[\w\-]+(?:\.[\w\-]+)+)\b| - (\b((?:$protocol):[^ \t\n<>"]+[\w/])))%"##$count##"%exo) { - my $item = $&; - - $item = value_quote($item); - - if ($item !~ m/^$protocol:/o && $item !~ /^mailto:/) { - # We must have grabbed this one because it looks like an email - # address. - $item = qq{$item}; - } else { - $item = qq{$item}; - } - - $things[$count++] = $item; - } - while ($text =~ s/\bbug(\s|%\#)*(\d+)/"##$count##"/ei) { - my $item = $&; - my $num = $2; - $item = value_quote($item); # Not really necessary, since we know - # there's no special chars in it. - $item = qq{$item}; - $things[$count++] = $item; - } - while ($text =~ s/\*\*\* This bug has been marked as a duplicate of (\d+) \*\*\*/"##$count##"/ei) { - my $item = $&; - my $num = $1; - $item =~ s@\d+@$num@; - $things[$count++] = $item; - } - while ($text =~ s/Created an attachment \(id=(\d+)\)/"##$count##"/e) { - my $item = $&; - my $num = $1; - if (exists $knownattachments{$num}) { - $item = qq{$item}; - } - $things[$count++] = $item; - } - - $text = value_quote($text); - $text =~ s/\ /\n/g; - - # Stuff everything back from the array. - for (my $i=0 ; $i<$count ; $i++) { - $text =~ s/##$i##/$things[$i]/e; - } - - # And undo the quoting of "#" characters. - $text =~ s/%#/#/g; - - return $text; -} - my $loginok = quietly_check_login(); my $id = $::FORM{'id'}; @@ -208,7 +125,7 @@ print qq{
\n}; # print qq{\n}; # } -$bug{'long_desc'} = GetLongDescription($id); +$bug{'long_desc'} = GetLongDescriptionAsHTML($id); my $longdesclength = length($bug{'long_desc'}); GetVersionTable(); @@ -370,7 +287,6 @@ while (MoreSQLData()) { my $link = "showattachment.cgi?attach_id=$attachid"; $desc = value_quote($desc); print qq{$date$desc}; - $knownattachments{$attachid} = 1; } print "Create a new attachment (proposed patch, testcase, etc.)\n"; @@ -550,11 +466,9 @@ print "
Description: Opened: $bug{'creation_ts'}

-
 ";
-print quoteUrls($bug{'long_desc'}, email=>1, urls=>1);
+print $bug{'long_desc'};
 print "
-

\n"; # To add back option of editing the long description, insert after the above diff --git a/globals.pl b/globals.pl index 8e05fc0d2..954c55971 100644 --- a/globals.pl +++ b/globals.pl @@ -562,7 +562,88 @@ sub DBNameToIdAndCheck { exit(0); } -sub GetLongDescription { +# This routine quoteUrls contains inspirations from the HTML::FromText CPAN +# module by Gareth Rees . It has been heavily hacked, +# all that is really recognizable from the original is bits of the regular +# expressions. + +sub quoteUrls { + my ($knownattachments, $text) = (@_); + return $text unless $text; + + my $base = Param('urlbase'); + + my $protocol = join '|', + qw(afs cid ftp gopher http https mid news nntp prospero telnet wais); + + my %options = ( metachars => 1, @_ ); + + my $count = 0; + + # Now, quote any "#" characters so they won't confuse stuff later + $text =~ s/#/%#/g; + + # Next, find anything that looks like a URL or an email address and + # pull them out the the text, replacing them with a "#### + # marker, and writing them into an array. All this confusion is + # necessary so that we don't match on something we've already replaced, + # which can happen if you do multiple s///g operations. + + my @things; + while ($text =~ s%((mailto:)?([\w\.\-\+\=]+\@[\w\-]+(?:\.[\w\-]+)+)\b| + (\b((?:$protocol):[^ \t\n<>"]+[\w/])))%"##$count##"%exo) { + my $item = $&; + + $item = value_quote($item); + + if ($item !~ m/^$protocol:/o && $item !~ /^mailto:/) { + # We must have grabbed this one because it looks like an email + # address. + $item = qq{$item}; + } else { + $item = qq{$item}; + } + + $things[$count++] = $item; + } + while ($text =~ s/\bbug(\s|%\#)*(\d+)/"##$count##"/ei) { + my $item = $&; + my $num = $2; + $item = value_quote($item); # Not really necessary, since we know + # there's no special chars in it. + $item = qq{$item}; + $things[$count++] = $item; + } + while ($text =~ s/\*\*\* This bug has been marked as a duplicate of (\d+) \*\*\*/"##$count##"/ei) { + my $item = $&; + my $num = $1; + $item =~ s@\d+@$num@; + $things[$count++] = $item; + } + while ($text =~ s/Created an attachment \(id=(\d+)\)/"##$count##"/e) { + my $item = $&; + my $num = $1; + if ($knownattachments->{$num}) { + $item = qq{$item}; + } + $things[$count++] = $item; + } + + $text = value_quote($text); + $text =~ s/\ /\n/g; + + # Stuff everything back from the array. + for (my $i=0 ; $i<$count ; $i++) { + $text =~ s/##$i##/$things[$i]/e; + } + + # And undo the quoting of "#" characters. + $text =~ s/%#/#/g; + + return $text; +} + +sub GetLongDescriptionAsText { my ($id, $start, $end) = (@_); my $result = ""; my $count = 0; @@ -598,6 +679,49 @@ sub GetLongDescription { } +sub GetLongDescriptionAsHTML { + my ($id, $start, $end) = (@_); + my $result = ""; + my $count = 0; + my %knownattachments; + SendSQL("SELECT attach_id FROM attachments WHERE bug_id = $id"); + while (MoreSQLData()) { + $knownattachments{FetchOneColumn()} = 1; + } + + my ($query) = ("SELECT profiles.login_name, longdescs.bug_when, " . + " longdescs.thetext " . + "FROM longdescs, profiles " . + "WHERE profiles.userid = longdescs.who " . + " AND longdescs.bug_id = $id "); + + if ($start && $start =~ /[1-9]/) { + # If the start is all zeros, then don't do this (because we want to + # not emit a leading "Addition Comments" line in that case.) + $query .= "AND longdescs.bug_when > '$start'"; + $count = 1; + } + if ($end) { + $query .= "AND longdescs.bug_when <= '$end'"; + } + + $query .= "ORDER BY longdescs.bug_when"; + SendSQL($query); + while (MoreSQLData()) { + my ($who, $when, $text) = (FetchSQLData()); + if ($count) { + $result .= "

------- Additional Comments From " . + qq{$who } . + time2str("%Y-%m-%d %H:%M", str2time($when)) . + " -------
\n"; + } + $result .= "
" . quoteUrls(\%knownattachments, $text) . "
\n"; + $count++; + } + + return $result; +} + sub ShowCcList { my ($num) = (@_); my @ccids; diff --git a/long_list.cgi b/long_list.cgi index 9b9f47d87..e095c59ec 100755 --- a/long_list.cgi +++ b/long_list.cgi @@ -116,7 +116,7 @@ foreach my $bug (split(/:/, $::FORM{'buglist'})) { html_quote($status_whiteboard) . "\n"; } print "Description:\n\n"; - print "
" . html_quote(GetLongDescription($bug)) . "
\n"; + print GetLongDescriptionAsHTML($bug); print "
\n"; } } diff --git a/process_bug.cgi b/process_bug.cgi index 0e11f16cc..ac8f1a395 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -609,14 +609,14 @@ The changes made were:

"; DumpBugActivity($id, $delta_ts); - my $longdesc = GetLongDescription($id); + my $longdesc = GetLongDescriptionAsHTML($id); my $longchanged = 0; if (length($longdesc) > $::FORM{'longdesclength'}) { $longchanged = 1; - print "

Added text to the long description:

";
-            print html_quote(substr($longdesc, $::FORM{'longdesclength'}));
-            print "
\n"; + print "

Added text to the long description:

"; + print substr($longdesc, $::FORM{'longdesclength'}); + print "
\n"; } SendSQL("unlock tables"); print "You have the following choices:
    \n"; diff --git a/processmail b/processmail index 618c6dbc1..9b9baa4dd 100755 --- a/processmail +++ b/processmail @@ -199,7 +199,7 @@ sub GetBugText { $status_whiteboard = "StatusWhiteboard: $::bug{'status_whiteboard'}\n"; } - $::bug{'long_desc'} = GetLongDescription($id); + $::bug{'long_desc'} = GetLongDescriptionAsText($id); my @cclist; @cclist = split(/,/, ShowCcList($id)); @@ -455,7 +455,7 @@ sub NewProcessOneBug { } - my $newcomments = GetLongDescription($id, $start, $end); + my $newcomments = GetLongDescriptionAsText($id, $start, $end); my $count = 0; for my $person ($values{'assigned_to'}, $values{'reporter'}, -- cgit v1.2.3-24-g4f1b