Skip to content

Commit

Permalink
ui-lib conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
jcameron committed Dec 31, 2007
1 parent 665e22c commit 91fdd9d
Show file tree
Hide file tree
Showing 8 changed files with 188 additions and 155 deletions.
2 changes: 2 additions & 0 deletions cpan/CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,5 @@ When installing a Perl module from CPAN and it already exists in an operating sy
Added Module Config option to not install modules from APT or YUM.
---- Changes since 1.360 ----
The module is now available when running Webmin inside a Solaris zone, but only if Perl is not shared with the global zone.
---- Changes since 1.390 ----
Converted all code to use the new Webmin UI library, for a more consistent look.
76 changes: 45 additions & 31 deletions cpan/cpan.cgi
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,11 @@ while(<LIST>) {
}
close(LIST);

# Display the current level of modules
$bgcolor = defined($gconfig{'cs_page'}) ? $gconfig{'cs_page'} : "ffffff";
$link = defined($gconfig{'cs_link'}) ? $gconfig{'cs_link'} : "0000ee";
$text = defined($gconfig{'cs_text'}) ? $gconfig{'cs_text'} : "000000";
# Show page header and selection javascript
@sel = split(/\0/, $in{'sel'});
&PrintHeader();
&popup_header($text{'cpan_title'});

