X-Git-Url: https://git.deb.at/?p=deb%2Fpackages.git;a=blobdiff_plain;f=lib%2FPackages%2FHTML.pm;h=fc37c9466f9f7e44281f16938c052038bede4e53;hp=735302e5f6931681b1fe3d26011b042d0da2318e;hb=49f6fa5b401d8bba7abc2bafde675841a8729a15;hpb=355e7c2b45892eed587f21d9f1185dade88e8b0a diff --git a/lib/Packages/HTML.pm b/lib/Packages/HTML.pm index 735302e..fc37c94 100644 --- a/lib/Packages/HTML.pm +++ b/lib/Packages/HTML.pm @@ -3,41 +3,28 @@ package Packages::HTML; use strict; use warnings; +use Exporter; use URI::Escape; use HTML::Entities; +use Locale::gettext; + +use Packages::CGI (); +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 ); - -our $HOME = "http://www.debian.org"; -our $CONTACT_MAIL = 'debian-www@lists.debian.org'; -our $WEBMASTER_MAIL = 'webmaster@debian.org'; -our $SEARCH_PAGE = "http://packages.debian.org/"; -our $CGI_ROOT = "http://packages.debian.org/cgi-bin"; -our $CN_HELP_URL = "${HOME}/intro/cn"; -our $CHANGELOG_URL = '/changelogs'; -our $COPYRIGHT_URL = '/changelogs'; -our $SEARCH_URL = '/cgi-bin/search_packages.pl?searchon=names&version=all&exact=1&keywords='; -our $SRC_SEARCH_URL = '/cgi-bin/search_packages.pl?searchon=sourcenames&version=all&exact=1&keywords='; -our $BUG_URL = 'http://bugs.debian.org/'; -our $SRC_BUG_URL = 'http://bugs.debian.org/src:'; -our $QA_URL = 'http://packages.qa.debian.org/'; + ds_begin ds_item ds_end title marker pdesc + pdeplegend pkg_list pmoreinfo print_deps print_src_deps ); - -my %img_trans = ( pt_BR => "pt", pt_PT => "pt", sv_SE => "sv" ); +our $CHANGELOG_URL = '/changelogs'; sub img { my ( $root, $url, $src, $alt, %attr ) = @_; @@ -63,20 +50,7 @@ sub title { } sub marker { - return "[$_[0]]"; -} - -sub note { - my ( $title, $note ) = @_; - my $str = ""; - - if ($note) { - $str .= "

$title

"; - } else { - $note = $title; - } - $str .= "

$note

