#!/usr/bin/perl # cpan.cgi # Display known perl modules and categories require './cpan-lib.pl'; &ReadParse(); # re-fetch modules list if non-existant or it timeout has expired @st = $packages_file; $now = time(); if (!-r $packages_file || $st[9]+$config{'refresh_days'}*24*60*60 < $now) { &download_packages_file(); } # Read the modules list open(LIST, "gunzip -c $packages_file |"); while(<LIST>) { s/\r|\n//g; if ($_ eq '') { $found_blank++; } elsif ($found_blank && /^(\S+)\s+(\S+)\s+(.*)/) { #next if ($donefile{$3}++); $mod = $1; $ver = $2; next if ($mod eq 'about'); local @mod = split(/::/, $mod); if (@mod > 1) { local @cat = @mod[0 .. $#mod-1]; if (!$donecat{join("::", @cat)}++) { push(@mods, { 'name' => \@cat, 'cat' => 1 } ); } } push(@mods, { 'name' => \@mod, 'full' => $mod, 'ver' => $ver eq 'undef' ? '' : $ver } ); } } close(LIST); # Show page header and selection javascript @sel = grep { /^[a-z0-9\-\_\:\.]+$/i } split(/\0/, $in{'sel'}); &popup_header($text{'cpan_title'}); print <<EOF; <script> function sel(m) { window.opener.ifield.value = m; window.close(); return false; } </script> </head><body bgcolor=#$bgcolor link=#$link vlink=#$link text=#$text> EOF if ($in{'search'}) { # Search for modules matching some name print "<b>",&text('cpan_match', "<tt>".&html_escape($in{'search'})."</tt>"),"</b><p>\n"; print &ui_columns_start(undef, 100, 1); foreach $m (@mods) { if (!$m->{'cat'} && $m->{'full'} =~ /\Q$in{'search'}\E/i) { $name = join("::",@{$m->{'name'}}); print &ui_columns_row([ "<a href='' onClick='sel(\"$name\")'>". "<img src=images/mod.gif border=0></a>", "<a href='' onClick='sel(\"$name\")'>". &html_escape($name)."</a>", &html_escape($m->{'ver'}), ]); $matches++; } } print &ui_columns_end(); print "$text{'cpan_none'}<br>\n" if (!$matches); } else { # Show module tree if (@sel) { print "<b>",&text('cpan_sel', join("::",@sel)),"</b><p>\n"; } else { # Show search form print &ui_form_start("cpan.cgi"); print &ui_submit($text{'cpan_search'}); print &ui_textbox("search", undef, 20),&ui_form_end(); } print &ui_columns_start(undef, 100, 1); if (@sel) { # Link to up one level local @up = @sel[0..$#sel-1]; print &ui_columns_row([ "<a href='cpan.cgi?". join("&",map { "sel=$_" } @up),"#",join("::",@sel). "'><img src=images/cat.gif border=0></a>", "<a href='cpan.cgi?". join("&",map { "sel=$_" } @up)."#". join("::",@sel)."'>..</a>", "" ]); } MOD: foreach $m (@mods) { for($i=0; $i<@sel; $i++) { next MOD if ($sel[$i] ne $m->{'name'}->[$i]); } next if (scalar(@sel) != scalar(@{$m->{'name'}}-1)); $name = join("::",@{$m->{'name'}}); $pars = join("&",map { "sel=$_" } @{$m->{'name'}}); print "<tr>\n"; if ($m->{'cat'}) { # A category which can be opened print &ui_columns_row([ "<a name=$name><a href='cpan.cgi?$pars'>". "<img src=images/cat.gif border=0></a>", &ui_link("cpan.cgi?$pars",&html_escape($name)), "" ]); } else { # A module print &ui_columns_row([ "<a href='' onClick='sel(\"$name\")'>". "<img src=images/mod.gif border=0></a>", "<a href='' onClick='sel(\"$name\")'>". &html_escape($name)."</a>", &html_escape($m->{'ver'}), ], [ undef, undef, "align=right" ]); } } print &ui_columns_end(); } &popup_footer();
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 1.88 KB | 0644 |
|
cgi_args.pl | File | 124 B | 0755 |
|
config | File | 153 B | 0644 |
|
config-solaris | File | 202 B | 0644 |
|
config.info | File | 442 B | 0644 |
|
config.info.ca | File | 539 B | 0644 |
|
config.info.cs | File | 494 B | 0644 |
|
config.info.de | File | 544 B | 0644 |
|
config.info.es | File | 351 B | 0644 |
|
config.info.fr | File | 504 B | 0644 |
|
config.info.hr | File | 0 B | 0644 |
|
config.info.hu | File | 72 B | 0644 |
|
config.info.it | File | 517 B | 0644 |
|
config.info.ja | File | 611 B | 0644 |
|
config.info.ko | File | 457 B | 0644 |
|
config.info.ms | File | 473 B | 0644 |
|
config.info.nl | File | 476 B | 0644 |
|
config.info.no | File | 459 B | 0644 |
|
config.info.pl | File | 505 B | 0644 |
|
config.info.ru | File | 292 B | 0644 |
|
config.info.sv | File | 76 B | 0644 |
|
config.info.uk | File | 305 B | 0644 |
|
config.info.zh | File | 244 B | 0644 |
|
config.info.zh_TW | File | 224 B | 0644 |
|
cpan-lib.pl | File | 11.04 KB | 0755 |
|
cpan.cgi | File | 3.36 KB | 0755 |
|
delete_file.cgi | File | 312 B | 0755 |
|
download.cgi | File | 10.56 KB | 0755 |
|
edit_mod.cgi | File | 2.35 KB | 0755 |
|
index.cgi | File | 4.28 KB | 0755 |
|
install.cgi | File | 3.61 KB | 0755 |
|
module.info | File | 160 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 127 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 178 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 185 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 201 B | 0644 |
|
module.info.ca | File | 124 B | 0644 |
|
module.info.ca.auto | File | 13 B | 0644 |
|
module.info.cs | File | 21 B | 0644 |
|
module.info.cs.auto | File | 122 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 129 B | 0644 |
|
module.info.de | File | 126 B | 0644 |
|
module.info.de.auto | File | 13 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 216 B | 0644 |
|
module.info.es | File | 32 B | 0644 |
|
module.info.es.auto | File | 104 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 134 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 224 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 114 B | 0644 |
|
module.info.fr | File | 28 B | 0644 |
|
module.info.fr.auto | File | 115 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 155 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 134 B | 0644 |
|
module.info.hu | File | 21 B | 0644 |
|
module.info.hu.auto | File | 121 B | 0644 |
|
module.info.it | File | 20 B | 0644 |
|
module.info.it.auto | File | 107 B | 0644 |
|
module.info.ja | File | 29 B | 0644 |
|
module.info.ja.auto | File | 171 B | 0644 |
|
module.info.ko | File | 20 B | 0644 |
|
module.info.ko.auto | File | 110 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 140 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 121 B | 0644 |
|
module.info.ms | File | 109 B | 0644 |
|
module.info.ms.auto | File | 13 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 126 B | 0644 |
|
module.info.nl | File | 28 B | 0644 |
|
module.info.nl.auto | File | 114 B | 0644 |
|
module.info.no | File | 21 B | 0644 |
|
module.info.no.auto | File | 109 B | 0644 |
|
module.info.pl | File | 111 B | 0644 |
|
module.info.pl.auto | File | 13 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 132 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 141 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 127 B | 0644 |
|
module.info.ru | File | 26 B | 0644 |
|
module.info.ru.auto | File | 165 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 149 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 112 B | 0644 |
|
module.info.sv | File | 21 B | 0644 |
|
module.info.sv.auto | File | 101 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 226 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 139 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 185 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 214 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 164 B | 0644 |
|
module.info.zh | File | 20 B | 0644 |
|
module.info.zh.auto | File | 93 B | 0644 |
|
module.info.zh_TW | File | 22 B | 0644 |
|
module.info.zh_TW.auto | File | 99 B | 0644 |
|
postinstall.pl | File | 239 B | 0755 |
|
uninstall.cgi | File | 1.16 KB | 0755 |
|
uninstall_mods.cgi | File | 1.33 KB | 0755 |
|