print <<EOF;
<html>
<head><title>$text{'cpan_title'}</title>
<script>
function sel(m)
{
Expand All @@ -56,23 +52,25 @@ 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>$in{'search'}</tt>"),"</b><p>\n";
print "<table width=100% cellpadding=1 cellspacing=1>\n";
print &ui_columns_start(undef, 100, 1);
foreach $m (@mods) {
if (!$m->{'cat'} && $m->{'full'} =~ /$in{'search'}/i) {
$name = join("::",@{$m->{'name'}});
print "<tr>\n";
print "<td><a href='' onClick='sel(\"$name\")'><img src=images/mod.gif border=0></a></td>\n";
print "<td><a href='' onClick='sel(\"$name\")'>",
&html_escape($name),"</a></td>\n";
print "<td align=right>",&html_escape($m->{'ver'}),"</td>\n";
print "</tr>\n";
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 "</table>\n";
print &ui_columns_end();
print "$text{'cpan_none'}<br>\n" if (!$matches);
}
else {
Expand All @@ -82,17 +80,23 @@ else {
}
else {
# Show search form
print "<form action=cpan.cgi>\n";
print "<input type=submit value='$text{'cpan_search'}'>\n";
print "<input name=search size=15></form>\n";
print &ui_form_start("cpan.cgi");
print &ui_submit($text{'cpan_search'});
print &ui_textbox("search", undef, 20),&ui_form_end();
}
print "<table width=100% cellpadding=1 cellspacing=1>\n";
print &ui_columns_start(undef, 100, 1);
if (@sel) {
# Link to up one level
local @up = @sel[0..$#sel-1];
print "<tr>\n";
print "<td><a href='cpan.cgi?",join("&",map { "sel=$_" } @up),"#",join("::",@sel),"'><img src=images/cat.gif border=0></a></td>\n";
print "<td><a href='cpan.cgi?",join("&",map { "sel=$_" } @up),"#",join("::",@sel),"'>..</a></td>\n";
print "</tr>\n";
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++) {
Expand All @@ -103,17 +107,27 @@ else {
$pars = join("&",map { "sel=$_" } @{$m->{'name'}});
print "<tr>\n";
if ($m->{'cat'}) {
print "<td><a name=$name><a href='cpan.cgi?$pars'><img src=images/cat.gif border=0></a></td>\n";
print "<td><a href='cpan.cgi?$pars'>",&html_escape($name),"</a></td>\n";
# 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>",
"<a href='cpan.cgi?$pars'>".
&html_escape($name)."</a>",
""
]);
}
else {
print "<td><a href='' onClick='sel(\"$name\")'><img src=images/mod.gif border=0></a></td>\n";
print "<td><a href='' onClick='sel(\"$name\")'>",&html_escape($name),"</a></td>\n";
print "<td align=right>",&html_escape($m->{'ver'}),"</td>\n";
# 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 "</tr>\n";
}
print &ui_columns_end();
}
print "</table>\n";
print "</body></html>\n";
&popup_footer();

98 changes: 47 additions & 51 deletions cpan/download.cgi
Original file line number Diff line number Diff line change
Expand Up @@ -253,85 +253,81 @@ foreach $c (@cpan) {
}

# Display install options
print "<p><form action=install.cgi>\n";
print "<input type=hidden name=source value='$in{'source'}'>\n";
print "<input type=hidden name=need_unlink value='$need_unlink'>\n";
print "<p>\n";
print &ui_form_start("install.cgi");
print &ui_hidden("source", $in{'source'});
print &ui_hidden("need_unlink", $need_unlink);
foreach $pfile (@pfile) {
print "<input type=hidden name=pfile value='$pfile'>\n";
print &ui_hidden("pfile", $pfile);
}
foreach $m (@mods) {
print "<input type=hidden name=mod value='$m'>\n";
print &ui_hidden("mod", $m);
}
foreach $v (@vers) {
print "<input type=hidden name=ver value='$v'>\n";
print &ui_hidden("ver", $v);
}
foreach $d (@dirs) {
print "<input type=hidden name=dir value='$d'>\n";
print &ui_hidden("dir", $d);
}
print "<input type=hidden name=return value='$in{'return'}'>\n";
print "<input type=hidden name=returndesc value='$in{'returndesc'}'>\n";
print "<table border>\n";
print "<tr $tb> <td><b>$text{'download_header'}</b></td> </tr>\n";
print "<tr $cb> <td><table>\n";
print &ui_hidden("return", $in{'return'});
print &ui_hidden("returndesc", $in{'returndesc'});
print &ui_table_start($text{'download_header'}, undef, 2);

print "<tr> <td valign=top><b>",
@mods > 1 ? $text{'download_mods'} : $text{'download_mod'},
"</b></td> <td>";
# Modules being installed
for($i=0; $i<@mods; $i++) {
print &html_escape($mods[$i])," ",&html_escape($vers[$i]),"<br>\n";
$modmsg .= &html_escape($mods[$i])." ".&html_escape($vers[$i])."<br>\n";
}
print "</td> </tr>\n";
print "<tr> <td valign=top><b>$text{'download_src'}</b></td> <td>",
$source,"</td> </tr>\n";
print &ui_table_row(@mods > 1 ? $text{'download_mods'} : $text{'download_mod'},
$modmsg);

# Source
print &ui_table_row($text{'download_src'}, $source);

if (@allreqs) {
print "<tr> <td valign=top><b>$text{'download_pres'}</b></td> <td>",
join(" ", map { $needreqs{$_} ? "<i>$_</i>" : "<tt>$_</tt>" } @allreqs);
# Pre-requisited
@needreqs = grep { $needreqs{$_} } @allreqs;
foreach $n (@needreqs) {
print "<input type=hidden name=needreq value='$n'>\n";
print &ui_hidden("needreq", $n);
}
if (@needreqs) {
print " (".&text('download_missing', scalar(@needreqs)).")";
$nmsg = " (".&text('download_missing', scalar(@needreqs)).")";
}
else {
print " ($text{'download_nomissing'})";
$nmsg = " ($text{'download_nomissing'})";
}
print "</td> </tr>\n";
print &ui_table_row($text{'download_pres'},
join(" ", map { $needreqs{$_} ? "<i>$_</i>" : "<tt>$_</tt>" }
@allreqs).$nmsg);
}

print "<tr> <td><b>$text{'download_act'}</b></td> <td><select name=act>\n";
# Install mode
$in{'mode'} = 3 if ($in{'mode'} eq '');
printf "<option value=0 %s> $text{'download_m'}\n",
$in{'mode'} == 0 ? "selected" : "";
printf "<option value=1 %s> $text{'download_mt'}\n",
$in{'mode'} == 1 ? "selected" : "";
printf "<option value=2 %s> $text{'download_mi'}\n",
$in{'mode'} == 2 ? "selected" : "";
printf "<option value=3 %s> $text{'download_mti'}\n",
$in{'mode'} == 3 ? "selected" : "";
print "</select></td> </tr>\n";
print &ui_table_row($text{'download_act'},
&ui_select("act", $in{'mode'},
[ [ 0, $text{'download_m'} ],
[ 1, $text{'download_mt'} ],
[ 2, $text{'download_mi'} ],
[ 3, $text{'download_mti'} ] ]));

print "<tr> <td><b>$text{'download_args'}</b></td>\n";
print "<td>",&ui_textbox("args", $config{'def_args'}, 40),"</td> </tr>\n";
# Command-line args to Makefile.PL
print &ui_table_row($text{'download_args'},
&ui_textbox("args", $config{'def_args'}, 40));

print "<tr> <td valign=top><b>$text{'download_envs'}</b></td>\n";
print "<td><table border> <tr $tb> <td><b>$text{'download_name'}</b></td> ",
"<td><b>$text{'download_value'}</b></td> </tr>\n";
# Table of environment variables
$etable = &ui_columns_start([ $text{'download_name'},
$text{'download_value'} ]);
for($i=0; $i<4; $i++) {
print "<tr $cb>\n";
print "<td><input name=name_$i size=15></td>\n";
print "<td><input name=value_$i size=25></td>\n";
$etable .= &ui_columns_row([ &ui_textbox("name_$i", undef, 15),
&ui_textbox("value_$i", undef, 30) ]);
}
print "</table></td> </tr>\n";
$etable .= &ui_columns_end();
print &ui_table_row($text{'download_envs'}, $etable);

print "</table></td></tr></table>\n";
print "<input type=submit value='$text{'download_cont'}'>\n";
if (@needreqs && $in{'source'} == 3) {
print "&nbsp;" x 2;
print "<input type=submit name=need value='$text{'download_need'}'>\n";
}
print "</form>\n";
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'download_cont'} ],
@needreqs && $in{'source'} == 3 ?
( [ "need", $text{'download_need'} ] ) : ( )
]);

