use strict;
use POSIX qw(strftime nice);
-use Debbugs::Config;
+use Debbugs::Config qw(:globals :text :config);
use CGI::Simple;
-use Debbugs::CGI qw(cgi_parameters);
-require './common.pl';
+use Debbugs::CGI qw(:util :url :html);
+use Debbugs::Common qw(getmaintainers getparsedaddrs);
+use Debbugs::Bugs qw(count_bugs);
+use Debbugs::Status qw(:status);
+use Debbugs::Packages qw(getpkgsrc);
+use Debbugs::Text qw(:templates);
nice(5);
my $indexon = $param{indexon};
if ($param{indexon} !~ m/^(pkg|src|maint|submitter|tag)$/) {
- quitcgi("You have to choose something to index on");
+ quitcgi("You have to choose something to index on", '400 Bad Request');
}
my $repeatmerged = $param{repeatmerged} eq 'yes';
my $archive = $param{archive} eq "yes";
my $sortby = $param{sortby};
if ($sortby !~ m/^(alpha|count)$/) {
- quitcgi("Don't know how to sort like that");
+ quitcgi("Don't know how to sort like that", '400 Bad Request');
}
my $Archived = $archive ? " Archived" : "";
my %strings = ();
my $dtime = strftime "%a, %e %b %Y %T UTC", gmtime;
-my $tail_html = '';#$gHTMLTail;
-$tail_html = '';#$gHTMLTail;
-$tail_html =~ s/SUBSTITUTE_DTIME/$dtime/;
my %count;
my $tag;
my %sortkey = ();
if ($indexon eq "pkg") {
$tag = "package";
- %count = countbugs(sub {my %d=@_; return splitpackages($d{"pkg"})});
+ %count = count_bugs(function => sub {my %d=@_; return splitpackages($d{"pkg"})},
+ archive => $archive,
+ );
if (defined $param{first}) {
%count = map {
if (/^\Q$param{first}\E/) {
foreach my $pkg (keys %count) {
$sortkey{$pkg} = lc $pkg;
$htmldescrip{$pkg} = sprintf('<a href="%s">%s</a> (%s)',
- pkgurl($pkg),
- htmlsanit($pkg),
- htmlmaintlinks(sub { $_[0] == 1 ? 'maintainer: '
- : 'maintainers: ' },
- $maintainers{$pkg}));
+ package_links(package => $pkg, links_only=>1),
+ html_escape($pkg),
+ package_links(maint=>$maintainers{$pkg}//['']));
}
} elsif ($indexon eq "src") {
$tag = "source package";
}
} keys %count;
}
- %count = countbugs(sub {my %d=@_;
+ %count = count_bugs(function => sub {my %d=@_;
return map {
$pkgsrc->{$_} || $_
} splitpackages($d{"pkg"});
- });
+ },
+ archive => $archive,
+ );
$note = "";
foreach my $src (keys %count) {
$sortkey{$src} = lc $src;
$htmldescrip{$src} = sprintf('<a href="%s">%s</a> (%s)',
- srcurl($src),
- htmlsanit($src),
- htmlmaintlinks(sub { $_[0] == 1 ? 'maintainer: '
- : 'maintainers: ' },
- $maintainers{$src}));
+ package_links(src => $src, links_only=>1),
+ html_escape($src),
+ package_links(maint => $maintainers{$src}//['']));
}
} elsif ($indexon eq "maint") {
$tag = "maintainer";
my %email2maint = ();
- %count = countbugs(sub {my %d=@_;
+ %count = count_bugs(function => sub {my %d=@_;
return map {
my @me = getparsedaddrs($maintainers{$_});
foreach my $addr (@me) {
}
map { $_->address } @me;
} splitpackages($d{"pkg"});
- });
+ },
+ archive => $archive,
+ );
if (defined $param{first}) {
%count = map {
if (/^\Q$param{first}\E/) {
$note .= "different addresses.</p>\n";
foreach my $maint (keys %count) {
$sortkey{$maint} = lc $email2maint{$maint} || "(unknown)";
- $htmldescrip{$maint} = htmlmaintlinks('', $email2maint{$maint});
+ $htmldescrip{$maint} = package_links(maint => $email2maint{$maint}//['']);
}
} elsif ($indexon eq "submitter") {
$tag = "submitter";
my %fullname = ();
- %count = countbugs(sub {my %d=@_;
+ %count = count_bugs(function => sub {my %d=@_;
my @se = getparsedaddrs($d{"submitter"} || "");
foreach my $addr (@se) {
$fullname{$addr->address} = $addr->format
unless exists $fullname{$addr->address};
}
map { $_->address } @se;
- });
+ },
+ archive => $archive,
+ );
if (defined $param{first}) {
%count = map {
if (/^\Q$param{first}\E/) {
$sortkey{$sub} = lc $fullname{$sub};
$htmldescrip{$sub} = sprintf('<a href="%s">%s</a>',
submitterurl($sub),
- htmlsanit($fullname{$sub}));
+ html_escape($fullname{$sub}));
}
$note = "<p>Note that people may use different email accounts for\n";
$note .= "different bugs, so there may be other reports filed under\n";
$note .= "different addresses.</p>\n";
} elsif ($indexon eq "tag") {
$tag = "tag";
- %count = countbugs(sub {my %d=@_; return split ' ', $d{tags}; });
+ %count = count_bugs(function => sub {my %d=@_; return split ' ', $d{tags}; },
+ archive => $archive,
+ );
if (defined $param{first}) {
%count = map {
if (/^\Q$param{first}\E/) {
$sortkey{$keyword} = lc $keyword;
$htmldescrip{$keyword} = sprintf('<a href="%s">%s</a>',
tagurl($keyword),
- htmlsanit($keyword));
+ html_escape($keyword));
}
}
print "Content-Type: text/html\n\n";
-print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
-print "<HTML><HEAD>\n" .
- "<TITLE>$debbugs::gProject$Archived $debbugs::gBug reports by $tag</TITLE>\n" .
- "</HEAD>\n" .
- '<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#800080">' .
- "\n";
-print "<H1>" . "$debbugs::gProject$Archived $debbugs::gBug report logs by $tag" .
- "</H1>\n";
+print fill_in_template(template=>'cgi/pkgindex.tmpl',
+ variables => {count => \%count,
+ param => \%param,
+ result => $result,
+ html_escape => \&Debbugs::CGI::html_escape,
+ archived => $Archived,
+ note => $note,
+ tag => $tag,
+ },
+ hole_var => {'&strftime' => \&POSIX::strftime,
+ },
+ );
-print $note;
-print <<END;
-<form>
-<input type="hidden" name="skip" value="$param{skip}">
-<input type="hidden" name="max_results" value="$param{max_results}">
-<input type="hidden" name="indexon" value="$param{indexon}">
-<input type="hidden" name="repeatmerged" value="$param{repeatmerged}">
-<input type="hidden" name="archive" value="$param{archive}">
-<input type="hidden" name="sortby" value="$param{sortby}">
-END
-if (defined $param{first}) {
- print qq(<input type="hidden" name="first" value="$param{first}">\n);
-}
-else {
- print q(<p>);
- if ($param{skip} > 0) {
- print q(<input type="submit" name="prev" value="Prev">);
- }
- if (keys %count > ($param{skip} + $param{max_results})) {
- print q(<input type="submit" name="next" value="Next">);
- }
- print qq(</p>\n);
-}
-print $result;
-
-print "<hr>\n";
-print "<p>$tail_html";
-
-print "</body></html>\n";