1#!/usr/local/bin/perl
2# edit_mod.cgi
3# Display the details and documentation of a perl module
4
5require './cpan-lib.pl';
6&ReadParse();
7if ($in{'name'}) {
8	@mods = &list_perl_modules($in{'name'});
9	$mod = $mods[0];
10	}
11else {
12	@mods = &list_perl_modules($in{'name'});
13	$mod = $mods[$in{'idx'}];
14	}
15$midx = $in{'midx'} ? $in{'midx'} : 0;
16
17&ui_print_header(undef, $text{'edit_title'}, "");
18
19print &ui_table_start($text{'edit_header'}, "width=100%", 4);
20
21# Module name and version
22@m = @{$mod->{'mods'}};
23($desc, $ver) = &module_desc($mod, $midx);
24print &ui_table_row($text{'edit_mod'}, "$m[$midx] $ver");
25
26# Description
27print &ui_table_row($text{'edit_desc'},
28	$desc ? &html_escape($desc) : $text{'edit_none'}, 2);
29
30# Install date
31print &ui_table_row($text{'edit_date'}, $mod->{'date'});
32
33# Main file
34print &ui_table_row($text{'edit_file'}, $mod->{'files'}->[$midx]);
35
36# Install method (RPM or whatever)
37print &ui_table_row($text{'edit_method'},
38    $mod->{'pkg'} ? &text('edit_'.$mod->{'pkgtype'}, "<tt>$mod->{'pkg'}</tt>")
39		  : $text{'edit_manual'});
40
41if ($midx == $mod->{'master'} && @m > 1) {
42	# Sub-modules
43	@links = ( );
44	for($i=0; $i<@m; $i++) {
45		push(@links, &ui_link("edit_mod.cgi?idx=$in{'idx'}&midx=$i&name=$in{'name'}","$m[$i]")) if ($i != $mod->{'master'});
46		}
47	print &ui_table_row($text{'edit_subs'}, &ui_links_row(\@links), 3);
48	}
49
50print &ui_table_end();
51
52# Un-install form
53print "<table> <tr>\n";
54if ($midx == $mod->{'master'} && !$mod->{'noremove'}) {
55	print &ui_form_start("uninstall.cgi");
56	print &ui_hidden("idx", $in{'idx'});
57	print "<td>",&ui_submit($text{'edit_uninstall'}),"</td>\n";
58	print &ui_form_end();
59	}
60
61# Upgrade form
62if ($midx == $mod->{'master'} && !$mod->{'noupgrade'}) {
63	print &ui_form_start("download.cgi");
64	print &ui_hidden("cpan", $mod->{'mods'}->[0]);
65	print &ui_hidden("source", 3);
66	print "<td>",&ui_submit($text{'edit_upgrade'}),"</td>\n";
67	print &ui_form_end();
68	}
69print "</table>\n";
70
71# Module documentation
72open(DOC, "$perl_doc -t '$m[$midx]' 2>/dev/null |");
73while(<DOC>) { $doc .= $_; }
74close(DOC);
75if ($doc =~ /\S/) {
76	print &ui_table_start($text{'edit_header2'}, "width=100%", 2);
77	print &ui_table_row(undef, "<pre>".&html_escape($doc)."</pre>", 2);
78	print &ui_table_end();
79	}
80
81&ui_print_footer($midx != $mod->{'master'} ?
82	 ( "edit_mod.cgi?idx=$in{'idx'}&midx=$mod->{'master'}&name=$in{'name'}",
83	   $text{'edit_return'} ) : ( ),
84	"", $text{'index_return'});
85
86