X-Git-Url: https://git.deb.at/?p=deb%2Fpackages.git;a=blobdiff_plain;f=lib%2FPackages%2FHTML.pm;h=e0814a715ca0d099956074fd314af418f5e9a9e5;hp=1de010d4beea3b9c951098699343cdd4f867dd7c;hb=411dd86a5f305fcce69912b47f84dc16914d2da1;hpb=11fc9730f6aeb68430f61940b69b171d519dd4ad diff --git a/lib/Packages/HTML.pm b/lib/Packages/HTML.pm index 1de010d..e0814a7 100644 --- a/lib/Packages/HTML.pm +++ b/lib/Packages/HTML.pm @@ -8,7 +8,7 @@ use URI::Escape; use HTML::Entities; use Locale::gettext; -use Packages::CGI (); +use Packages::CGI qw(make_url make_search_url); use Packages::Search qw( read_entry_simple ); use Packages::Config qw( :all ); @@ -21,7 +21,7 @@ use Packages::I18N::LanguageNames; our @ISA = qw( Exporter ); our @EXPORT = qw( header title trailer file_changed time_stamp read_md5_hash write_md5_hash simple_menu - ds_begin ds_item ds_end title marker pdesc + ds_begin ds_item ds_end title marker pdesc ptags pdeplegend pkg_list pmoreinfo print_deps print_src_deps ); our $CHANGELOG_URL = '/changelogs'; @@ -66,6 +66,20 @@ sub pdesc { return $str; } +sub ptags { + my ( $package, @tags ) = @_; + my $str = ""; + + $str .= "
\n

"; + $str .= "Tags:\n"; + foreach my $tag (@tags) { + $str .= "$tag\n"; + } + $str .= "

\n
\n"; + + return $str; +} + sub pdeplegend { my $str = "\n"; @@ -82,12 +96,14 @@ sub pkg_list { my $suite = $opts->{suite}[0]; my $str = ""; - foreach my $p ( @$pkgs ) { + foreach my $p ( sort @$pkgs ) { + # we don't deal with virtual packages here because for the + # current uses of this function this isn't needed my $short_desc = (read_entry_simple( $packages, $p, $opts->{h_archives}, $suite))->[-1]; if ( $short_desc ) { - $str .= "
$p
\n". + $str .= "
undef})."\">$p
\n". "\t
$short_desc
\n"; } else { $str .= "
$p
\n\t
"._g("Not available")."
\n"; @@ -125,11 +141,8 @@ sub pmoreinfo { my $src_dir = $page->get_src('directory'); if ($info{sourcedownload}) { my $files = $page->get_src( 'files' ); - my $path = (@{$opts->{archive}} >1) ? - $suite : - "$suite/$opts->{archive}[0]"; $str .= _g( "Source Package:" ); - $str .= " $source, ". + $str .= " 'source'})."\">$source, ". _g( "Download" ).":\n"; unless (defined($files) and @$files) { @@ -137,17 +150,10 @@ sub pmoreinfo { } else { foreach( @$files ) { my ($src_file_md5, $src_file_size, $src_file_name) = split /\s/o, $_; - for ($page->get_newest('archive')) { - /security/o && do { - $str .= "{security}/$src_dir/$src_file_name\">["; last }; - /volatile/o && do { - $str .= "{volatile}/$src_dir/$src_file_name\">["; last }; - /backports/o && do { - $str .= "{backports}/$src_dir/$src_file_name\">["; last }; - /non-us/io && do { - $str .= "{nonus_site}/$src_dir/$src_file_name\">["; last }; - $str .= "{us}/$src_dir/$src_file_name\">["; - } + # non-US hack + (my $server = lc $page->get_newest('archive')) =~ s/-//go; + $str .= sprintf("[", + $env->{$server}||$env->{us}); if ($src_file_name =~ /dsc$/) { $str .= "dsc"; } else { @@ -216,13 +222,11 @@ sub pmoreinfo { } sub dep_item { - my ( $link, $name, $info, $desc ) = @_; - my $post_link = ''; - if ($link) { - $link = ""; + my ( $suite, $name, $info, $desc ) = @_; + my ($link, $post_link) = ('', ''); + if ($suite) { + $link = "$suite,source=>undef})."\">"; $post_link = ''; - } else { - $link = ''; } if ($info) { $info = " $info"; @@ -239,13 +243,15 @@ sub dep_item { } # end dep_item sub provides_string { - my ($path, $entry) = @_; - my @provided_by = split /\s/, $entry; - my $short_desc = "virtual package provided by "; + my ($suite, $entry, $also) = @_; + my %tmp = map { $_ => 1 } split /\s/, $entry; + my @provided_by = keys %tmp; # weed out duplicates + my $short_desc = $also ? _g("also a virtual package provided by ") + : _g("virtual package provided by "); if (@provided_by < 10) { - $short_desc .= join( ', ',map { "$_" } @provided_by); + $short_desc .= join( ', ',map { "$suite,source=>undef})."\">$_" } @provided_by); } else { - $short_desc .= scalar(@provided_by)." packages"; + $short_desc .= sprintf( _g("%s packages"), scalar(@provided_by)); } return $short_desc; } @@ -299,23 +305,26 @@ sub print_deps { my $short_desc = $entry->[-1]; my $arch = $entry->[3]; my $archive = $entry->[1]; + my $p_suite = $entry->[2]; if ( $short_desc ) { - my $path = $suite; if ( $is_old_pkgs ) { - push @res_pkgs, dep_item( "$ROOT/$path/$p_name", + push @res_pkgs, dep_item( $p_suite, $p_name, "$pkg_version$arch_str" ); } elsif (defined $entry->[1]) { $entries{$p_name} ||= $entry; $short_desc = encode_entities( $short_desc, "<>&\"" ); - $short_desc .= "
Also, a ".provides_string( "$ROOT/$path", - $entry->[0] ) + $short_desc .= "
".provides_string( $p_suite, + $entry->[0], + 1 ) if defined $entry->[0]; - push @res_pkgs, dep_item( "$ROOT/$path/$p_name", + push @res_pkgs, dep_item( $p_suite, $p_name, "$pkg_version$arch_str", $short_desc ); } elsif (defined $entry->[0]) { - $short_desc = provides_string( "$ROOT/$path", + $short_desc = provides_string( $p_suite, $entry->[0] ); - push @res_pkgs, dep_item( "$ROOT/$path/$p_name", + #FIXME: we don't handle virtual packages from + # the fallback suite correctly here + push @res_pkgs, dep_item( $suite, $p_name, "$pkg_version$arch_str", $short_desc ); } } elsif ( $is_old_pkgs ) { @@ -535,7 +544,7 @@ sub trailer { "

". sprintf( _g( "To report a problem with the web site, e-mail %s. For other contact information, see the Debian contact page." ), $CONTACT_MAIL, $CONTACT_MAIL, $HOME). "

\n". - "

". _g( "Last Modified: " ). "LAST_MODIFIED_DATE". + "

". _g( "Last Modified: " ). gmtime(). "
\n". sprintf( _g( "Copyright © 1997-2005 SPI; See license terms." ), "$HOME/" )."
\n". _g( "Debian is a registered trademark of Software in the Public Interest, Inc." ).