3 # Do the actual installation of a package from a file
5 require './software-lib.pl';
7 &error_setup(&text('do_err', $in{'package'}));
9 if ($show_install_progress) {
10 &ui_print_unbuffered_header(undef, $text{'do_title'}, "");
13 &ui_print_header(undef, $text{'do_title'}, "");
16 @packages = &file_packages($in{'file'});
17 if (defined(&install_packages) && @packages > 1) {
18 # Can install everything in one hit
20 $error = &install_packages($in{'file'}, \%in);
22 if ($error) { &install_error($error); }
23 if ($in{'need_unlink'}) { &unlink_file($in{'file'}); }
25 foreach $p (@packages) {
26 # Display package details
27 ($package, $desc) = split(/\s+/, $p, 2);
28 @pinfo = &show_package_info($package);
32 $n = &check_files($package);
33 for($i=0; $i<$n; $i++) {
34 push(@grid, &html_escape($files{$i,'path'}));
36 print &ui_grid_table(\@grid, 2, 100, undef, undef,
38 &list_packages($package);
39 &webmin_log('install', 'package', $package,
40 { 'desc' => $packages{0,'desc'},
41 'class' => $packages{0,'class'} });
45 # Must install and show one by one
46 foreach $p (@packages) {
48 print &ui_hr() if ($p ne $packages[0]);
49 ($package, $desc) = split(/\s+/, $p, 2);
51 if ($show_install_progress) {
53 $error = &install_package(
54 $in{'file'}, &html_escape($package), \%in, 1);
58 $error = &install_package(
59 $in{'file'}, &html_escape($package), \%in);
62 if ($error) { &install_error($error); }
63 if ($in{'need_unlink'}) { &unlink_file($in{'file'}); }
66 @pinfo = &show_package_info($package);
68 # Show files in package, if possible
69 $n = &check_files($package);
72 for($i=0; $i<$n; $i++) {
73 push(@grid, &html_escape($files{$i,'path'}));
75 print &ui_grid_table(\@grid, 2, 100, undef, undef,
78 &list_packages($package);
79 &webmin_log('install', 'package', $package,
80 { 'desc' => $packages{0,'desc'},
81 'class' => $packages{0,'class'} });
85 &ui_print_footer("", $text{'index_return'});
89 print "<b>",&text('do_efailed', $error),"</b><p>\n";
90 print $text{'do_efailedmsg1'},"<p>\n";
91 if ($in{'need_unlink'}) {
92 print &text('do_efailedmsg2',
93 "delete_file.cgi?file=".
94 &urlize($in{'file'})),"<p>\n";
97 &ui_print_footer("", $text{'index_return'});