X-Git-Url: https://git.deb.at/?p=deb%2Fpackages.git;a=blobdiff_plain;f=lib%2FPackages%2FHTML.pm;h=c7dfd0b7479d6c420a52e88dbd4f4b4d867da23c;hp=74939717c97280668bf871d405e6b4c593571912;hb=06c6f30bfc4f55cecc7485fef0f0a227e32b44f0;hpb=264b1245548e5c5494778a813e5e48897168b008 diff --git a/lib/Packages/HTML.pm b/lib/Packages/HTML.pm index 7493971..c7dfd0b 100644 --- a/lib/Packages/HTML.pm +++ b/lib/Packages/HTML.pm @@ -3,28 +3,26 @@ package Packages::HTML; use strict; use warnings; +use Exporter; 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 ); #use Packages::Util; -#use Packages::I18N::Locale; -#use Packages::I18N::Languages; -#use Packages::I18N::LanguageNames; +use Packages::I18N::Locale; +use Packages::I18N::Languages; +use Packages::I18N::LanguageNames; #use Generated::Strings qw( gettext dgettext ); -# dummy routines -sub get_charset { return "utf-8" }; -sub gettext { return $_[0]; }; - 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 note title marker pdesc - pdeplegend pkg_list pmoreinfo print_deps ); + ds_begin ds_item ds_end title marker pdesc + pdeplegend pkg_list pmoreinfo print_deps print_src_deps ); our $CHANGELOG_URL = '/changelogs'; @@ -52,7 +50,7 @@ sub title { } sub marker { - return "[$_[0]]"; + return "[$_[0]]"; } sub pdesc { @@ -69,48 +67,40 @@ sub pdesc { } sub pdeplegend { - my $str = "\n"; + my $str = "
\n"; foreach my $entry (@_) { - $str .= ""; + $str .= ""; } $str .= "\n
[0].gif\" alt=\"[$entry->[0]]\" width=\"16\" height=\"16\">= $entry->[1][0].gif\" alt=\"[$entry->[0]]\" width=\"16\" height=\"16\">= $entry->[1]
\n"; return $str; } -# sub pkg_list { -# my ( $pkgs, $lang, $env ) = @_; - -# my $str = ""; -# foreach my $p ( @$pkgs ) { -# my $p_pkg = $env->{db}->get_pkg( $p ); - -# if ( $p_pkg ) { -# if ($p_pkg->is_virtual) { -# $str .= "
$p
\n". -# "\t
".gettext("Virtual package")."
\n"; -# } else { -# my %subsections = $p_pkg->get_arch_fields( 'section', -# $env->{archs} ); -# my $subsection = $subsections{max_unique}; -# my %desc_md5s = $p_pkg->get_arch_fields( 'description-md5', -# $env->{archs} ); -# my $short_desc = conv_desc( $lang, -# encode_entities( $env->{db}->get_short_desc( $desc_md5s{max_unique}, $lang ), "<>&\"" ) ); -# $str .= "
$p
\n". -# "\t
$short_desc
\n"; -# } -# } else { -# $str .= "
$p
\n\t
".gettext("Not available")."
\n"; -# } -# } -# if ($str) { -# $str = "
$str
\n"; -# } - -# return $str; -# } +sub pkg_list { + my ( $packages, $opts, $pkgs, $lang ) = @_; + my $suite = $opts->{suite}[0]; + + my $str = ""; + 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 .= "
undef})."\">$p
\n". + "\t
$short_desc
\n"; + } else { + $str .= "
$p
\n\t
"._g("Not available")."
\n"; + } + } + if ($str) { + $str = "
$str
\n"; + } + + return $str; +} sub pmoreinfo { my %info = @_; @@ -120,44 +110,36 @@ sub pmoreinfo { my $opts = $info{opts} or return; my $page = $info{data} or return; my $is_source = $info{is_source}; + my $suite = $opts->{suite}[0]; my $str = "
"; - $str .= sprintf( "

".gettext( "More Information on %s" )."

", + $str .= sprintf( "

"._g( "More Information on %s" )."

", $name ); - if ($info{bugreports}) { my $bug_url = $is_source ? $SRC_BUG_URL : $BUG_URL; - $str .= "

\n".sprintf( gettext( "Check for Bug Reports about %s." )."
\n", + $str .= "