&ui_print_footer("", $text{'index_return'});

Expand Down
70 changes: 33 additions & 37 deletions cpan/edit_mod.cgi
Original file line number Diff line number Diff line change
Expand Up @@ -16,70 +16,66 @@ $midx = $in{'midx'} ? $in{'midx'} : 0;

&ui_print_header(undef, $text{'edit_title'}, "");

print "<table border width=100%>\n";
print "<tr $tb> <td><b>$text{'edit_header'}</b></td> </tr>\n";
print "<tr $cb> <td><table width=100%>\n";
print &ui_table_start($text{'edit_header'}, "width=100%", 4);

# Module name and version
@m = @{$mod->{'mods'}};
($desc, $ver) = &module_desc($mod, $midx);
print "<tr> <td><b>$text{'edit_mod'}</b></td>\n";
print "<td>$m[$midx] $ver</td>\n";
print &ui_table_row($text{'edit_mod'}, "$m[$midx] $ver");

print "<td><b>$text{'edit_desc'}</b></td>\n";
print "<td>",$desc ? &html_escape($desc) : $text{'edit_none'},"</td> </tr>\n";
# Description
print &ui_table_row($text{'edit_desc'},
$desc ? &html_escape($desc) : $text{'edit_none'});

print "<tr> <td><b>$text{'edit_date'}</b></td>\n";
print "<td nowrap>$mod->{'date'}</td>\n";
# Install date
print &ui_table_row($text{'edit_date'}, $mod->{'date'});

print "<td><b>$text{'edit_file'}</b></td>\n";
print "<td>$mod->{'files'}->[$midx]</td> </tr>\n";
# Main file
print &ui_table_row($text{'edit_file'}, $mod->{'files'}->[$midx]);

print "<tr> <td><b>$text{'edit_method'}</b></td>\n";
print "<td>",$mod->{'pkg'} ?
&text('edit_'.$mod->{'pkgtype'}, "<tt>$mod->{'pkg'}</tt>") :
$text{'edit_manual'},"</td>\n";
print "</tr>\n";
# Install method (RPM or whatever)
print &ui_table_row($text{'edit_method'},
$mod->{'pkg'} ? &text('edit_'.$mod->{'pkgtype'}, "<tt>$mod->{'pkg'}</tt>")
: $text{'edit_manual'});

if ($midx == $mod->{'master'} && @m > 1) {
print "<tr> <td valign=top><b>$text{'edit_subs'}</b></td>\n";
print "<td colspan=3>";
# Sub-modules
@links = ( );
for($i=0; $i<@m; $i++) {
push(@links, "<a href='edit_mod.cgi?idx=$in{'idx'}&midx=$i&name=$in{'name'}'>$m[$i]</a>") if ($i != $mod->{'master'});
}
print &ui_links_row(\@links);
print "</td> </tr>\n";
print &ui_table_row($text{'edit_subs'}, &ui_links_row(\@links), 3);
}

print "</table></td></tr></table>\n";
print &ui_table_end();

print "<table width=100%> <tr>\n";
# Un-install form
print "<table> <tr>\n";
if ($midx == $mod->{'master'} && !$mod->{'noremove'}) {
print "<form action=uninstall.cgi><td>\n";
print "<input type=hidden name=idx value='$in{'idx'}'>\n";
print "<input type=submit value='$text{'edit_uninstall'}'>\n";
print "</td></form>\n";
print &ui_form_start("uninstall.cgi");
print &ui_hidden("idx", $in{'idx'});
print "<td>",&ui_submit($text{'edit_uninstall'}),"</td>\n";
print &ui_form_end();
}

# Upgrade form
if ($midx == $mod->{'master'} && !$mod->{'noupgrade'}) {
print "<form action=download.cgi><td align=right>\n";
print "<input type=hidden name=cpan value='$mod->{'mods'}->[0]'>\n";
print "<input type=hidden name=source value=3>\n";
print "<input type=submit value='$text{'edit_upgrade'}'>\n";
print "</td></form>\n";
print &ui_form_start("download.cgi");
print &ui_hidden("cpan", $mod->{'mods'}->[0]);
print &ui_hidden("source", 3);
print "<td>",&ui_submit($text{'edit_upgrade'}),"</td>\n";
print &ui_form_end();
}
print "</table>\n";
print "<br>\n";

# Module documentation
open(DOC, "$perl_doc -t '$m[$midx]' 2>/dev/null |");
while(<DOC>) { $doc .= $_; }
close(DOC);
if ($doc =~ /\S/) {
print "<table border width=100%>\n";
print "<tr $tb> <td><b>$text{'edit_header2'}</b></td> </tr>\n";
print "<tr $cb> <td><pre>";
print &html_escape($doc);
print "</pre></td></tr></table><br>\n";
print &ui_table_start($text{'edit_header2'}, "width=100%", 2);
print &ui_table_row(undef, "<pre>".&html_escape($doc)."</pre>", 2);
print &ui_table_end();
}

&ui_print_footer($midx != $mod->{'master'} ?
Expand Down
Loading

0 comments on commit 91fdd9d

Please sign in to comment.