function sel(m)
{
window.opener.ifield.value = m;
window.close();
return false;
}
EOF
if ($in{'search'}) {
# Search for modules matching some name
print "",&text('cpan_match',
"".&html_escape($in{'search'}).""),"\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([
"".
"
",
"".
&html_escape($name)."",
&html_escape($m->{'ver'}),
]);
$matches++;
}
}
print &ui_columns_end();
print "$text{'cpan_none'}
\n" if (!$matches);
}
else {
# Show module tree
if (@sel) {
print "",&text('cpan_sel', join("::",@sel)),"
\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([
"
",
"..",
""
]);
}
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 "
\n";
if ($m->{'cat'}) {
# A category which can be opened
print &ui_columns_row([
"".
"
",
&ui_link("cpan.cgi?$pars",&html_escape($name)),
""
]);
}
else {
# A module
print &ui_columns_row([
"".
"
",
"".
&html_escape($name)."",
&html_escape($m->{'ver'}),
], [ undef, undef, "align=right" ]);
}
}
print &ui_columns_end();
}
&popup_footer();