\n".sprintf( _g( "Check for Bug Reports about %s." )."
\n", $bug_url.$name, $name ); } - my $source = $page->get_src( 'name' ); + my $source = $page->get_src( 'package' ); my $source_version = $page->get_src( 'version' ); my $src_dir = $page->get_src('directory'); if ($info{sourcedownload}) { my $files = $page->get_src( 'files' ); - my $path = (@{$opts->{archive}} >1) ? - $opts->{suite} : - "$opts->{suite}/$opts->{archive}[0]"; - $str .= gettext( "Source Package:" ); - $str .= " $source, ". - gettext( "Download" ).":\n"; + $str .= _g( "Source Package:" ); + $str .= " 'source'})."\">$source, ". + _g( "Download" ).":\n"; unless (defined($files) and @$files) { - $str .= gettext( "Not found" ); + $str .= _g( "Not found" ); } else { foreach( @$files ) { - my ($src_file_md5, $src_file_size, $src_file_name) = @$_; - 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 }; - /non-us/io && do { - $str .= "{nonus_site}/$src_dir/$src_file_name\">["; last }; - $str .= "{us}/$src_dir/$src_file_name\">["; - } + my ($src_file_md5, $src_file_size, $src_file_name) = split /\s/o, $_; + # 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 { @@ -166,7 +148,7 @@ sub pmoreinfo { $str .= "]\n"; } } -# $package_page .= sprintf( gettext( " (These sources are for version %s)\n" ), $src_version ) +# $package_page .= sprintf( _g( " (These sources are for version %s)\n" ), $src_version ) # if ($src_version ne $version) && !$src_version_given_in_control; } @@ -176,46 +158,49 @@ sub pmoreinfo { $src_basename = "${source}_$src_basename"; $src_dir =~ s,pool/updates,pool,o; $src_dir =~ s,pool/non-US,pool,o; - $str .= "
".sprintf( gettext( "View the Debian changelog" ), + $str .= "
".sprintf( _g( 'View the Debian changelog' ), "$CHANGELOG_URL/$src_dir/$src_basename/changelog" )."
\n"; my $copyright_url = "$CHANGELOG_URL/$src_dir/$src_basename/"; $copyright_url .= ( $is_source ? 'copyright' : "$name.copyright" ); - $str .= sprintf( gettext( "View the copyright file" ), + $str .= sprintf( _g( 'View the copyright file' ), $copyright_url )."

"; } } if ($info{maintainers}) { - my @uploaders = @{$page->get_src( 'uploaders' )}; - foreach (@uploaders) { - $_->[0] = encode_entities( $_->[0], '&<>' ); - } - my ($maint_name, $maint_mail ) = @{shift @uploaders}; - unless (@uploaders) { - $str .= "

\n".sprintf( gettext( "%s is responsible for this Debian package." ). - "\n", - "$maint_name" - ); - } else { - my $up_str = "$maint_name"; - my @uploaders_str; - foreach (@uploaders) { - push @uploaders_str, "[1]\">$_->[0]"; + my $uploaders = $page->get_src( 'uploaders' ); + if ($uploaders && @$uploaders) { + foreach (@$uploaders) { + $_->[0] = encode_entities( $_->[0], '&<>' ); + } + my ($maint_name, $maint_mail) = @{shift @$uploaders}; + unless (@$uploaders) { + $str .= "

\n".sprintf( _g( "%s is responsible for this Debian package." ). + "\n", + "$maint_name" + ); + } else { + my $up_str = "$maint_name"; + my @uploaders_str; + foreach (@$uploaders) { + push @uploaders_str, "[1]\">$_->[0]"; + } + my $last_up = pop @uploaders_str; + $up_str .= ", ".join ", ", @uploaders_str if @uploaders_str; + $up_str .= sprintf( _g( " and %s are responsible for this Debian package." ), $last_up ); + $str .= "

\n$up_str "; } - my $last_up = pop @uploaders_str; - $up_str .= ", ".join ", ", @uploaders_str if @uploaders_str; - $up_str .= sprintf( gettext( " and %s are responsible for this Debian package." ), $last_up ); - $str .= "

\n$up_str "; } - $str .= sprintf( gettext( "See the developer information for %s." )."

", $QA_URL.$source, $name ); + $str .= sprintf( _g( "See the developer information for %s." )."

", $QA_URL.$source, $name ) if $source; } if ($info{search}) { my $encodedname = uri_escape( $name ); - my $search_url = $is_source ? $SRC_SEARCH_URL : $SEARCH_URL; - $str .= "

".sprintf( gettext( "Search for other versions of %s" ), $search_url.$encodedname, $name )."

\n"; + my $search_url = $is_source ? "$ROOT/source" : $ROOT; + $str .= "

".sprintf( _g( "Search for other versions of %s" ), + "$search_url/$encodedname", $name )."

\n"; } $str .= "
\n"; @@ -223,13 +208,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"; @@ -245,15 +228,31 @@ sub dep_item { return "$link$name$post_link$info$desc"; } # end dep_item +sub provides_string { + 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 { "$suite,source=>undef})."\">$_" } @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', - 'suggests' => 'sug'); + 'suggests' => 'sug', 'build-depends' => 'adep', + 'build-depends-indep' => 'idep' ); my $res = "