</Directory>
<VirtualHost *>
- ServerAdmin webmaster@debian.org
+ ServerAdmin frank@lichtenheld.de
DocumentRoot %TOPDIR%/www/
ServerName %SITE%
ErrorLog /var/log/apache2/%SITE%-error.log
CustomLog /var/log/apache2/%SITE%-access.log combined
- Alias /cgi-bin/ %TOPDIR%/cgi-bin/
+ ScriptAlias /cgi-bin/ %TOPDIR%/cgi-bin/
- PerlModule ModPerl::Registry
- PerlTaintCheck On
- PerlRequire %TOPDIR%/bin/mod_perl-startup
- PerlSwitches -T
+# PerlModule ModPerl::Registry
+# PerlTaintCheck On
+# PerlRequire %TOPDIR%/bin/mod_perl-startup
+# PerlSwitches -T
<Location /cgi-bin/>
- SetHandler perl-script
+# SetHandler perl-script
# mod-perl etch
- PerlInitHandler Apache2::Reload
+# PerlInitHandler Apache2::Reload
# mod-perl sarge
#PerlInitHandler Apache::Reload
- PerlHandler ModPerl::Registry
+# PerlHandler ModPerl::Registry
Options +ExecCGI
- PerlSendHeader On
+# PerlSendHeader On
allow from all
</Location>
RewriteRule ^/changelogs/ - [L]
RewriteRule ^/Pics/ - [L]
RewriteRule ^/about/ - [L]
+ RewriteRule ^/ubuntu/ - [L]
RewriteRule ^/[^/]+\.css - [L]
RewriteRule ^/[^/]+\.js - [L]
RewriteCond %{QUERY_STRING} =""
RewriteCond %TOPDIR%/www%{REQUEST_FILENAME} -f [OR]
RewriteCond %TOPDIR%/www%{REQUEST_FILENAME}.en.html -f [OR]
- RewriteCond %TOPDIR%/www%{REQUEST_FILENAME} -l [OR]
- RewriteCond %TOPDIR%/www%{REQUEST_FILENAME} -d
+ RewriteCond %TOPDIR%/www%{REQUEST_FILENAME} -l
RewriteRule . - [L]
RewriteRule ^/(.+)$ /cgi-bin/dispatcher.pl/$1 [L,PT]
htmldir=${topdir}/www
archivedir=${topdir}/archive
podir=${topdir}/po
- localedir=%TOPDIR%/locale
staticdir=${topdir}/static
configdir=${topdir}/conf
templatedir=${topdir}/templates
# path to private ftp directory
#ftproot=/org/ftp.root
-ftpsite=http://ftp.de.debian.org/debian
-security_ftpsite=http://security.debian.org/debian-security
-volatile_ftpsite=http://volatile.debian.org/debian-volatile
-backports_ftpsite=http://backports.org/debian
-amd64_ftpsite=http://amd64.debian.net/debian
-debports_ftpsite=http://ftp.debian-ports.org/debian
+ftpsite=http://archive.ubuntu.com/ubuntu
+security_ftpsite=$ftpsite
ddtp_ftpsite=http://ddtp.debian.net/debian
+ wget_cmd="wget --no-verbose --tries=2 --timeout=60"
+
root=""
# Architectures
#
- polangs="de fi fr hu ja nl uk"
- ddtplangs="ca cs da de eo es fi fr go hu it ja km_KH ko nl pl pt pt_BR ru sk sv uk zh zh_CN zh_TW"
+ polangs="de fi fr hu ja nl ru sv uk zh-cn"
+ ddtplangs="ca cs da de eo es fi fr hu it ja km-kh ko nl pl pt pt-br ru sk sv uk zh-cn zh-tw"
-archives="us security amd64 debports backports volatile"
-sections="main contrib non-free"
+archives="us security"
+sections="main multiverse restricted universe"
- parts="${sections}"
+ parts="$sections"
-suites="sarge sarge-volatile sarge-backports etch etch-m68k etch-volatile etch-backports lenny sid experimental"
-priorities="required important standard optional extra"
+suites="dapper dapper-updates dapper-backports edgy edgy-updates edgy-backports feisty feisty-updates feisty-backports gutsy gutsy-updates gutsy-backports hardy"
- dists="${suites}"
+ dists="$suites"
-architectures="alpha amd64 arm armel hppa hurd-i386 i386 ia64 kfreebsd-i386 kfreebsd-amd64 m68k mips mipsel powerpc s390 sparc"
-arch_sarge="alpha amd64 arm hppa i386 ia64 m68k mips mipsel powerpc s390 sparc"
-arch_etch="alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc"
-arch_lenny="${arch_etch}"
-arch_sid="${arch_sarge} armel hurd-i386 kfreebsd-i386 kfreebsd-amd64"
-arch_experimental="${arch_sid}"
-arch_lenny_proposed_updates="${arch_lenny}"
-arch_etch_proposed_updates="${arch_etch}"
+priorities="required important standard optional extra"
+architectures="i386 amd64 powerpc"
+arch_dapper="i386 amd64 powerpc"
+arch_dapper_updates="${arch_dapper}"
+arch_dapper_backports="${arch_dapper}"
+arch_edgy="${arch_dapper}"
+arch_edgy_updates="${arch_edgy}"
+arch_edgy_backports="${arch_edgy}"
+arch_feisty="${arch_edgy}"
+arch_feisty_updates="${arch_feisty}"
+arch_feisty_backports="${arch_feisty}"
+arch_gutsy="${arch_feisty}"
+arch_gutsy_updates="${arch_gutsy}"
+arch_gutsy_backports="${arch_gutsy}"
+arch_hardy="${arch_gutsy}"
+arch_hardy_updates="${arch_hardy}"
+arch_hardy_backports="${arch_hardy}"
# Miscellaneous
#
echo "retrieve Release(.gpg) $dist"
test -d us/${dist} || mkdir -p us/${dist}
(cd us/${dist} &&
- wget -q -N ${ftpsite}/dists/${dist}/Release &&
- wget -q -N ${ftpsite}/dists/${dist}/Release.gpg )
+ $wget_cmd -N ${ftpsite}/dists/${dist}/Release &&
+ $wget_cmd -N ${ftpsite}/dists/${dist}/Release.gpg )
foo=\$arch_${dist//-/_}
for arch in `eval echo $foo`
do
- test ! "$arch" = "kfreebsd-i386" || continue
- test ! "$arch" = "kfreebsd-amd64" || continue
- test ! "$arch" = "armel" || continue
for part in ${parts}
do
echo retrieve Packages $dist/$part/$arch
test -d us/${dist}/${part}/binary-${arch} || mkdir -p us/${dist}/${part}/binary-${arch}
(cd us/${dist}/${part}/binary-${arch} &&
- wget -q -N ${ftpsite}/dists/${dist}/${part}/binary-${arch}/Packages.gz)
+ $wget_cmd -N ${ftpsite}/dists/${dist}/${part}/binary-${arch}/Packages.gz)
done
- #FIXME: no Contents files for p-u
- test ! "$dist" = "experimental" || continue
echo retrieve Contents $dist/$arch
(cd us/${dist} &&
- wget -q -N ${ftpsite}/dists/${dist}/Contents-${arch}.gz)
+ $wget_cmd -N ${ftpsite}/dists/${dist}/Contents-${arch}.gz)
done
for part in ${parts}
do
echo retrieve Sources $dist/$part
test -d us/${dist}/${part}/source || mkdir -p us/${dist}/${part}/source
(cd us/${dist}/${part}/source &&
- wget -q -N ${ftpsite}/dists/${dist}/${part}/source/Sources.gz)
+ $wget_cmd -N ${ftpsite}/dists/${dist}/${part}/source/Sources.gz)
done
done
else
foo=\$arch_${dist//-/_}
for arch in `eval echo $foo`
do
- test ! "$arch" = "kfreebsd-i386" || continue
- test ! "$arch" = "kfreebsd-amd64" || continue
- test ! "$arch" = "armel" || continue
for part in ${parts}
do
echo retrieve Packages $dist/$part/$arch
rsync -t ${localdir}/dists/${dist}/${part}/binary-${arch}/Packages.gz \
us/${dist}/${part}/binary-${arch}/Packages.gz
done
- #FIXME: no Contents files for p-u
- test ! "$dist" = "experimental" || continue
echo retrieve Contents $dist/$arch
rsync -t ${localdir}/dists/${dist}/Contents-${arch}.gz \
us/${dist}/Contents-${arch}.gz
# security archive
#
-for dist in sarge etch lenny
+for dist in $dists
do
echo "retrieve Release(.gpg) $dist"
test -d security/${dist} || mkdir -p security/${dist}
(cd security/${dist} &&
- wget -q -N ${security_ftpsite}/dists/${dist}-security/Release &&
- wget -q -N ${security_ftpsite}/dists/${dist}-security/Release.gpg )
- $wget_cmd -N ${security_ftpsite}/dists/${dist}/updates/Release &&
- $wget_cmd -N ${security_ftpsite}/dists/${dist}/updates/Release.gpg )
++ $wget_cmd -N ${security_ftpsite}/dists/${dist}-security/Release &&
++ $wget_cmd -N ${security_ftpsite}/dists/${dist}-security/Release.gpg )
foo=\$arch_${dist//-/_}
for arch in `eval echo $foo`
do
for part in ${parts}
do
- echo retrieve Packages $dist/$part/security/$arch
+ echo retrieve Packages $dist-security/$part/$arch
test -d security/${dist}/${part}/binary-${arch} || mkdir -p security/${dist}/${part}/binary-${arch}
(cd security/${dist}/${part}/binary-${arch} &&
- wget -q -N ${security_ftpsite}/dists/${dist}-security/${part}/binary-${arch}/Packages.gz)
- $wget_cmd -N ${security_ftpsite}/dists/${dist}/updates/${part}/binary-${arch}/Packages.gz)
++ $wget_cmd -N ${security_ftpsite}/dists/${dist}-security/${part}/binary-${arch}/Packages.gz)
done
done
for part in ${parts}
echo retrieve Sources $dist/$part/security
test -d security/${dist}/${part}/source || mkdir -p security/${dist}/${part}/source
(cd security/${dist}/${part}/source &&
- wget -q -N ${security_ftpsite}/dists/${dist}-security/${part}/source/Sources.gz)
- $wget_cmd -N ${security_ftpsite}/dists/${dist}/updates/${part}/source/Sources.gz)
++ $wget_cmd -N ${security_ftpsite}/dists/${dist}-security/${part}/source/Sources.gz)
done
done
sub do_search_contents {
my ($params, $opts, $page_content) = @_;
+ my $cat = $opts->{cat};
if ($params->{errors}{keywords}) {
- fatal_error( _g( "keyword not valid or missing" ) );
+ fatal_error( $cat->g( "keyword not valid or missing" ) );
$opts->{keywords} = [];
} elsif (grep { length($_) < 2 } @{$opts->{keywords}}) {
- fatal_error( _g( "keyword too short (keywords need to have at least two characters)" ) );
+ fatal_error( $cat->g( "keyword too short (keywords need to have at least two characters)" ) );
}
if ($params->{errors}{suite}) {
- fatal_error( _g( "suite not valid or not specified" ) );
+ fatal_error( $cat->g( "suite not valid or not specified" ) );
}
#FIXME: that's extremely hacky atm
if ($params->{values}{suite}{no_replace}[0] eq 'default') {
$params->{values}{suite}{no_replace} =
- $params->{values}{suite}{final} = $opts->{suite} = [ 'etch' ];
+ $params->{values}{suite}{final} = $opts->{suite} = [ 'gutsy' ];
}
if (@{$opts->{suite}} > 1) {
- fatal_error( sprintf( _g( "more than one suite specified for contents search (%s)" ), "@{$opts->{suite}}" ) );
+ fatal_error( $cat->g( "more than one suite specified for contents search (%s)",
+ "@{$opts->{suite}}" ) );
}
my @keywords = @{$opts->{keywords}};
close FILENAMES or warn "fgrep error: $!\n";
} else {
- error(_g("The search mode you selected doesn't support more than one keyword."))
+ error($cat->g("The search mode you selected doesn't support more than one keyword."))
if @keywords;
my $kw = reverse $first_kw;
my $file = shift @$result;
my %pkgs;
foreach (@$result) {
- my ($pkg, $arch) = split /:/, $_;
+ my ($pkg, $arch) = split m/:/, $_;
next unless $opts->{h_archs}{$arch};
$pkgs{$pkg}{$arch}++;
$archs{$arch}++ unless $arch eq 'all';
while (my ($suite, $provides) = each %virt) {
next if $suite eq '-';
if ($opts->{h_suites}{$suite}) {
- push @$results, [ $key, "-", $suite, 'virtual', 'v', 'v', 'v', 'v',
+ push @$results, [ $key, "-", $suite, 'virtual', 'v', 'v', 'v', 'v', 'v',
$provides];
} else {
- push @$non_results, [ $key, "-", $suite, 'virtual', 'v', 'v', 'v', 'v',
+ push @$non_results, [ $key, "-", $suite, 'virtual', 'v', 'v', 'v', 'v', 'v',
$provides];
}
}
foreach (split(/\000/o, $result||'')) {
- my @data = split ( /\s/o, $_, 8 );
+ my @data = split ( /\s/o, $_, 9 );
debug( "Considering entry ".join( ':', @data), 2) if DEBUG;
if ($opts->{h_suites}{$data[1]}
&& ($opts->{h_archs}{$data[2]} || $data[2] eq 'all')
read_entry_all( $hash, $key, $results, \@non_results, $opts );
}
-#FIXME: make configurable
-my %fallback_suites = (
- 'sarge-backports' => 'sarge',
- 'sarge-volatile' => 'sarge',
- 'etch-backports' => 'etch',
- 'etch-volatile' => 'etch',
- experimental => 'sid' );
+sub fallback_suite {
+ my $suite = shift;
+ if ($suite =~ /^(\S+)-(?:updates|backports)/) {
+ return $1;
+ } else {
+ return undef;
+ }
+}
sub read_entry_simple {
my ($hash, $key, $archives, $suite) = @_;
# with correctly, but it's adequate enough for now
return [ $virt{$suite} ] unless defined $result;
foreach (split /\000/o, $result) {
- my @data = split ( /\s/o, $_, 8 );
+ my @data = split ( /\s/o, $_, 9 );
debug( "use entry: @data", 2 ) if DEBUG && $data[1] eq $suite;
return [ $virt{$suite}, @data ] if $data[1] eq $suite;
}
- if (my $fb_suite = $fallback_suites{$suite}) {
+ if (my $fb_suite = fallback_suite($suite)) {
my $fb_result = read_entry_simple( $hash, $key, $archives, $fb_suite );
my $fb_virt = shift(@$fb_result);
$virt{$suite} .= $virt{$suite} ? " $fb_virt" : $fb_virt if $fb_virt;
my $first_keyword = lc shift @$keywords;
@$keywords = map { lc $_ } @$keywords;
-
+
my ($key, $prefixes) = ($first_keyword, '');
- my %pkgs;
+ my (%pkgs, %pkgs_min);
$postfixes->seq( $key, $prefixes, R_CURSOR );
while (index($key, $first_keyword) >= 0) {
- if ($prefixes =~ /^\001(\d+)/o) {
- debug( "$key has too many hits", 2 ) if DEBUG;
- $too_many_hits += $1;
+ if ($prefixes =~ /^(\^)?\001(\d+)/o) {
+ debug("$key has too many hits", 2 ) if DEBUG;
+ $too_many_hits += $2;
+ if ($1) { # use the empty prefix
+ foreach my $k (@$keywords) {
+ next unless $key =~ /\Q$k\E/;
+ }
+ debug("add key $key", 2) if DEBUG;
+ $pkgs{$key}++;
+ $pkgs_min{$key}++;
+ }
} else {
PREFIX:
foreach (split /\000/o, $prefixes) {
foreach my $k (@$keywords) {
next PREFIX unless $word =~ /\Q$k\E/;
}
- debug( "add word $word", 2) if DEBUG;
+ debug("add word $word", 2) if DEBUG;
$pkgs{$word}++;
+ $pkgs_min{$word}++ if $_ eq '';
}
}
last if $postfixes->seq( $key, $prefixes, R_NEXT ) != 0;
- last if $too_many_hits or keys %pkgs >= 100;
+ last if keys %pkgs_min >= 100;
}
-
- my $no_results = keys %pkgs;
- if ($too_many_hits || ($no_results >= 100)) {
- $too_many_hits += $no_results;
- %pkgs = ( $first_keyword => 1 ) unless @$keywords;
+
+ my $nr = keys %pkgs;
+ my $min_nr = keys %pkgs_min;
+ debug("nr=$nr min_nr=$min_nr too_many_hits=$too_many_hits", 1) if DEBUG;
+ if ($nr >= 100) {
+ $too_many_hits += $nr - $min_nr + 1;
+ %pkgs = %pkgs_min;
}
foreach my $pkg (sort keys %pkgs) {
&$read_entry( $packages, $pkg, $results, $non_results, $opts );
undef $db;
debug ("ORDER: @order", 2) if DEBUG;
- return @order[0..10];
+ my $last = 10;
+ $last = $#order if $#order < $last;
+ return @order[0..$last];
}
sub find_binaries {
--- /dev/null
-topdir=/srv/packages.debian.org
-site=packages.debian.net
++topdir=/srv/packages.ubuntu.com-new
++site=packages2.ubuntu.lichtenheld.net
-/* css file for debian web site - Jutta Wrage 2004 */
-
-/* all pages have a header, outer inner and footer
-leftcol and maincol can be omitted, there will be other boxes
-to replace later (eg. two content columns)
-normal page:
-<div id="header">
- <div id="upperheader">
- <div id="logo">
- </div> <!-- end logo -->
- <div id="serverselect">
- </div> <!-- end serverselect -->
- </div> <!-- end upperheader -->
- <div id="navbar">
- </div> <!-- end navbar -->
-</div> <!-- end header -->
-<div id="outer">
- <div id="inner">
- <div id="leftcol">
- Leftcol is for menus - if omitted, maincol can be omitted, too
- </div> <!-- end leftcol -->
- <div id="maincol">
- Maincol with margin left is for the content
- But content may go directly to inner
- </div> <!-- end maincol -->
- </div> <!-- end inner -->
- <div id="footer">
- <hr class="hidecss"> This line is a divider for lynx
- </div> <!-- end footer -->
-</div> <!-- end outer -->
-color logo #C60036
-cd-pages: bgcolor="#e09e86" - navbar
-*/
-
-/* { border: 1px solid yellow; } */
html, body {
color: #000000;
background-color: #FFFFFF;
hr.hidecss {
border: 0;
}
+.hidecss {
+ display: none;
+}
hr {
border-bottom: 0;
border-top: 1px solid #BFC3DC;
}
-samp {
- display: block;
- margin-left: 2em;
-}
-div.sampleblock {
- width: 80%;
- margin: auto;
- font-family:courier, serif;
- font-size: 90%;
-}
-div.quoteblock {
- width: 75%;
- margin: auto;
- font-size: 90%;
- text-align: justify;
-}
-
-.quoteblock div.preimg {
- float: left;
- margin-top: 0.2em;
-}
-.quoteblock cite {
- display: block;
- text-align: right;
-}
-blockquote.question {
- font-style: italic;
-}
-blockquote.question p span {
- font-style: normal;
- width: 10%;
-}
-#pagewidth {
- width: 100%;
- text-align: left;
-}
-
-/* now the header*/
-#header {
- margin-left: -3px;
- width: 100%;
- height: auto;
-}
-
-/* upper nested header box*/
-#upperheader {
- width: 100%;
- margin-top: 11px;
- height: auto;
- /* height: 4.8em; */
- background: #FFFFFF;
-}
-
-#logo {
- float: left;
- margin-left: 6px;
- background: #FFFFFF;
-}
-
-#serverselect {
- float: right;
- display: block;
- padding-top: 1px;
- margin-right: 6px;
- margin-left: auto;
- text-align: right;
- top: 0;
- right: 0;
-}
-
-#serverselect:lang(de) {
- width: 15em;
-}
-#serverselect:lang(en) {
- width: 13em;
-}
-
-#serverselect p {
- color: #990000;
- font-size: 0.8em;
- font-weight: normal;
-}
-
-#serverselect p select {
- font-size: 88%;
-}
-
-#serverselect p input {
- font-size: 88%;
-}
-.centerlogo {
- margin-left: 260px;
- margin-right: auto;
- width: 125px;
- text-align: center;
- vertical-align: bottom;
-}
-#cdlogo {
-}
-
-#navbar {
- /* margin-top: 1em; */
- clear: both;
- padding-left: 0px;
- /* margin-top: 5px; */
- padding-top: 6px;
- padding-bottom: 4px;
- width: 100%;
- height: auto;
- text-align: center;
- background: #DF0451;
-}
-#navbar ul {
- display: inline;
- list-style-type: none;
- padding-left: 0px;
- line-height: 1.5em;
-}
-#navbar ul li {
- display: inline;
- margin: 0;
- white-space: nowrap;
-}
-#navbar a {
- color: #FFFFFF;
- text-decoration: none;
- padding: 0.2em 0.4em 0.2em 0.4em;
- background-color: #000084;
- border: 1px solid #000084;
- font-family: Arial, Helvetica, sans-serif;
- font-weight: bold;
- font-size: 0.9em;
-}
-#navbar a:hover {
- background: #0000CC;
-}
-#navbar .hidecss, .hidecss {
- display: none;
-}
-
/* the rest of page out of two nested boxes around */
#outer {
/* overflow: auto; */
}
-#leftcol {
- float: left;
- margin: 0em 0.4em 0 0;
- padding-left: 0;
- padding-bottom: 1em;
- width: auto;
- background: #BBDDFF;
- font-size: 0.9em;
- font-family: Arial, Helvetica, sans-serif;
- border: 1px solid #BBDDFF;
- /* overflow: auto; */
-}
-#leftcol a:link, #leftcol a:visited {
- display: block;
-}
-#leftcol a:hover {
- background-color: #DDEEFF;
- /* background-color: #FFFFFF; */
-}
-#leftcol ul {
- margin: 2px;
- padding: 0;
- list-style-type: none;
- font-weight: bold;
-}
-#leftcol ul.votemenu {
- width: 11em;
-}
-#leftcol ul.cdmenu {
- width: 12em;
-}
-#leftcol ul.votemenu ul li, #leftcol ul.cdmenu ul li {
- padding-bottom: 0.4em;
-}
-#leftcol li ul {
- display: inline;
-}
-#leftcol ul li {
- padding: 0.2em 0;
-}
-#leftcol ul ul {
- font-size: 0.9em;
- margin: 0;
-}
-#leftcol ul li a {
- line-height: 1.2em;
- padding-right: 0.5em;
- /* padding: 0.2em 0 0.3em 0em; */
-}
-#leftcol ul ul li a {
- font-weight: normal;
- padding: 0.1em 0.5em;
- line-height: 1.1em;
-}
-#leftcol ul ul li {
- padding-top: 0;
-}
-#leftcol p {
- margin-left: 2px;
- margin-right: 2px;
-}
-#leftcol p a {
- display: block;
- margin: 0;
-}
-#leftcol p img {
- margin-left: 1em;
-}
-
-#maincol {
- background: #FFFFFF;
- margin-left: 12em;
- margin-right: 0.5em;
- margin-bottom: 1em;
-}
-
-#maincol:lang(en), #maincol:lang(cz), #maincol:lang(ko),
- #maincol:lang(no), #maincol:lang(sk), #maincol:lang(tr),
- #maincol:lang(zh-CN), #maincol:lang(zh-HK), #maincol:lang(zh-TW) {
- margin-left: 10em;
-}
-
#lefthalfcol {
float: left;
margin-left: 0em;
margin-right: 0.2em;
}
+
#footer {
clear: both;
width: 100%;
padding-top: 3px;
bottom: 0;
text-align: center;
- margin: 0px;
+ margin: 1em 0 0 0;
- border-top: 1px solid #BFC3DC;
+ border-top: 1px solid #000;
}
#fineprint {
font-size: 0.85em;
}
-.bordertop { border-top: 1px solid #BFC3DC; }
+.bordertop { border-top: 1px solid #000; }
dl.gloss dt {
font-weight: bold;
margin: 0px;
}
-#main {
- background: #bbddff;
- padding: 1em 0; /* have some padding to get rid of collapsed margins */
-}
-
/* classes for cards */
-
.cardleft {
margin: 0 0 1em;
float: left;
/* the next two lines xpand the div to heigth of left inner div */
overflow: auto;
}
-
-div.lefthalf {
- float: left;
- width: 49%;
- border: 0;
- margin: 0;
- padding: 0;
-}
-
-div.righthalf {
- border: 0;
- margin: 0;
- padding: 0;
-}
/* colors for packages, warnings and news in ports */
.warning, dt.new, .no {
color: red; /* FF0000 */
border-style: ridge;
border-collapse: collapse;
}
-table.vote {
- margin: 0 auto;
- border-width: 3px;
- border-color: gray;
- border-style: ridge;
- border-collapse: collapse;
-}
#pcontentsres col, #pcontentsres th, #pdownload th, #pdownload td, table.ridgetable th, table.ridgetable td,
table.reltable td, table.reltable th {
border: 2px #BFC3DC;
table.reltable th {
background-color: #44CCCC;
}
-table.vote th {
- border: 1px solid gray;
- background-color: #DDDDDD;
-}
-table.vote td {
- border: 1px solid gray;
- padding: 4px;
-}
table.reltable tr.odd {
background-color: #FFFFFF;
}
table.reltable tr.even {
background-color: #DDDDDD;
}
-table.stattrans {
- margin: 0 auto;
- width: 95%;
- border: 1px solid black;
- background-color: #cdc9c9;
-}
-table.stattrans th {
- text-align: center;
- padding: 2px;
-}
-table.stattrans td {
- text-align: right;
- padding: 2px;
-}
-table.stattrans tbody th {
- text-align: left;
- font-weight: normal;
-}
-
-/* partners */
-.partnertype {
- background-color: #DD0000;
- padding: 0.2em 0 0.2em 1em;
- color: #FFFFFF;
-
-}
-div.partnerlogo {
- display: table-cell;
- vertical-align: middle;
- text-align: center;
- width: 30%;
-}
-div.partnerdesc {
- display: table-cell;
- font-size: 85%;
-}
-div.cdflash {
- background-color: #E09E86;
- width: 80%;
- margin: auto;
- text-align: center;
-}
-.cdrsync {
- color: #6B1300;
-}
-/* debian installer */
-
-.dierror {
- background-color: #FF6060;
-}
-.dibad {
- background-color: #F7FF60;
-}
-.digood {
- background-color: #7AFF71;
-}
-
-/* useful classes */
-
-th.eventheader {
- background-color: #BBDDFF;
-}
-.center {
- text-align: center;
-}
-.right {
- text-align: right;
-}
-ul.circlelist {
- list-style-type: circle;
-}
-.centerdiv table {
- margin-left: auto;
- margin-right: auto;
-}
-ul.discless {
- list-style-type: none;
-}
-.top, img.ico {
- vertical-align: top;
-}
-img.ico {
- float: left;
- margin: 0 0.2em 0 0;
-}
-img.rightico {
- float: right;
- vertical-align: top;
- margin: 0 0 0 0.2em;
-}
-img.cve {
- vertical-align: -25px;
-}
-.y2kok, .yes {
- color: #00BB00;
-}
-.y2kok2 {
- color: #00BBBB;
-}
-.bluehead {
- color: #0000FF !important;
-}
-span.halfsize {
- font-size: 80%;
-}
-span.ddpbooktitle, span.merchtitle {
- font-size: larger;
-}
-a:link { color: #0000FF; }
-a:visited { color: #800080; }
-a:hover { color: #F000FF; }
-a:active { color: #FF0000; }
-
-.navpara a, col.y2k {
- white-space: nowrap;
- /* this is to keep from breaking at whitespace in anchors */
-}
/* language dependent stuff */
/* quotes */
direction: rtl;
text-align: right;
}
-
-#leftcol, #navbar, #navbar a {
- -moz-border-radius: 15px;
- /* this goes to the end as the css validator does not like it
- will be replaced by border-radius with css3 */
-}
font-size: smaller;
margin-left: 1em;
float: right;
- background-color: #BBDDFF;
- border: thin solid #BFC3DC;
+ background-color: white;
+ color: #5B4832;
+ border: thin solid #5B4832;
padding: 1em .5em;
width: auto;
}
+#pmoreinfo h2 {
+ border-bottom: none;
+ color: #5B4832;
+}
#pmoreinfo h3 {
border-top: thin solid black;
+ border-bottom: none;
+ color: #5B4832;
}
/*
padding: .3em;
border-top: solid gray thin;
border-bottom: solid gray thin;
- background-color: #bdf;
+ background-color: #dbba75;
+ color: #5B4832;
}
#psearchres li {
margin-top: 1em;
padding-left: 1em;
padding-top: 6px;
padding-bottom: 4px;
- width: auto;
height: auto;
text-align: left;
- background: #DF0451;
- color: yellow;
+ background-color: white;
+ color: #5B4832;
+ border-bottom: thin solid #5B4832;
font-size: smaller;
font-weight: bold;
}
margin: 0;
white-space: nowrap;
}
-#pnavbar a {
- color: yellow;
- text-decoration: none;
+#pnavbar a, #pmoreinfo a {
+ color: #5B4832;
}
#pnavbar a:hover {
}
.pvcslink {
}
-#pnavbar, .pconstantnag, #psitewidemsg {
+.pconstantnag, #psitewidemsg {
-moz-border-radius: 15px;
/* this goes to the end as the css validator does not like it
will be replaced by border-radius with css3 */
[%- DEFAULT
charset = 'UTF-8'
- lang = 'en'
+ po_lang = 'en'
+ ddtp_lang = 'en'
- organisation = 'Debian'
- homepage = 'http://www.debian.org/'
- packages_homepage = 'http://packages.debian.net/'
+ organisation = 'Ubuntu'
+ homepage = 'http://www.ubuntu.com/'
+ packages_homepage = 'http://packages.ubuntu.lichtenheld.net/'
searchformurl = packages_homepage
search_url = '/'
tags_url = 'http://debtags.alioth.debian.org/'
bugs_url = 'http://bugs.debian.org/'
+ launchpad_url = 'https://launchpad.net/distros/ubuntu/+source/'
pts_url = 'http://packages.qa.debian.org/'
ddpo_url = 'http://qa.debian.org/developer.php?login='
src_bugs_url = bugs_url _ 'src:'
- mirror_url = 'http://ftp.debian.org/'
- security_mirror = 'security.debian.org'
- security_mirror_url = security_mirror _ '/debian-security'
- security_suite_suffix = '/updates'
- changelogs_url = 'http://packages.debian.org/changelogs/'
+ mirror_url = 'http://archive.ubuntu.com/'
++ security_mirror = 'security.ubuntu.com'
++ security_mirror_url = security_mirror _ '/ubuntu'
++ security_suite_suffix = '-security'
+ changelogs_url = 'http://changelogs.ubuntu.com/changelogs/'
policy_url = 'http://www.debian.org/doc/debian-policy/'
- cn_help_url = homepage _ 'intro/cn'
+# cn_help_url = homepage _ 'intro/cn'
logo = {
url => homepage,
src => '/Pics/openlogo-nd-25.png',
alt => organisation,
}
copyright = {
- url => 'http://www.spi-inc.org/',
- name => 'SPI Inc.',
- years => '1997 - ' _ timestamp.year,
+ url => 'http://www.canonical.com/',
+ name => 'Canonical Ltd.',
+ years => timestamp.year,
}
license = {
- url => homepage _ 'license'
+ url => homepage _ 'legal'
}
trademark = {
name => copyright.name,
url => homepage _ 'trademark'
}
contact = {
- name => g('Debian Web Mailinglist'),
- mail => 'debian-www@lists.debian.org',
- url => homepage _ 'contact',
+ name => 'Frank Lichtenheld',
+ mail => 'frank@lichtenheld.de',
+ url => homepage _ 'support',
}
admin = {
- name => g('%s Webmaster', organisation),
- mail => 'webmaster@debian.org',
+ name => 'Frank Lichtenheld',
+ mail => 'frank@lichtenheld.de',
}
trademarknotes = g('%s is a <a href="%s">trademark</a> of %s', organisation, trademark.url, trademark.name)
-%]
[%-
# possible values for importance: high, normal, low
sitewidemsg = { importance => "high",
- txt => g('Please note that this is an experimental version of <a href="http://packages.debian.org/">packages.debian.org</a>. Errors and obsolete information should be expected') }
+ txt => g('Please note that this is an experimental version of <a href="http://packages.ubuntu.com/">packages.ubuntu.com</a>. Errors and obsolete information should be expected') }
-%]
+ [%# @translators: . = decimal_point , = thousands_sep, see Number::Format %]
+ [%- USE num = Number.Format( decimal_point => g('.'),
+ thousands_sep => g(','),
+ decimal_fill => 1 ) -%]
<p>[% g('Replacing <em>%s</em> with the mirror in question.', mirrors.$archive.europa.0) %]
[% ELSE %]
<pre>
- deb http://security.ubuntu.com/ubuntu [% suite _ "-security" %] main [% section IF section != main_section %]
+ deb [% 'http://' _ security_mirror_url %] [% suite _ security_suite_suffix %] main [% section IF section != main_section %]
</pre>
[%- END %]
[% IF suite == "experimental" %]
<p>[% g('You can download the requested file from the <tt>%s</tt> subdirectory at any of these sites:',
filename.directory) %]</p>
<div class="cardleft">
- [% FOREACH continent IN [ 'north_america', 'south_america', 'asia', 'africa' ] %]
+ [% FOREACH continent IN [ 'north_america', 'south_america', 'asia', 'africa', 'australia' ] %]
[% IF a.$continent %]
<p><em>[% continents.$continent %]</em></p>
<ul>
[% END %]
[% END %]
</div><div class="cardright">
- [% FOREACH continent IN [ 'europa','australia' ] %]
+ [% FOREACH continent IN [ 'europa' ] %]
[% IF a.$continent %]
<p><em>[% continents.$continent %]</em></p>
<ul>
</div>
[% ELSE %]
<p>[% g('You can download the requested file from the <tt>%s</tt> subdirectory at:', filename.directory) %]</p>
- <ul><li><a href="http://security.ubuntu.com/ubuntu/[% filename.full %]">security.ubuntu.com/ubuntu</a></li></ul>
- <p>[% g('Ubuntu security updates are currently officially distributed only via <tt>security.ubuntu.com</tt>.') %]</p>
+ <ul><li><a href="http://[% security_mirror_url %]/[% filename.full %]">[% security_mirror_url %]</a></li></ul>
+ <p>[% g('%s security updates are officially distributed only via <tt>%s</tt>.',
+ organisation, security_mirror) %]</p>
[% END %]
<div id="pdownloadnotes">
<h3>[% g('More information on <kbd>%s</kbd>:', filename.file) %]</h3>
<table id="pdownloadmeta">
- <tr><th>[% g('Exact Size') %]</th> <td class="size">[% g('%s Byte (%s %s)', size, pkgsize, pkgsize_unit) %]</td>
+ <tr><th>[% g('Exact Size') %]</th> <td class="size">[% g('%s Byte (%s %s)', size, num.format_number(pkgsize,1), pkgsize_unit) %]</td>
<tr><th>[% g('MD5 checksum') %]</th> <td><tt>[% md5sum %]</tt></td>
<tr><th>[% g('SHA1 checksum') %]</th> <td><tt>[% sha1 || g('Not Available') %]</tt></td>
<tr><th>[% g('SHA256 checksum') %]</th> <td><tt>[% sha256 || g('Not Available') %]</tt></td>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
- <html lang="[% lang %]">
+ <html lang="[% po_lang %]">
<head>
<title>[% organisation %] -- [% title_tag %]</title>
- <link rev="made" href="[% admin.mail %]">
+ <link rev="made" href="mailto:[% admin.mail %]">
<meta http-equiv="Content-Type" content="text/html; charset=[% charset %]">
<meta name="Author" content="[% admin.name %], [% admin.mail %]">
<meta name="Description" content="[% description %]">
<link href="/debian.css" rel="stylesheet" type="text/css" media="all">
<link href="/packages.css" rel="stylesheet" type="text/css" media="all">
<link href="/packages-site.css" rel="stylesheet" type="text/css" media="all">
+<link href="/ubuntu/ubuntu.css" rel="stylesheet" type="text/css" media="all">
+<link href="/ubuntu/masthead.css" rel="stylesheet" type="text/css" media="all">
[% IF rss_alternate %]
<link rel="alternate" type="application/rss+xml" title="RSS" href="[% rss_alternate %]">
[% END %]
[% sitewidemsg.txt %]
</div>
[%- END -%]
-<div id="header">
- <div id="upperheader">
+ <div id="pageWrapper">
+ <div id="mastWrapper">
+ <div id="masthead">
+ <a class="imageLink"
+ href="[% homepage %]"> </a>
- <div id="logo">
- <!-- very Debian specific use of the logo stuff -->
- <a href="[% logo.url %]"><img src="[% logo.src %]" alt="" /></a>
- <a href="[% logo.url %]"><img src="/Pics/debian-small.png" alt="[% logo.alt %]" width="90" height="31"></a>
-</div> <!-- end logo -->
+ <a class="hiddenStructure"
+ href="[% homepage %]/#documentContent">Skip
+ to content</a>
[%- IF print_search_field %]
[% checked = 'checked="checked"'
selected = 'selected="selected"' %]
+<div id="search">
<form method="GET" action="/search">
<div id="hpacketsearch">
[% IF search_field_values.mode %]<input type="hidden" name="mode" value="[% search_field_values.mode %]">[% END %]
<span style="font-size: 60%"><a href="[% searchformurl %]">[% g('all options') %]</a></span>
</div> <!-- end hpacketsearch -->
</form>
+</div>
[% END %]
-</div> <!-- end upperheader -->
+ <!-- masthead content begin -->
+ <h5 class="hiddenStructure">Sections</h5>
+ <div id="nav">
+ <ul>
+ </ul>
+ </div> <!-- nav -->
+ <!-- masthead content end -->
+ </div> <!-- masthead -->
+ </div> <!-- mastWrapper -->
-<p class="hidecss"><a href="#inner">[% g('skip the navigation') %]</a></p>
+<div class="visualClear"></div>
<div id="pnavbar">
>> <a href="[% homepage %]" title="[% g('%s Homepage', organisation) %]">[% organisation %]</a>
>> <a href="[% packages_homepage %]" title="[% g('%s Packages Homepage', organisation) %]">[% g('Packages') %]</a>
[% END %]
</div> <!-- end navbar -->
-</div> <!-- end header -->
-<div id="outer">
-<div id="inner">
+<div class="inside">
+<div id="content" class="">
+<div class="documentContent" id="region-content">
[%- IF page_title %]
- <h1>[% page_title %]</h1>
+ <h1 class="documentFirstHeading">[% page_title %]</h1>
[%- PROCESS 'html/messages.tmpl' -%]
[% END -%]
nav_arr.push( { prefix=>g('Section:'), title=>g('All packages in this section'), url=>make_url("$subsection/"), name=>subsection } );
nav_arr.push( { prefix=>g('Package:'), name=>pkg } ); -%]
[% desclang = 'en';
- SET desclang = lang IF desc.$lang.long %]
+ SET desclang = po_lang IF desc.$po_lang.long;
+ SET desclang = ddtp_lang IF desc.$ddtp_lang.long %]
[%- PROCESS 'html/head.tmpl'
title_tag = is_source ? g('Details of source package %s in %s', pkg, suite)
: g('Details of package %s in %s', pkg, suite)
navigation = nav_arr
-%]
<!-- show.tmpl -->
- [% PROCESS 'html/menu.inc' %]
+ [% PROCESS 'html/util.inc' %]
[% FOREACH s IN suites %]
[% '<div id="pothers">' IF loop.first %]
[%- IF s == suite -%]
<h2>[% g('Links for %s', pkg) %]</h2>
<h3>[% g('Debian Resources:') %]</h3>
<ul>
- <li><a href="[% launchpad_url _ (is_source ? pkg : src.pkg) _ '/+bugs' | uri %]">[% g('Bug Reports') %]</a></li>
-<li><a href="[% (is_source ? src_bugs_url : bugs_url) _ pkg %]">[% g('Bug Reports') %]</a></li>
-
-[% IF src.pkg -%]
-<li><a href="[% pts_url _ src.pkg %]">[% g('Developer Information (PTS)') %]</a></li>
-[% ELSIF is_source %]
-<li><a href="[% pts_url _ pkg %]">[% g('Developer Information (PTS)') %]</a></li>
-[%- END %]
++<li><a href="[% launchpad_url _ (is_source ? pkg : src.pkg) _ '/+bugs' %]">[% g('Bug Reports') %]</a></li>
[% IF files && (!archive or archive == main_archive or archive == 'security') %]
<li><a href="[% changelogs_url _ files.changelog.path %]">[% g('%s Changelog', organisation) %]</a></li>
[%- ELSE -%]
<h3>[% g('Maintainers:') %]</h3>
[%- END %]
- [%- FOREACH maintainers -%]
+ [%- FOREACH maintainers;
+ mailarchiveurl = '';
+ IF (matches = mail.match('^(.*)@lists\.debian\.org$'));
+ mailarchiveurl = 'http://lists.debian.org/' _ matches.0 _ '/';
+ ELSIF (matches = mail.match('^(.*)@lists\.alioth\.debian\.org$'));
+ mailarchiveurl = 'http://lists.alioth.debian.org/pipermail/' _ matches.0 _ '/';
+ END -%]
[%- '<ul>' IF loop.first -%]
- <li><a href="mailto:[% mail %]">[% name | html %]</a></li>
+ <li><a href="mailto:[% mail %]">[% name | html %]</a>
- (<a href="[% ddpo_url _ mail %]" title="[% g("An overview over the maintainer's packages and uploads") %]">[% g('QA Page') %]</a>
- [%- IF mailarchiveurl %], <a href="[% mailarchiveurl %]" title="[% g('Archive of the Maintainer Mailinglist') %]">[% g('Mail Archive') %]</a>[% END %])
++ [%- IF mailarchiveurl %](<a href="[% mailarchiveurl %]" title="[% g('Archive of the Maintainer Mailinglist') %]">[% g('Mail Archive') %]</a>)[% END %]
+ </li>
[%- '</ul>' IF loop.last -%]
[%- END -%]
IF url %]
<h3>[% g('External Resources:') %]</h3>
<ul>
- <li><a href="[% url | uri %]">[% g('Homepage') %]</a> [[% extract_host(url) %]]</li>
+ <li><a href="[% url | uri %]">[% g('Homepage') %]</a> [[% extract_host(url) | html %]]</li>
</ul>
[% END %]
[% IF desc %]
<div id="pdesctab">
- <div id="pdesc">
[% UNLESS is_virtual %]
+ <div id="pdesc" [% "lang=\"$desclang\"" IF desclang != po_lang %]>
[% IF desc.$desclang.short %]
<h2>[% desc.$desclang.short %]</h2>
<p>[% desc.$desclang.long %]
[% END %]
[% ELSE %]
+ <div id="pdesc">
<p>[% g('This is a <em>virtual package</em>. See the <a href="%s">Debian policy</a> for a <a href="%sch-binary.html#s-virtual_pkg">definition of virtual packages</a>.',
policy_url, policy_url) %]</p>
[% END %]
<div id="ptags"><p>
<a href="[% tags_url %]edit.html?pkg=[% pkg | uri %]">[% g('Tags') %]</a>:
[%- END %]
- [% facet = tag.0;
- facet_name = debtags_voc.$facet;
- tag_id = "$tag.0::$tag.1";
- tag_name = debtags_voc.$tag_id;
+ [% facet = tag.0; lfacet = "$facet-$po_lang";
+ facet_name = debtags_voc.$lfacet;
+ SET facet_name = debtags_voc.$facet UNLESS facet_name;
+ tag_id = "$tag.0::$tag.1"; ltag = "$tag_id-$po_lang";
+ tag_name = debtags_voc.$ltag;
+ SET tag_name = debtags_voc.$tag_id UNLESS tag_name;
%]
[% facet_name _ ': ' UNLESS old_facet && facet == old_facet %]
[% IF tag_name %]
- <a href="/about/debtags#[% string2id(tag_id) %]">[% tag_name %]</a>[% ', ' UNLESS loop.last %]
+ <a href="/about/debtags#[% string2id(tag_id) %]">[% tag_name | html %]</a>[% ', ' UNLESS loop.last %]
[% ELSE %]
[% tag_id %][% ', ' UNLESS loop.last %]
[% END %]
[%- END %]
[% END %]
- [% FOREACH providers %]
+ [% FOREACH p IN providers %]
[% IF loop.first %]<div id="pdeps"><h2>[% g('Packages providing %s', pkg) %]</h2><dl>[% END %]
- <dt>[% IF available %]<a href="[% make_url(name,'','source','') %]">[% name %]</a>[% ELSE %][% name %][% END %]</dt>
- <dd>[% desc %]</dd>
+ <dt>[% IF p.available %]<a href="[% make_url(p.name,'','source','') %]">[% p.name %]</a>[% ELSE; p.name; END %]</dt>
+ [% PROCESS desc_i18n_dd trans_desc=p.trans_desc desc=p.desc %]
[% '</dl></div>' IF loop.last %]
[% END %]
</div> <!-- pdesctab -->
[% END %]
- [% FOREACH binaries %]
+ [% FOREACH b IN binaries %]
[% IF loop.first %]<div id="pbinaries">[% g('The following binary packages are built from this source package:') %]<dl>[% END %]
- <dt>[% IF available %]<a href="[% make_url(name,'','source','') %]">[% name %]</a>[% ELSE %][% name %][% END %]</dt>
- <dd>[% desc %]</dd>
+ <dt>[% IF b.available %]<a href="[% make_url(b.name,'','source','') %]">[% b.name %]</a>[% ELSE; b.name; END %]</dt>
+ [% PROCESS desc_i18n_dd trans_desc=b.trans_desc desc=b.desc %]
[% '</dl></div>' IF loop.last %]
[% END %]
[% '<li>' UNLESS is_old_pkgs %]
[% FOREACH alternatives %]
[% '<dl>' IF loop.first %]
- <dt>[% IF loop.first %]<span class="nonvisual">[% id %]:</span>[% ELSE %]or [% END %]
+ <dt>[% IF loop.first %]<span class="nonvisual">[% id %]:</span>[% ELSE %][% g('or ') %][% END %]
[% IF suite %]<a href="[% make_url(name,'','suite',suite,'source','') %]">[% name %]</a>[% ELSE %][% name %][% END %]
[% ' (' _ version _ ')' IF version %]
[% ' [' _ arch_str _ ']' IF arch_str %]</dt>
[%- IF !is_old_pkgs -%]
- <dd>[% desc -%]
+ [% PROCESS desc_i18n_dd no_end_tag=1 trans_desc=trans_desc desc=desc -%]
[%- IF providers.pkgs.size > 0 -%]
[% IF providers.also;
'<br>' _ g('also a virtual package provided by');
g('virtual package provided by');
END; %]
[% js_id = name %]
- <span id="js_[% js_id %]" class="p_js_elem"></span> <span id="html_[% js_id %]">[% FOREACH provider IN providers.pkgs %]<a href="[% make_url(provider,'','suite',suite,'source','') %]">[% provider %]</a>[% ', ' UNLESS loop.last %][% END %]</span>
+ <span id="js_[% js_id %]" class="p_js_elem"></span> <span id="html_[% js_id %]">[% FOREACH provider IN providers.pkgs.sort %]<a href="[% make_url(provider,'','suite',suite,'source','') %]">[% provider %]</a>[% ', ' UNLESS loop.last %][% END %]</span>
[% IF providers.pkgs.size > 10 %]
- <script type="text/javascript">init_toggle_elem("[% js_id %]",[% g('%u providing packages', providers.pkgs.size) %]</script>
+ <script type="text/javascript">init_toggle_elem("[% js_id %]","[% g('show %u providing packages', providers.pkgs.size) %]", "[% g('hide %u providing packages', providers.pkgs.size) %]")</script>
[% END %]
[% END %]
</dd>
[%- END %]
<tr>
- [% download_url = pkg _ '/' _ d.arch _ '/download'
- filelist_url = pkg _ '/' _ d.arch _ '/filelist' %]
- <th><a href="[% make_url(download_url) | uri %]">[% d.arch %]</a>
+ [% download_url = pkg _ '/download'
+ filelist_url = pkg _ '/filelist' %]
+ <th><a href="[% make_url(download_url,'','arch',d.arch) %]">[% d.arch %]</a>
[%- SET a = d.archive; IF mirrors.$a.unofficial_port %] <strong>[% g('(unofficial port)') %]</strong>[% END %]</th>
[% vnorm = d.version.replace( '\+b\d+$', '' ); vlatest = version.replace( '\+b\d+$', '' );
vup = vnorm.replace( '-[^-]+$', '' ); vuplatest = vlatest.replace( '-[^-]+$', '' );
version_class = 'vold';
END %]
[% "<td class='$version_class'>$d.version</td>" IF versions.multiple %]
- <td class="size">[% g('%.1f kB', d.pkgsize) %]</td><td class="size">[% g('%u kB', d.instsize) %]</td>
+ <td class="size">[% g('%s kB', num.format_number(d.pkgsize,1)) %]</td><td class="size">[% g('%s kB', d.instsize) %]</td>
<td>
[% IF d.contents_avail %]
- [<a href="[% make_url(filelist_url) | uri %]">[% g('list of files') %]</a>]
+ [<a href="[% make_url(filelist_url,'','arch',d.arch) %]">[% g('list of files') %]</a>]
[% ELSE %]
[% g('no current information') %]
[% END %]
<tr>
<td><a href="[% server _ path %]">[% filename %]</a></td>
- <td>[% g('%.1f kB', size) %]</td>
+ <td>[% g('%s kB', num.format_number(size,1)) %]</td>
<td class="md5sum">[% md5sum %]</td>
</tr>