-print "</table></form></div>\n";
-
-print "<hr>\n";
-print "<p>$tail_html";
-
-print "</body></html>\n";
-
-sub pkg_htmlindexentrystatus {
- my $s = shift;
- my %status = %{$s};
-
- my $result = "";
-
- my $showseverity;
- if ($status{severity} eq 'normal') {
- $showseverity = '';
- } elsif (isstrongseverity($status{severity})) {
- $showseverity = "Severity: <em class=\"severity\">$status{severity}</em>;\n";
- } else {
- $showseverity = "Severity: <em>$status{severity}</em>;\n";
- }
-
- $result .= pkg_htmlpackagelinks($status{"package"}, 1);
-
- my $showversions = '';
- if (@{$status{found_versions}}) {
- my @found = @{$status{found_versions}};
- $showversions .= join ', ', map {s{/}{ }; htmlsanit($_)} @found;
- }
- if (@{$status{fixed_versions}}) {
- $showversions .= '; ' if length $showversions;
- $showversions .= '<strong>fixed</strong>: ';
- my @fixed = @{$status{fixed_versions}};
- $showversions .= join ', ', map {s{/}{ }; htmlsanit($_)} @fixed;
- }
- $result .= ' (<a href="'.
- version_url($status{package},
- $status{found_versions},
- $status{fixed_versions},
- ).qq{">$showversions</a>)} if length $showversions;
- $result .= ";\n";
-
- $result .= $showseverity;
- $result .= pkg_htmladdresslinks("Reported by: ", \&submitterurl,
- $status{originator});
- $result .= ";\nOwned by: " . htmlsanit($status{owner})
- if length $status{owner};
- $result .= ";\nTags: <strong>"
- . htmlsanit(join(", ", sort(split(/\s+/, $status{tags}))))
- . "</strong>"
- if (length($status{tags}));
-
- $result .= buglinklist(";\nMerged with ", ", ",
- split(/ /,$status{mergedwith}));
- $result .= buglinklist(";\nBlocked by ", ", ",
- split(/ /,$status{blockedby}));
- $result .= buglinklist(";\nBlocks ", ", ",
- split(/ /,$status{blocks}));
-
- if (length($status{done})) {
- $result .= "<br><strong>Done:</strong> " . htmlsanit($status{done});
- my $days = bug_archiveable(bug => $status{id},
- status => \%status,
- days_until => 1,
- );
- if ($days >= 0 and defined $status->{location} and $status->{location} ne 'archive') {
- $result .= ";\n<strong>Will be archived" . ( $days == 0 ? " today" : $days == 1 ? " in $days day" : " in $days days" ) . "</strong>";
- }
- }
-
- unless (length($status{done})) {
- if (length($status{forwarded})) {
- $result .= ";\n<strong>Forwarded</strong> to "
- . join(', ',
- map {maybelink($_)}
- split /[,\s]+/,$status{forwarded}
- );
- }
- # Check the age of the logfile
- my ($days_last,$eng_last) = secs_to_english(time - $status{log_modified});
- my ($days,$eng) = secs_to_english(time - $status{date});
-
- if ($days >= 7) {
- my $font = "";
- my $efont = "";
- $font = "em" if ($days > 30);
- $font = "strong" if ($days > 60);
- $efont = "</$font>" if ($font);
- $font = "<$font>" if ($font);
-
- $result .= ";\n ${font}$eng old$efont";
- }
- if ($days_last > 7) {
- my $font = "";
- my $efont = "";
- $font = "em" if ($days_last > 30);
- $font = "strong" if ($days_last > 60);
- $efont = "</$font>" if ($font);
- $font = "<$font>" if ($font);
-
- $result .= ";\n ${font}Modified $eng_last ago$efont";
- }
- }
-
- $result .= ".";
-
- return $result;
-}
-
-
-sub pkg_htmlizebugs {
- $b = $_[0];
- my @bugs = @$b;
-
- my @status = ();
- my %count;
- my $header = '';
- my $footer = "<h2 class=\"outstanding\">Summary</h2>\n";
-
- my @dummy = ($gRemoveAge); #, @gSeverityList, @gSeverityDisplay); #, $gHTMLExpireNote);
-
- if (@bugs == 0) {
- return "<HR><H2>No reports found!</H2></HR>\n";
- }
-
- if ( $bug_rev ) {
- @bugs = sort {$b<=>$a} @bugs;
- } else {
- @bugs = sort {$a<=>$b} @bugs;
- }
- my %seenmerged;
-
- my %common = (
- 'show_list_header' => 1,
- 'show_list_footer' => 1,
- );
-
- my %section = ();
-
- foreach my $bug (@bugs) {
- my %status = %{getbugstatus($bug)};
- next unless %status;
- next if bugfilter($bug, %status);
-
- my $html = sprintf "<li><a href=\"%s\">#%d: %s</a>\n<br>",
- bugurl($bug), $bug, htmlsanit($status{subject});
- $html .= pkg_htmlindexentrystatus(\%status) . "\n";
-
- my $key = "";
- for my $i (0..$#prior) {
- my $v = get_bug_order_index($prior[$i], \%status);
- $count{"g_${i}_${v}"}++;
- $key .= "_$v";
- }
- $section{$key} .= $html;
- $count{"_$key"}++;
-
- push @status, [ $bug, \%status, $html ];
- }
-
- my $result = "";
- if ($ordering eq "raw") {
- $result .= "<UL class=\"bugs\">\n" . join("", map( { $_->[ 2 ] } @status ) ) . "</UL>\n";
- } else {
- $header .= "<ul>\n<div class=\"msgreceived\">\n";
- my @keys_in_order = ("");
- for my $o (@order) {
- push @keys_in_order, "X";
- while ((my $k = shift @keys_in_order) ne "X") {
- for my $k2 (@{$o}) {
- $k2+=0;
- push @keys_in_order, "${k}_${k2}";
- }
- }
- }
- for my $order (@keys_in_order) {
- next unless defined $section{$order};
- my @ttl = split /_/, $order; shift @ttl;
- my $title = $title[0]->[$ttl[0]] . " bugs";
- if ($#ttl > 0) {
- $title .= " -- ";
- $title .= join("; ", grep {($_ || "") ne ""}
- map { $title[$_]->[$ttl[$_]] } 1..$#ttl);
- }
- $title = htmlsanit($title);
-
- my $count = $count{"_$order"};
- my $bugs = $count == 1 ? "bug" : "bugs";
-
- $header .= "<li><a href=\"#$order\">$title</a> ($count $bugs)</li>\n";
- if ($common{show_list_header}) {
- my $count = $count{"_$order"};
- my $bugs = $count == 1 ? "bug" : "bugs";
- $result .= "<H2 CLASS=\"outstanding\"><a name=\"$order\"></a>$title ($count $bugs)</H2>\n";
- } else {
- $result .= "<H2 CLASS=\"outstanding\">$title</H2>\n";
- }
- $result .= "<div class=\"msgreceived\">\n<UL class=\"bugs\">\n";
- $result .= "\n\n\n\n";
- $result .= $section{$order};
- $result .= "\n\n\n\n";
- $result .= "</UL>\n</div>\n";
- }
- $header .= "</ul></div>\n";
-
- $footer .= "<ul>\n<div class=\"msgreceived\">";
- for my $i (0..$#prior) {
- my $local_result = '';
- foreach my $key ( @{$order[$i]} ) {
- my $count = $count{"g_${i}_$key"};
- next if !$count or !$title[$i]->[$key];
- $local_result .= "<li>$count $title[$i]->[$key]</li>\n";
- }
- if ( $local_result ) {
- $footer .= "<li>$names[$i]<ul>\n$local_result</ul></li>\n";
- }
- }
- $footer .= "</div></ul>\n";
- }
-
- $result = $header . $result if ( $common{show_list_header} );
- $result .= $footer if ( $common{show_list_footer} );
- return $result;
-}
-
-sub pkg_htmlpackagelinks {
- my $pkgs = shift;
- return unless defined $pkgs and $pkgs ne '';
- my $strong = shift;
- my @pkglist = splitpackages($pkgs);
-
- $strong = 0;
- my $openstrong = $strong ? '<strong>' : '';
- my $closestrong = $strong ? '</strong>' : '';
-
- return 'Package' . (@pkglist > 1 ? 's' : '') . ': ' .
- join(', ',
- map {
- '<a class="submitter" href="' . pkgurl($_) . '">' .
- $openstrong . htmlsanit($_) . $closestrong . '</a>'
- } @pkglist
- );
-}
-
-sub pkg_htmladdresslinks {
- htmlize_addresslinks(@_,'submitter');
-}
-
-sub pkg_javascript {
- return <<EOF ;
-<script type="text/javascript">
-<!--
-function pagemain() {
- toggle(1);
-// toggle(2);
- enable(1);
-}
-
-function setCookie(name, value, expires, path, domain, secure) {
- var curCookie = name + "=" + escape(value) +
- ((expires) ? "; expires=" + expires.toGMTString() : "") +
- ((path) ? "; path=" + path : "") +
- ((domain) ? "; domain=" + domain : "") +
- ((secure) ? "; secure" : "");
- document.cookie = curCookie;
-}
-
-function save_cat_cookies() {
- var cat = document.categories.categorisation.value;
- var exp = new Date();
- exp.setTime(exp.getTime() + 10 * 365 * 24 * 60 * 60 * 1000);
- var oldexp = new Date();
- oldexp.setTime(oldexp.getTime() - 1 * 365 * 24 * 60 * 60 * 1000);
- var lev;
- var done = 0;
-
- var u = document.getElementById("users");
- if (u != null) { u = u.value; }
- if (u == "") { u = null; }
- if (u != null) {
- setCookie("cat" + cat + "_users", u, exp, "/");
- } else {
- setCookie("cat" + cat + "_users", "", oldexp, "/");
- }
-
- var bits = new Array("nam", "pri", "ttl", "ord");
- for (var i = 0; i < 4; i++) {
- for (var j = 0; j < bits.length; j++) {
- var e = document.getElementById(bits[j] + i);
- if (e) e = e.value;
- if (e == null) { e = ""; }
- if (j == 0 && e == "") { done = 1; }
- if (done || e == "") {
- setCookie("cat" + cat + "_" + bits[j] + i, "", oldexp, "/");
- } else {
- setCookie("cat" + cat + "_" + bits[j] + i, e, exp, "/");
- }
- }
- }