]> git.donarmstrong.com Git - debbugs.git/blobdiff - cgi/pkgreport.cgi
* Document the various severity settings
[debbugs.git] / cgi / pkgreport.cgi
index 37f4196dbaab5977f3bcf2170d564e532e72bdff..8736e8c0570a1305c91193d167adf9ba857104d5 100755 (executable)
@@ -304,14 +304,27 @@ while (my ($key,$value) = splice @search_key_order, 0, 2) {
      for my $entry (make_list($param{$key})) {
          my $extra = '';
          if (exists $param{dist} and ($key eq 'package' or $key eq 'src')) {
-              my @versions = get_versions(package => $entry,
+              my %versions = get_versions(package => $entry,
                                           (exists $param{dist}?(dist => $param{dist}):()),
-                                          (exists $param{arch}?(arch => $param{arch}):()),
+                                          (exists $param{arch}?(arch => $param{arch}):(arch => $config{default_architectures})),
                                           ($key eq 'src'?(arch => q(source)):()),
+                                          no_source_arch => 1,
+                                          return_archs => 1,
                                          );
-              my $verdesc = join(', ',@versions);
-              $verdesc = 'version'.(@versions>1?'s ':' ').$verdesc;
-              $extra= " ($verdesc)" if @versions;
+              my $verdesc;
+              if (keys %versions > 1) {
+                   $verdesc = 'versions '. join(', ',
+                                   map { $_ .' ['.join(', ',
+                                                   sort @{$versions{$_}}
+                                                  ).']';
+                                  } keys %versions);
+              }
+              else {
+                   $verdesc = 'version '.join(', ',
+                                              keys %versions
+                                             );
+              }
+              $extra= " ($verdesc)" if keys %versions;
          }
          push @entries, $entry.$extra;
      }
@@ -398,9 +411,17 @@ for my $package (make_list($param{src}||[])) {
 
 sub output_package_info{
     my ($srcorbin,$package) = @_;
+
+    my %pkgsrc = %{getpkgsrc()};
+    my $srcforpkg = $package;
+    if ($srcorbin eq 'binary') {
+        $srcforpkg = $pkgsrc{$package};
+        defined $srcforpkg or $srcforpkg = $package;
+    }
+
     my $showpkg = html_escape($package);
     my $maintainers = getmaintainers();
-    my $maint = $maintainers->{$package};
+    my $maint = $maintainers->{$srcforpkg};
     if (defined $maint) {
         print '<p>';
         print htmlize_maintlinks(sub { $_[0] == 1 ? "Maintainer for $showpkg is "
@@ -411,12 +432,6 @@ sub output_package_info{
     } else {
         print "<p>No maintainer for $showpkg. Please do not report new bugs against this package.</p>\n";
     }
-    my %pkgsrc = %{getpkgsrc()};
-    my $srcforpkg = $package;
-    if ($srcorbin eq 'binary') {
-        $srcforpkg = $pkgsrc{$package};
-        defined $srcforpkg or $srcforpkg = $package;
-    }
     my @pkgs = getsrcpkgs($srcforpkg);
     @pkgs = grep( !/^\Q$package\E$/, @pkgs );
     if ( @pkgs ) {
@@ -442,7 +457,7 @@ sub output_package_info{
         }
         if (defined $gSubscriptionDomain) {
              my $ptslink = $package ? $srcforpkg : $src;
-             push @references, "to the <a href=\"http://$gSubscriptionDomain/$ptslink\">Package Tracking System</a>";
+             push @references, q(to the <a href="http://).html_escape("$gSubscriptionDomain/$ptslink").q(">Package Tracking System</a>);
         }
         # Only output this if the source listing is non-trivial.
         if ($srcorbin eq 'binary' and $srcforpkg) {
@@ -520,12 +535,12 @@ print "    <td><input id=\"b_1_2\" name=vt value=bysuite type=radio onchange=\"e
 
 if (defined $pkg) {
     my $v = html_escape($version) || "";
-    my $pkgsane = html_escape($pkg);
+    my $pkgsane = html_escape($pkg->[0]);
     print "<tr><td></td>";
     print "    <td><input id=\"b_1_3\" name=vt value=bypkg type=radio onchange=\"enable(1);\" $checked_ver>$pkgsane version <input id=\"b_1_3_1\" name=version value=\"$v\"></td></tr>\n";
 } elsif (defined $src) {
     my $v = html_escape($version) || "";
-    my $srcsane = html_escape($src);
+    my $srcsane = html_escape($src->[0]);
     print "<tr><td></td>";
     print "    <td><input name=vt value=bysrc type=radio onchange=\"enable(1);\" $checked_ver>$srcsane version <input id=\"b_1_3_1\" name=version value=\"$v\"></td></tr>\n";
 }
@@ -556,7 +571,6 @@ print <<EOF;
 
 <tr><td>&nbsp;</td></tr>
 
-</td></tr>
 <tr><td>Merged bugs should be</td><td>
 <select name=repeatmerged>
 <option value=yes$sel_rmy>displayed separately</option>
@@ -640,16 +654,15 @@ sub pkg_htmlindexentrystatus {
         $showversions .= join ', ', map {s{/}{ }; html_escape($_)} @fixed;
     }
     $result .= ' (<a href="'.
-        version_url($status{package},
-                    $status{found_versions},
-                    $status{fixed_versions},
+        version_url(package => $status{package},
+                    found   => $status{found_versions},
+                    fixed   => $status{fixed_versions},
                    ).qq{">$showversions</a>)} if length $showversions;
     $result .= ";\n";
 
     $result .= $showseverity;
-    $result .= pkg_htmladdresslinks("Reported by: ", \&submitterurl,
-                                $status{originator});
-    $result .= ";\nOwned by: " . html_escape($status{owner})
+    $result .= "Reported by: ".package_links(submitter=>$status{originator});
+    $result .= ";\nOwned by: " . package_links(owner => $status{owner})
                if length $status{owner};
     $result .= ";\nTags: <strong>" 
                  . html_escape(join(", ", sort(split(/\s+/, $status{tags}))))
@@ -682,7 +695,7 @@ sub pkg_htmlindexentrystatus {
             $result .= ";\n<strong>Forwarded</strong> to "
                        . join(', ',
                              map {maybelink($_)}
-                             split /[,\s]+/,$status{forwarded}
+                             split /\,\s+/,$status{forwarded}
                             );
         }
        # Check the age of the logfile
@@ -751,13 +764,19 @@ sub pkg_htmlizebugs {
     for my $include (make_list($param{include})) {
         next unless defined $include;
         my ($key,$value) = split /\s*:\s*/,$include,2;
-        next unless defined $value;
+        unless (defined $value) {
+            $key = 'tags';
+            $value = $include;
+        }
         push @{$include{$key}}, split /\s*,\s*/, $value;
     }
     for my $exclude (make_list($param{exclude})) {
         next unless defined $exclude;
         my ($key,$value) = split /\s*:\s*/,$exclude,2;
-        next unless defined $value;
+        unless (defined $value) {
+            $key = 'tags';
+            $value = $exclude;
+        }
         push @{$exclude{$key}}, split /\s*,\s*/, $value;
     }
 
@@ -766,7 +785,7 @@ sub pkg_htmlizebugs {
                                      (exists $param{dist}?(dist => $param{dist}):()),
                                      bugusertags => \%bugusertags,
                                      (exists $param{version}?(version => $param{version}):()),
-                                     (exists $param{arch}?(arch => $param{arch}):()),
+                                     (exists $param{arch}?(arch => $param{arch}):(arch => $config{default_architectures})),
                                     )};
         next unless %status;
         next if bug_filter(bug => $bug,
@@ -804,7 +823,7 @@ sub pkg_htmlizebugs {
     if ($ordering eq "raw") {
         $result .= "<UL class=\"bugs\">\n" . join("", map( { $_->[ 2 ] } @status ) ) . "</UL>\n";
     } else {
-        $header .= "<ul>\n<div class=\"msgreceived\">\n";
+        $header .= "<div class=\"msgreceived\">\n<ul>\n";
        my @keys_in_order = ("");
        for my $o (@order) {
            push @keys_in_order, "X";
@@ -845,7 +864,7 @@ sub pkg_htmlizebugs {
         } 
         $header .= "</ul></div>\n";
 
-        $footer .= "<ul>\n<div class=\"msgreceived\">";
+        $footer .= "<div class=\"msgreceived\">\n<ul>\n";
         for my $i (0..$#prior) {
             my $local_result = '';
             foreach my $key ( @{$order[$i]} ) {
@@ -857,7 +876,7 @@ sub pkg_htmlizebugs {
                 $footer .= "<li>$names[$i]<ul>\n$local_result</ul></li>\n";
             }
         }
-        $footer .= "</div></ul>\n";
+        $footer .= "</ul>\n</div>\n";
     }
 
     $result = $header . $result if ( $common{show_list_header} );
@@ -884,10 +903,6 @@ sub pkg_htmlpackagelinks {
            );
 }
 
-sub pkg_htmladdresslinks {
-     htmlize_addresslinks(@_,'submitter');
-}
-
 sub pkg_javascript {
     return <<EOF ;
 <script type="text/javascript">
@@ -1010,7 +1025,7 @@ sub pkg_htmlselectarch {
 sub myurl {
      return html_escape(pkg_url(map {exists $param{$_}?($_,$param{$_}):()}
                             qw(archive repeatmerged mindays maxdays),
-                            qw(version dist arch pkg src tag maint submitter)
+                            qw(version dist arch package src tag maint submitter)
                            )
                    );
 }