"; - return $str; + return "[$_[0]]"; } sub pdesc { @@ -93,10 +67,10 @@ 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"; @@ -104,29 +78,19 @@ sub pdeplegend { } sub pkg_list { - my ( $pkgs, $lang, $env ) = @_; + my ( $packages, $opts, $pkgs, $lang ) = @_; + my $suite = $opts->{suite}[0]; 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". + my $short_desc = (read_entry_simple( $packages, $p, $opts->{h_archives}, $suite))->[-1]; + + if ( $short_desc ) { + $str .= "
$p
\n". "\t
$short_desc
\n"; - } } else { - $str .= "
$p
\n\t
".gettext("Not available")."
\n"; + $str .= "
$p
\n\t
"._g("Not available")."
\n"; } } if ($str) { @@ -141,39 +105,49 @@ sub pmoreinfo { my $name = $info{name} or return; my $env = $info{env} or return; - my $d = $info{data} or return; + 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( 'package' ); + my $source_version = $page->get_src( 'version' ); + my $src_dir = $page->get_src('directory'); if ($info{sourcedownload}) { - $str .= gettext( "Source Package:" ); - $str .= " {src_name}\">$d->{src_name}, ". - gettext( "Download" ).":\n"; - - unless ($d->{src_files}) { - $str .= gettext( "Not found" ); + my $files = $page->get_src( 'files' ); + my $path = (@{$opts->{archive}} >1) ? + $suite : + "$suite/$opts->{archive}[0]"; + $str .= _g( "Source Package:" ); + $str .= " $source, ". + _g( "Download" ).":\n"; + + unless (defined($files) and @$files) { + $str .= _g( "Not found" ); } else { - foreach( @{$d->{src_files}} ) { - my ($src_file_md5, $src_file_size, $src_file_name) = @$_; - if ($d->{is_security}) { - $str .= "{opts}{security_site}/$d->{src_directory}/$src_file_name\">["; - } elsif ($d->{is_volatile}) { - $str .= "{opts}{volatile_site}/$d->{src_directory}/$src_file_name\">["; - } elsif ($d->{is_nonus}) { - $str .= "{opts}{nonus_site}/$d->{src_directory}/$src_file_name\">["; - } else { - $str .= "{opts}{debian_site}/$d->{src_directory}/$src_file_name\">["; - } + 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\">["; + } if ($src_file_name =~ /dsc$/) { $str .= "dsc"; } else { @@ -182,63 +156,181 @@ 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; } if ($info{changesandcopy}) { - if ( $d->{src_directory} ) { - my $src_dir = $d->{src_directory}; - (my $src_basename = $d->{src_version}) =~ s,^\d+:,,; # strip epoche - $src_basename = "$d->{src_name}_$src_basename"; + if ( $src_dir ) { + (my $src_basename = $source_version) =~ s,^\d+:,,; # strip epoche + $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 = "$COPYRIGHT_URL/$src_dir/$src_basename/"; + 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 = @{$d->{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.$d->{src_name}, $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"; return $str; } +sub dep_item { + my ( $link, $name, $info, $desc ) = @_; + my $post_link = ''; + if ($link) { + $link = ""; + $post_link = ''; + } else { + $link = ''; + } + if ($info) { + $info = " $info"; + } else { + $info = ''; + } + if ($desc) { + $desc = "
$desc
"; + } else { + $desc = ''; + } + + return "$link$name$post_link$info$desc"; +} # end dep_item + +sub print_deps { + my ( $packages, $opts, $pkg, $relations, $type) = @_; + my %dep_type = ('depends' => 'dep', 'recommends' => 'rec', + 'suggests' => 'sug', 'build-depends' => 'adep', + 'build-depends-indep' => 'idep' ); + my $res = "\n"; + } else { + $res = ""; + } + return $res; +} # end print_deps + my $ds_begin = '
'; my $ds_item_desc = '
'; my $ds_item = ':
'; @@ -277,85 +369,86 @@ sub header { my $page_title = $params{page_title} || $params{title} || ''; my $meta = $params{meta} || ''; - if ($params{print_title_above}) { - $title_in_header = "

$title_in_header

"; - } else { - $title_in_header = ''; - } - my $search_in_header = ''; $params{print_search_field} ||= ""; if ($params{print_search_field} eq 'packages') { my %values = %{$params{search_field_values}}; my %checked_searchon = ( names => "", all => "", - sourcenames => "", ); + sourcenames => "", + contents => ""); $checked_searchon{$values{searchon}} = "checked=\"checked\""; + $checked_searchon{names} = "checked=\"checked\"" + if $values{searchon} eq 'default'; $search_in_header = < +
- - - - - - - - -Full options + + +%s
-
Search on: +
%s -   +   - +
- -
-
- -MENU -; - } elsif ($params{print_search_field} eq 'contents') { - my %values = %{$params{search_field_values}}; - my %checked_searchmode = ( searchfiles => "", - searchfilesanddirs => "", - searchword => "", - filelist => "", ); - $checked_searchmode{$values{searchmode}} = "checked=\"checked\""; - $search_in_header = < -
- - - -  - -Full options -
-
Display: - - - - -
- - - - + + +
MENU ; + $search_in_header = sprintf( $search_in_header, + _g( 'Search' ), + _g( 'Full options' ), + _g( 'Search on:'), + _g( 'Package Names' ), + _g( 'Descriptions' ), + _g( 'Source package names' ), + _g( 'Package contents' )); +# } elsif ($params{print_search_field} eq 'contents') { +# my %values = %{$params{search_field_values}}; +# my %checked_searchmode = ( searchfiles => "", +# searchfilesanddirs => "", +# searchword => "", +# filelist => "", ); +# $checked_searchmode{$values{searchmode}} = "checked=\"checked\""; +# $search_in_header = < +#
+# +# +# +# +#   +# +# Full options +#
+#
Display: +# +# +# +# +#
+# +# +# +# +#
+#
+# +# MENU +# ; } my $keywords = $params{keywords} || ''; my $KEYWORDS_LINE = ""; my $LANG = $params{lang}; - my $img_lang = $img_trans{$LANG} || $LANG; my $charset = get_charset($LANG); my $txt = < @@ -368,7 +461,8 @@ MENU $KEYWORDS_LINE $DESC_LINE $meta - + + \n". @@ -458,7 +548,7 @@ sub languages { if (@used_langs) { $str .= "
\n"; $str .= "\n

\n"; - $str .= gettext( "This page is also available in the following languages:\n" ); + $str .= _g( "This page is also available in the following languages:\n" ); $str .= "

\n"; my @printed_langs = (); @@ -477,7 +567,7 @@ sub languages { $str .= "\n"; } $str .= "\n

\n"; - $str .= sprintf( gettext( "How to set the default document language

" ), $CN_HELP_URL ); + $str .= sprintf( _g( "How to set the default document language" ), $CN_HELP_URL )."

"; $str .= "\n\n"; }