]> git.deb.at Git - deb/packages.git/blobdiff - lib/Packages/HTML.pm
Some fixes to archive handling
[deb/packages.git] / lib / Packages / HTML.pm
index fc37c9466f9f7e44281f16938c052038bede4e53..4aeb675cae42f879356f0bdea0541d75543a8b65 100644 (file)
@@ -238,6 +238,19 @@ sub dep_item {
     return "$link$name$post_link$info$desc";
 } # end dep_item
 
+sub provides_string {
+    my ($path, $entry,$also) = @_;
+    my @provided_by = split /\s/, $entry;
+    my $short_desc = $also ? _g("also a virtual package provided by ")
+       : _g("virtual package provided by ");
+    if (@provided_by < 10) {
+       $short_desc .= join( ', ',map { "<a href=\"$path/$_\">$_</a>" } @provided_by);
+    } else {
+       $short_desc .= sprintf( _g("%s packages"), scalar(@provided_by));
+    }
+    return $short_desc;
+}
+
 sub print_deps {
     my ( $packages, $opts, $pkg, $relations, $type) = @_;
     my %dep_type = ('depends' => 'dep', 'recommends' => 'rec', 
@@ -246,7 +259,6 @@ sub print_deps {
     my $res = "<ul class=\"ul$dep_type{$type}\">\n";
     my $first = 1;
     my $suite = $opts->{suite}[0];
-    my $one_archive = @{$opts->{archive}} > 1 ? '': $opts->{archive}[0];
 
 #    use Data::Dumper;
 #    debug( "print_deps called:\n".Dumper( $pkg, $relations, \$type ), 3 ) if DEBUG;
@@ -289,25 +301,22 @@ sub print_deps {
            my $arch = $entry->[3];
            my $archive = $entry->[1];
            if ( $short_desc ) {
-               my $path = $one_archive eq $archive ? "$suite/$archive" :
-                   $suite;
+               my $path = $suite;
                if ( $is_old_pkgs ) {
                    push @res_pkgs, dep_item( "$ROOT/$path/$p_name",
                                              $p_name, "$pkg_version$arch_str" );
-               } elsif (defined $entry->[0]) {
-# FIXME: can be both virtual package (defined $entry->[0]) and real one
-                   my @provided_by = split /\s/, $entry->[0];
-                   $short_desc = "virtual package provided by ";
-                   if (@provided_by < 10) {
-                       $short_desc .= join( ', ',map { "<a href=\"$ROOT/$path/$_\">$_</a>" } @provided_by);
-                   } else {
-                       $short_desc .= scalar(@provided_by)." packages";
-                   }
-                   push @res_pkgs, dep_item( "$ROOT/$path/$p_name",
-                                             $p_name, "$pkg_version$arch_str", $short_desc );
-               } else {
+               } elsif (defined $entry->[1]) {
                    $entries{$p_name} ||= $entry;
                    $short_desc = encode_entities( $short_desc, "<>&\"" );
+                   $short_desc .= "<br>".provides_string( "$ROOT/$path",
+                                                          $entry->[0],
+                                                          1 )
+                       if defined $entry->[0];
+                   push @res_pkgs, dep_item( "$ROOT/$path/$p_name",
+                                             $p_name, "$pkg_version$arch_str", $short_desc );
+               } elsif (defined $entry->[0]) {
+                   $short_desc = provides_string( "$ROOT/$path",
+                                                  $entry->[0] );
                    push @res_pkgs, dep_item( "$ROOT/$path/$p_name",
                                              $p_name, "$pkg_version$arch_str", $short_desc );
                }