use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
+use URI::Escape;
+
use Bugs::Bug;
use Bugs::Common;
return @archives;
}
+sub resubject {
+ my $m = shift;
+ my $s = $m->{subject}->text;
+ $s = "Re: $s" unless $s =~ m/^Re: /;
+ return "$s";
+}
+sub reply_link {
+ my $m = shift;
+ my $p = $m->{present};
+
+ my %hdrs = (
+ "In-Reply-To" => $m->{msgid},
+ );
+
+ my $to = join(",",$m->{from}->addresses);
+
+ my @cc;
+ push @cc, $m->{to}->addresses if $p;
+ push @cc, $m->{cc}->addresses if $p;
+
+ $hdrs{cc} = join(",",@cc) if @cc;
+
+ $hdrs{subject} =
+ $p ? resubject($m)
+ : "Re: Bug ".$bug->{id}.": " . $bug->{title};
+
+ my $args = join("&", map { $_."=".uri_escape($hdrs{$_}) } keys %hdrs);
+ return a({href=>"mailto:${to}?$args"}, "Reply to this message");
+}
+
foreach my $m ( sort msgcmp $bug->messages ) {
print comment("Message ".$m->{id}.": ". $m->{msgid}) . "\n";
@body = ( "Message not present in archive" );
}
my @archives = archive_list($m->{msgid});
- print p({-class=>"banner"},
- "[ Archives: " . join(", ", @archives) . " ]") . "\n";
print pre({-class=>"headers"},
join("\n", grep { $_ } (hdr("From", $m->{from}->stringify),
hdr("To", $m->{to}->stringify),
hdr("Subject", $m->{subject}->stringify),
hdr("Date", $m->{date}->stringify),
hdr("Message-ID", $m->{msgid})
- ))) . "\n";
+ ))
+ ) . "\n";
print pre({-class=>"body"},
htmlsanit(join("\n",@body))
) . "\n";
+ print p({-class=>"msgfooter"},
+ "[ ".reply_link($m)."; ".
+ "Archives: " . join(", ", @archives) .
+ " ]"
+ ) . "\n";
print hr . "\n";
}