Italicize the "Additional Comments From" stuff, so that you can tell

the difference between new comments and people copying stuff in from
old comments.
This commit is contained in:
terry%mozilla.org 2000-03-10 18:01:32 +00:00
Родитель 4143031dbc
Коммит fe49673050
5 изменённых файлов: 134 добавлений и 96 удалений

Просмотреть файл

@ -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 <garethr@cre.canon.co.uk>. 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 "##<digits>##
# 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{<A HREF="mailto:$item">$item</A>};
} else {
$item = qq{<A HREF="$item">$item</A>};
}
$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{<A HREF="show_bug.cgi?id=$num">$item</A>};
$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+@<A HREF="show_bug.cgi?id=$num">$num</A>@;
$things[$count++] = $item;
}
while ($text =~ s/Created an attachment \(id=(\d+)\)/"##$count##"/e) {
my $item = $&;
my $num = $1;
if (exists $knownattachments{$num}) {
$item = qq{<A HREF="showattachment.cgi?attach_id=$num">$item</A>};
}
$things[$count++] = $item;
}
$text = value_quote($text);
$text =~ s/\&#010;/\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{<FORM NAME="changeform" METHOD="POST" ACTION="process_bug.cgi">\n};
# print qq{<INPUT TYPE="HIDDEN" NAME="orig-$i" VALUE="$q">\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{<td><a href="$link">$date</a></td><td colspan=4>$desc</td></tr><tr><td></td>};
$knownattachments{$attachid} = 1;
}
print "<td colspan=6><a href=\"createattachment.cgi?id=$id\">Create a new attachment</a> (proposed patch, testcase, etc.)</td></tr></table>\n";
@ -550,11 +466,9 @@ print "
<table><tr><td align=left><B>Description:</B></td>
<td align=right width=100%>Opened: $bug{'creation_ts'}</td></tr></table>
<HR>
<PRE>
";
print quoteUrls($bug{'long_desc'}, email=>1, urls=>1);
print $bug{'long_desc'};
print "
</PRE>
<HR>\n";
# To add back option of editing the long description, insert after the above

Просмотреть файл

@ -562,7 +562,88 @@ sub DBNameToIdAndCheck {
exit(0);
}
sub GetLongDescription {
# This routine quoteUrls contains inspirations from the HTML::FromText CPAN
# module by Gareth Rees <garethr@cre.canon.co.uk>. 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 "##<digits>##
# 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{<A HREF="mailto:$item">$item</A>};
} else {
$item = qq{<A HREF="$item">$item</A>};
}
$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{<A HREF="show_bug.cgi?id=$num">$item</A>};
$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+@<A HREF="show_bug.cgi?id=$num">$num</A>@;
$things[$count++] = $item;
}
while ($text =~ s/Created an attachment \(id=(\d+)\)/"##$count##"/e) {
my $item = $&;
my $num = $1;
if ($knownattachments->{$num}) {
$item = qq{<A HREF="showattachment.cgi?attach_id=$num">$item</A>};
}
$things[$count++] = $item;
}
$text = value_quote($text);
$text =~ s/\&#010;/\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 .= "<BR><BR><I>------- Additional Comments From " .
qq{<A HREF="$who">$who</A> } .
time2str("%Y-%m-%d %H:%M", str2time($when)) .
" -------</I><BR>\n";
}
$result .= "<PRE>" . quoteUrls(\%knownattachments, $text) . "</PRE>\n";
$count++;
}
return $result;
}
sub ShowCcList {
my ($num) = (@_);
my @ccids;

Просмотреть файл

@ -116,7 +116,7 @@ foreach my $bug (split(/:/, $::FORM{'buglist'})) {
html_quote($status_whiteboard) . "\n";
}
print "<TR><TD><B>Description:</B>\n</TABLE>\n";
print "<PRE>" . html_quote(GetLongDescription($bug)) . "</PRE>\n";
print GetLongDescriptionAsHTML($bug);
print "<HR>\n";
}
}

Просмотреть файл

@ -609,14 +609,14 @@ The changes made were:
<p>
";
DumpBugActivity($id, $delta_ts);
my $longdesc = GetLongDescription($id);
my $longdesc = GetLongDescriptionAsHTML($id);
my $longchanged = 0;
if (length($longdesc) > $::FORM{'longdesclength'}) {
$longchanged = 1;
print "<P>Added text to the long description:<blockquote><pre>";
print html_quote(substr($longdesc, $::FORM{'longdesclength'}));
print "</pre></blockquote>\n";
print "<P>Added text to the long description:<blockquote>";
print substr($longdesc, $::FORM{'longdesclength'});
print "</blockquote>\n";
}
SendSQL("unlock tables");
print "You have the following choices: <ul>\n";

Просмотреть файл

@ -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'},