]> git.deb.at Git - deb/packages.git/blobdiff - lib/Packages/DoShow.pm
Fix some minor issues
[deb/packages.git] / lib / Packages / DoShow.pm
index 3070f1b85f7f0de6feee0c1559f4304c5d36c516..e3e1945b6b7cc7123e4705a47f681e79f16106f1 100644 (file)
@@ -1,6 +1,7 @@
 package Packages::DoShow;
 
 use strict;
+use warnings;
 
 use POSIX;
 use URI::Escape;
@@ -75,19 +76,13 @@ sub do_show {
            foreach (@results, @non_results) {
                my $a = $_->[1];
                my $s = $_->[2];
-               if ($a =~ /^(?:us|security|non-US)$/o) {
-                   $all_suites{$s}++;
-               } else {
-                   $all_suites{"$s/$a"}++;
-               }
+               $all_suites{$s}++;
            }
            foreach (suites_sort(keys %all_suites)) {
-               if (("$suite/$archive" eq $_)
-                   || (!$all_suites{"$suite/$archive"} && ($suite eq $_))) {
+               if ($suite eq $_) {
                    $$menu .= "[ <strong>$_</strong> ] ";
                } else {
-                   $$menu .=
-                       "[ <a href=\"$ROOT/$_/$encodedpkg\">$_</a> ] ";
+                   $$menu .= "[ <a href=\"".make_url($encodedpkg,'',{suite=>$suite})."\">$_</a> ] ";
                }
            }
            $$menu .= '<br>';
@@ -97,7 +92,7 @@ sub do_show {
            } else {
                unless ($opts->{source}) {
                    for my $entry (@results) {
-                       debug( join(":", @$entry), 1 );
+                       debug( join(":", @$entry), 1 ) if DEBUG;
                        my (undef, $archive, undef, $arch, $section, $subsection,
                            $priority, $version, $provided_by) = @$entry;
                        
@@ -106,7 +101,8 @@ sub do_show {
                            $data{package} = $pkg;
                            $data{architecture} = $arch;
                            $data{version} = $version;
-                           $page->merge_package(\%data) or debug( "Merging $pkg $arch $version FAILED", 2 );
+                           $page->merge_package(\%data)
+                               or debug( "Merging $pkg $arch $version FAILED", 2 ) if DEBUG;
                        } else {
                            $page->add_provided_by([split /\s+/, $provided_by]);
                        }
@@ -116,22 +112,22 @@ sub do_show {
                        $version = $page->{newest};
                        my $source = $page->get_newest( 'source' );
                        $archive = $page->get_newest( 'archive' );
-                       debug( "find source package: source=$source", 1);
+                       debug( "find source package: source=$source", 1) if DEBUG;
                        my $src_data = $sources_all{"$archive $suite $source"};
                        $page->add_src_data( $source, $src_data )
                            if $src_data;
 
                        my $st1 = new Benchmark;
                        my $std = timediff($st1, $st0);
-                       debug( "Data search and merging took ".timestr($std) );
+                       debug( "Data search and merging took ".timestr($std) ) if DEBUG;
 
-                       my ($v_str, $v_str_arch, $v_str_arr) = $page->get_version_string();
                        my $did = $page->get_newest( 'description' );
                        $section = $page->get_newest( 'section' );
                        $subsection = $page->get_newest( 'subsection' );
                        my $filenames = $page->get_arch_field( 'filename' );
                        my $file_md5sums = $page->get_arch_field( 'md5sum' );
                        my $archives = $page->get_arch_field( 'archive' );
+                       my $versions = $page->get_arch_field( 'version' );
                        my $sizes_inst = $page->get_arch_field( 'installed-size' );
                        my $sizes_deb = $page->get_arch_field( 'size' );
                        my @archs = sort $page->get_architectures;
@@ -148,19 +144,24 @@ sub do_show {
                        $long_desc =~ s/\n /\n/sgo;
                        $long_desc =~ s/\n.\n/\n<p>\n/go;
                        $long_desc =~ s/(((\n|\A) [^\n]*)+)/\n<pre>$1\n<\/pre>/sgo;
-#          $long_desc = conv_desc( $lang, $long_desc );
-#          $short_desc = conv_desc( $lang, $short_desc );
-
-                       $$menu .= simple_menu( [ _g( "Distribution:" ),
-                                                _g( "Overview over this suite" ),
-                                                "$ROOT/$suite/",
-                                                $suite ],
-                                              [ _g( "Section:" ),
-                                                _g( "All packages in this section" ),
-                                                "$ROOT/$suite/$subsection/",
-                                                $subsection ],
-                                              );
-
+                       my @menu = ( [ _g( "Distribution:" ),
+                                      _g( "Overview over this suite" ),
+                                      make_url("/",''),
+                                      $suite ],
+                                    [ _g( "Section:" ),
+                                      _g( "All packages in this section" ),
+                                      make_url("$subsection/",''),
+                                      $subsection ], );
+                       my $source = $page->get_src('package');
+                       push @menu, [ _g( "Source:" ),
+                                     _g( "Source package building this package" ),
+                                     make_url($source,'',{source=>'source'}),
+                                     $source ] if $source;
+                       $$menu .= simple_menu( @menu );
+
+                       my $v_str = $version;
+                       my $multiple_versions = grep { $_ ne $version } values %$versions;
+                       $v_str .= _g(" and others") if $multiple_versions;
                        my $title .= sprintf( _g( "Package: %s (%s)" ), $pkg, $v_str );
                        $title .=  " ".marker( $archive ) if $archive ne 'us';
                        $title .=  " ".marker( $subsection ) if $subsection eq 'non-US'
@@ -168,10 +169,8 @@ sub do_show {
                        $title .=  " ".marker( $section ) if $section ne 'main';
                        $package_page .= title( $title );
                        
-                       $package_page .= "<h2>"._g( "Versions:" )." $v_str_arch</h2>\n" 
-                           unless $version eq $v_str;
                        if (my $provided_by = $page->{provided_by}) {
-                           note( _g( "This is also a virtual package provided by ").join( ', ', map { "<a href=\"$ROOT/$suite/$_\">$_</a>"  } @$provided_by) );
+                           note( _g( "This is also a virtual package provided by ").join( ', ', map { "<a href=\"".make_url($_,'')."\">$_</a>"  } @$provided_by) );
                        }
                        
                        if ($suite eq "experimental") {
@@ -203,9 +202,6 @@ sub do_show {
                        if ( $dep_list ) {
                            $package_page .= "<div id=\"pdeps\">\n";
                            $package_page .= sprintf( "<h2>"._g( "Other Packages Related to %s" )."</h2>\n", $pkg );
-                           if ($suite eq "experimental") {
-                               note( sprintf( _g( 'Note that the <strong>experimental</strong> distribution is not self-contained; missing dependencies are likely found in the <a href="%s">unstable</a> distribution.' ), "$ROOT/unstable/" ) );
-                           }
                            
                            $package_page .= pdeplegend( [ 'dep',  _g( 'depends' ) ],
                                                         [ 'rec',  _g( 'recommends' ) ],
@@ -225,22 +221,31 @@ sub do_show {
                        $package_page .= "<table summary=\""._g("The download table links to the download of the package and a file overview. In addition it gives information about the package size and the installed size.")."\">\n";
                        $package_page .= "<caption class=\"hidecss\">"._g("Download for all available architectures")."</caption>\n";
                        $package_page .= "<tr>\n";
-                       $package_page .= "<th>"._g("Architecture")."</th><th>"._g("Files")."</th><th>"._g( "Package Size")."</th><th>"._g("Installed Size")."</th></tr>\n";
+                       $package_page .= "<th>"._g("Architecture")."</th>";
+                       $package_page .= "<th>"._g("Version")."</th>"
+                           if $multiple_versions;
+                       $package_page .= "<th>"._g( "Package Size")."</th><th>"._g("Installed Size")."</th><th>"._g("Files")."</th></tr>\n";
                        foreach my $a ( @archs ) {
                            $package_page .= "<tr>\n";
-                           $package_page .=  "<th><a href=\"$ROOT/$suite/$encodedpkg/$a/download";
+                           $package_page .=  "<th><a href=\"".make_url("$encodedpkg/$a/download",'');
                            $package_page .=  "\">$a</a></th>\n";
-                           $package_page .= "<td>";
+                           $package_page .= "<td>".$versions->{$a}."</td>"
+                               if $multiple_versions;
+                           $package_page .= '<td class="size">';
+                           # package size
+                           $package_page .=  sprintf(_g('%.1f&nbsp;kB'),
+                                                     floor(($sizes_deb->{$a}/102.4)+0.5)/10);
+                           $package_page .= '</td><td class="size">';
+                           # installed size
+                           $package_page .=  sprintf(_g('%d&nbsp;kB'),
+                                                     $sizes_inst->{$a});
+                           $package_page .= "</td>\n<td>";
                            if ( $suite ne "experimental" ) {
                                $package_page .= sprintf( "[<a href=\"%s\">"._g( "list of files" )."</a>]\n",
-                                                         "$ROOT/$suite/$encodedpkg/$a/filelist", $pkg );
+                                                         make_url("$encodedpkg/$a/filelist",''), $pkg );
                            } else {
                                $package_page .= _g( "no current information" );
                            }
-                           $package_page .= '</td><td class="size">';
-                           $package_page .=  floor(($sizes_deb->{$a}/102.4)+0.5)/10 . "&nbsp;kB";
-                           $package_page .= '</td><td class="size">';
-                           $package_page .=  $sizes_inst->{$a} . "&nbsp;kB";
                            $package_page .= "</td>\n</tr>";
                        }
                        $package_page .= "</table>\n";
@@ -260,11 +265,11 @@ sub do_show {
 
                        $$menu .= simple_menu( [ _g( "Distribution:" ),
                                                 _g( "Overview over this distribution" ),
-                                                "$ROOT/",
+                                                make_url('/',''),
                                                 $suite ],
                                               [ _g( "Section:" ),
                                                 _g( "All packages in this section" ),
-                                                "$ROOT/$suite/virtual/",
+                                                make_url("virtual/",''),
                                                 
                                                 'virtual' ], );
 
@@ -282,37 +287,36 @@ sub do_show {
                    } # else (unless $page->is_virtual)
                } else { # unless $opts->{source}
                    for my $entry (@results) {
-                       debug( join(":", @$entry), 1 );
+                       debug( join(":", @$entry), 1 ) if DEBUG;
                        my (undef, $archive, undef, $section, $subsection,
                            $priority, $version) = @$entry;
                        
                        my $data = $sources_all{"$archive $suite $pkg"};
                        $page->merge_data($pkg, $suite, $archive, $data)
-                           or debug( "Merging $pkg $version FAILED", 2 );
+                           or debug( "Merging $pkg $version FAILED", 2 ) if DEBUG;
                    }
                    $version = $page->{version};
 
                    my $st1 = new Benchmark;
                    my $std = timediff($st1, $st0);
-                   debug( "Data search and merging took ".timestr($std) );
+                   debug( "Data search and merging took ".timestr($std) ) if DEBUG;
 
-                   my ($v_str, $v_str_arr) = $page->get_version_string();
                    $archive = $page->get_newest( 'archive' );
                    $section = $page->get_newest( 'section' );
                    $subsection = $page->get_newest( 'subsection' );
 
                    $$menu .= simple_menu( [ _g( "Distribution:" ),
                                             _g( "Overview over this suite" ),
-                                            "/$suite/",
+                                            make_url('/',''),
                                             $suite ],
                                           [ _g( "Section:" ),
                                             _g( "All packages in this section" ),
-                                            "/$suite/$subsection/",
+                                            make_url("$subsection/",''),
                                             $subsection ],
                                           );
                    
                    my $title .= sprintf( _g( "Source Package: %s (%s)" ),
-                                         $pkg, $v_str );
+                                         $pkg, $version );
                    $title .=  " ".marker( $archive ) if $archive ne 'us';
                    $title .=  " ".marker( $subsection ) if $subsection eq 'non-US'
                        and $archive ne 'non-US'; # non-US/security
@@ -352,10 +356,6 @@ sub do_show {
                    if ( $dep_list ) {
                        $package_page .= "<div id=\"pdeps\">\n";
                        $package_page .= sprintf( "<h2>"._g( "Other Packages Related to %s" )."</h2>\n", $pkg );
-                       if ($suite eq "experimental") {
-                           note( sprintf( _g( 'Note that the <strong>experimental</strong> distribution is not self-contained; missing dependencies are likely found in the <a href="%s">unstable</a> distribution.' ), "$ROOT/unstable/" ) );
-
-                       }
                        
                        $package_page .= pdeplegend( [ 'adep',  _g( 'build-depends' ) ],
                                                     [ 'idep',  _g( 'build-depends-indep' ) ],
@@ -384,7 +384,7 @@ sub do_show {
                        my ($src_file_md5, $src_file_size, $src_file_name)
                            = split /\s+/, $_;
                        my $src_url;
-                       for ($archive) {
+                       for ("$suite/$archive") {
                            /security/o &&  do {
                                $src_url = $FTP_SITES{security}; last };
                            /volatile/o &&  do {
@@ -421,7 +421,7 @@ sub do_show {
     }
 
 #    use Data::Dumper;
-#    debug( "Final page object:\n".Dumper($page), 3 );
+#    debug( "Final page object:\n".Dumper($page), 3 ) if DEBUG;
 
     my $title = $opts->{source} ?
        _g( "Details of source package <em>%s</em> in %s" ) :