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