ui-lib.pl re-write
authorJamie Cameron <jcameron@webmin.com>
Fri, 28 Dec 2007 01:21:11 +0000 (01:21 +0000)
committerJamie Cameron <jcameron@webmin.com>
Fri, 28 Dec 2007 01:21:11 +0000 (01:21 +0000)
13 files changed:
proc/CHANGELOG
proc/edit_proc.cgi
proc/freebsd-lib.pl
proc/hpux-lib.pl
proc/lang/en
proc/linux-lib.pl
proc/log_parser.pl
proc/macos-lib.pl
proc/openbsd-lib.pl
proc/osf-lib.pl
proc/renice_proc.cgi
proc/sysv-lib.pl
proc/windows-lib.pl

index b8bc586..d3c7b6b 100644 (file)
@@ -12,3 +12,5 @@ The CPU type and speed is displayed on the processed by CPU usage page, on Linux
 On Virtuozzo systems, the free and used memory shown is determined by the VMs limits.
 ---- Changes since 1.340 ----
 Free and used real and virtual memory is now displayed on Solaris.
+---- Changes since 1.390 ----
+Re-wrote the user interface using the new Webmin UI library, for consistency.
index eb340c0..c524c23 100755 (executable)
@@ -6,123 +6,127 @@ require './proc-lib.pl';
 &ui_print_header(undef, $text{'edit_title'}, "", "edit_proc");
 %pinfo = &process_info($ARGV[0]);
 &can_edit_process($pinfo{'user'}) || &error($text{'edit_ecannot'});
+
+# Check if the process is still running
 if (!%pinfo) {
        print "<b>$text{'edit_gone'}</b> <p>\n";
        &ui_print_footer("", $text{'index_return'});
        exit;
        }
 
-print "<table border width=100%>\n";
-print "<tr $tb> <td><b>$text{'edit_title'}</b></td> </tr>\n";
-print "<tr $cb> <td><table width=100%>\n";
+print &ui_table_start($text{'edit_title'}, "width=100%", 4,
+                     [ "width=20%", "width=30%", "width=20%", "width=30%" ]);
+
+# Full command
+print &ui_table_row($text{'command'},
+       "<tt>".&html_escape($pinfo{args})."</tt>", 3);
+
+# Process ID
+print &ui_table_row($text{'pid'}, $pinfo{pid});
 
-print "<tr> <td width=20% nowrap><b>$text{'command'}</b></td>\n";
-print "     <td colspan=3><font size=+1>",
-      &html_escape($pinfo{args}),"</font></td> </tr>\n";
-print "<tr> <td width=20% nowrap><b>$text{'pid'}</b></td><td>$pinfo{pid}</td>\n";
-print "<td width=20% nowrap><b>$text{'parent'}</b></td>\n";
+# Parent process
 if ($pinfo{ppid}) {
        local %ppinfo = &process_info($pinfo{ppid});
-       print "<td><a href=\"edit_proc.cgi?$ppinfo{pid}\">",
-               &cut_string($ppinfo{'args'}, 30),"</a></td>";
-       }
-else { print "<td>$text{'edit_none'}</td>"; }
-print " </tr>\n";
-print "<tr> <td width=20% nowrap><b>$text{'owner'}</b></td> ",
-      "<td>$pinfo{'user'}</td>\n";
-print "<td width=20% nowrap><b>$text{'cpu'}</b></td> ",
-      "<td>$pinfo{'cpu'}</td> </tr>\n";
-print "<tr> <td width=20% nowrap><b>$text{'size'}</b></td> ",
-      "<td>$pinfo{'size'}</td>\n";
-print "<td width=20% nowrap><b>$text{'runtime'}</b></td> ",
-      "<td>$pinfo{'time'}</td> </tr>\n";
-print "<tr> <td>",&hlink("<b>$text{'nice'}</b>","nice"),"</td>\n";
-print "<form action=renice_proc.cgi>\n";
-print "<input type=hidden name=pid value=$ARGV[0]>\n";
-print "<td colspan=3>\n";
-if (&indexof($pinfo{nice}, @nice_range) < 0) {
-       print $pinfo{nice};
+       print &ui_table_row($text{'parent'},
+               "<a href=\"edit_proc.cgi?$ppinfo{pid}\">".
+                &cut_string($ppinfo{'args'}, 30)."</a>");
        }
 else {
-       print &nice_selector("nice", $pinfo{nice});
-       print &ui_submit($text{'edit_change'});
+       print &ui_table_row($text{'parent'}, $text{'edit_none'});
        }
-print "</td> </form></tr>\n";
-$i = 0;
+
+# Unix user
+print &ui_table_row($text{'owner'}, $pinfo{'user'});
+
+# CPU use
+print &ui_table_row($text{'cpu'}, $pinfo{'cpu'});
+
+# Memory size
+print &ui_table_row($text{'size'}, $pinfo{'size'});
+
+# Run time
+print &ui_table_row($text{'runtime'}, $pinfo{'time'});
+
+# Nice level
+print &ui_form_start("renice_proc.cgi");
+print &ui_hidden("pid", $ARGV[0]);
+print &ui_table_row(&hlink($text{'nice'},"nice"),
+       &indexof($pinfo{nice}, @nice_range) < 0 ? $pinfo{nice} :
+               &nice_selector("nice", $pinfo{nice}).
+               &ui_submit($text{'edit_change'}), 3);
+print &ui_form_end();
+
+# Extra OS-specific info
 foreach $k (keys %pinfo) {
        if ($k =~ /^_/) {
-               if ($i%2 == 0) { print "<tr>\n"; }
-               printf "<td width=20%% nowrap><b>%s</b></td>\n",
-                       $info_arg_map{$k};
-               print "<td>$pinfo{$k}</td>\n";
-               if ($i%2 == 1) { print "<tr>\n"; }
-               $i++;
+               print &ui_table_row($info_arg_map{$k}, $pinfo{$k});
                }
        }
-print "</table></td></tr></table><p>\n";
+print &ui_table_end();
 
 print "<table width=100%><tr>\n";
 if ($access{'simple'}) {
        # Just display buttons for common signals
-       print "<form action=kill_proc.cgi>\n";
-       print "<input type=hidden name=pid value=$pinfo{pid}><td nowrap>\n";
+       print &ui_form_start("kill_proc.cgi");
+       print &ui_hidden("pid", $pinfo{pid});
+       print "<td nowrap>\n";
        foreach $s ('KILL', 'TERM', 'HUP', 'STOP', 'CONT') {
-               printf "<input type=submit value=\"%s\" name=%s>\n",
-                       $text{"kill_".lc($s)}, $s;
+               print &ui_submit($text{"kill_".lc($s)}, $s);
                }
-       print "</td></form>\n";
+       print "</td>\n";
+       print &ui_form_end();
        }
 else {
        # Allow the sending of any signal
-       print "<form action=kill_proc.cgi>\n";
-       print "<td nowrap><input type=hidden name=pid value='$pinfo{'pid'}'>\n";
-       print "<input type=submit value=\"$text{'edit_kill'}\">\n";
-       print "<select name=signal>\n";
-       foreach $s (&supported_signals()) {
-               printf "<option value=\"$s\" %s> $s\n",
-                       $s eq "HUP" ? "selected" : "";
-               }
-       print "</select>";
+       print &ui_form_start("kill_proc.cgi");
+       print &ui_hidden("pid", $pinfo{pid});
+       print "<td nowrap>\n";
+       print &ui_submit($text{'edit_kill'});
+       print &ui_select("signal", "HUP", [ &supported_signals() ]);
 
        print "&nbsp;" x 4;
-       print "<input type=submit name=TERM value='$text{'edit_sigterm'}'>\n";
-       print "<input type=submit name=KILL value='$text{'edit_sigkill'}'>\n";
+       print &ui_submit($text{'edit_sigterm'}, 'TERM');
+       print &ui_submit($text{'edit_sigkill'}, 'KILL');
        print "&nbsp;" x 4;
-       print "<input type=submit name=STOP value='$text{'edit_sigstop'}'>\n";
-       print "<input type=submit name=CONT value='$text{'edit_sigcont'}'>\n";
-       print "</td></form>\n";
+       print &ui_submit($text{'edit_sigstop'}, 'STOP');
+       print &ui_submit($text{'edit_sigcont'}, 'CONT');
+       print "</td>\n";
+       print &ui_form_end();
        }
 
 if ($has_trace_command) {
        # Show button to trace syscalls
-       print "<form action=trace.cgi>\n";
-       print "<input type=hidden name=pid value=$pinfo{'pid'}>\n";
-       print "<td align=right width=10><input type=submit value='$text{'edit_trace'}'>\n";
-       print "</td></form>\n";
+       print &ui_form_start("trace.cgi");
+       print &ui_hidden("pid", $pinfo{pid});
+       print "<td align=right width=10>",
+             &ui_submit($text{'edit_trace'}),"</td>\n";
+       print &ui_form_end();
        }
 
 if ($has_lsof_command) {
        # Show button to display currently open files
-       print "<form action=open_files.cgi>\n";
-       print "<input type=hidden name=pid value=$pinfo{'pid'}>\n";
-       print "<td align=right width=10><input type=submit value='$text{'edit_open'}'>\n";
-       print "</td></form>\n";
+       print &ui_form_start("open_files.cgi");
+       print &ui_hidden("pid", $pinfo{pid});
+       print "<td align=right width=10>",
+             &ui_submit($text{'edit_open'}),"</td></form>\n";
+       print &ui_form_end();
        }
-
 print "</tr></table><p>\n";
 
+# Sub-processes table
 @sub = grep { $_->{'ppid'} == $pinfo{pid} } &list_processes();
 if (@sub) {
-       print "<table border width=100%>\n";
-       print "<tr $tb> <td><b>$text{'edit_sub'}</b></td> </tr>\n";
-       print "<tr $cb> <td><table>\n";
+       print &ui_columns_start([ $text{'edit_subid'},
+                                 $text{'edit_subcmd'} ], 100);
        @sub = sort { $a->{'pid'} <=> $b->{'pid'} } @sub;
        foreach $s (@sub) {
                local $p = $s->{'pid'};
-               print "<tr> <td><a href=\"edit_proc.cgi?$p\">$p</a></td>\n";
-               print "<td>",&cut_string($s->{args}, 80),"</td> </tr>\n";
+               print &ui_columns_row([
+                       "<a href=\"edit_proc.cgi?$p\">$p</a>",
+                       &cut_string($s->{args}, 80),
+                       ]);
                }
-       print "</table></td></tr></table><p>\n";
+       print &ui_columns_end();
        }
 
 &ui_print_footer("", $text{'index_return'});
index 3cc42fe..c84735a 100644 (file)
@@ -36,7 +36,7 @@ return @plist;
 sub renice_proc
 {
 return undef if (&is_readonly_mode());
-$out = `renice $_[1] -p $_[0] 2>&1`;
+local $out = &backquote_logged("renice $_[1] -p $_[0] 2>&1");
 if ($?) { return $out; }
 return undef;
 }
index 3dfaed7..c08b3a0 100644 (file)
@@ -45,7 +45,7 @@ sub renice_proc
 return undef if (&is_readonly_mode());
 local($out, $nice);
 $nice = $_[1] - 20;
-$out = `renice -n $nice -p $_[0] 2>&1`;
+local $out = &backquote_logged("renice -n $nice -p $_[0] 2>&1");
 if ($?) { return $out; }
 return undef;
 }
index 85485b3..27f2d43 100644 (file)
@@ -15,7 +15,7 @@ index_loadnums=$1 (1 mins) , $2 (5 mins) , $3 (15 mins)
 index_cpuname=CPU type:
 index_inzone=In zone $1
 
-pid=Process ID
+pid=ID
 owner=Owner
 command=Command
 cpu=CPU
@@ -58,6 +58,8 @@ run_euser2=You are not allowed to run commands as the selected user
 edit_title=Process Information
 edit_gone=This process is no longer running
 edit_sub=Subprocesses
+edit_subid=ID
+edit_subcmd=Sub-process command
 edit_kill=Send Signal
 edit_change=Change
 edit_prilow=Low priority
@@ -136,6 +138,7 @@ log_kill=Sent signal $1 to process $2
 log_kills=Send signal $1 to $2 processes
 log_kill_l=Sent signal $1 to process $2
 log_kills_l=Sent signal $1 to processes<br>$2
+log_renice=Changed priority of process $2 to $1
 
 acl_manage=Manage processes as user
 acl_manage_def=Current Webmin user
index 5cb5535..e39a0a9 100644 (file)
@@ -95,7 +95,7 @@ return @plist;
 sub renice_proc
 {
 return undef if (&is_readonly_mode());
-$out = `renice $_[1] -p $_[0] 2>&1`;
+local $out = &backquote_logged("renice $_[1] -p $_[0] 2>&1");
 if ($?) { return $out; }
 return undef;
 }
index 033a874..00f18d1 100644 (file)
@@ -33,6 +33,9 @@ elsif ($action eq 'kill') {
                        }
                }
        }
+elsif ($action eq 'renice') {
+       return &text('log_renice', $p->{'nice'}, $p->{'pid'});
+       }
 else {
        return undef;
        }
index 159d667..d800e55 100644 (file)
@@ -54,7 +54,7 @@ return @plist;
 sub renice_proc
 {
 return undef if (&is_readonly_mode());
-$out = `renice $_[1] -p $_[0] 2>&1`;
+local $out = &backquote_logged("renice $_[1] -p $_[0] 2>&1");
 if ($?) { return $out; }
 return undef;
 }
index cc80656..438ae14 100644 (file)
@@ -34,7 +34,7 @@ return @plist;
 sub renice_proc
 {
 return undef if (&is_readonly_mode());
-$out = `renice $_[1] -p $_[0] 2>&1`;
+local $out = &backquote_logged("renice $_[1] -p $_[0] 2>&1");
 if ($?) { return $out; }
 return undef;
 }
index d1cd1b8..b227d62 100644 (file)
@@ -64,7 +64,7 @@ return split(/\s+/, $out);
 sub renice_proc
 {
 return undef if (&is_readonly_mode());
-$out = `renice $_[1] -p $_[0] 2>&1`;
+local $out = &backquote_logged("renice $_[1] -p $_[0] 2>&1");
 if ($?) { return $out; }
 return undef;
 }
index 63e59cd..e944303 100755 (executable)
@@ -11,5 +11,6 @@ require './proc-lib.pl';
 if ($error = &renice_proc($in{pid}, $in{nice})) {
        &error($error);
        }
+&webmin_log("renice", undef, undef, \%in);
 &redirect("edit_proc.cgi?$in{pid}");
 
index 30c21a6..a1e6ca1 100644 (file)
@@ -87,7 +87,7 @@ return split(/\s+/, $out);
 sub renice_proc
 {
 return undef if (&is_readonly_mode());
-$out = `renice $_[1] -p $_[0] 2>&1`;
+local $out = &backquote_logged("renice $_[1] -p $_[0] 2>&1");
 if ($?) { return $out; }
 return undef;
 }
index 3cba583..a0978f7 100644 (file)
@@ -45,7 +45,7 @@ return @plist;
 sub renice_proc
 {
 return undef if (&is_readonly_mode());
-$out = `process -p $_[0] $_[1] 2>&1`;
+local $out = &backquote_logged("process -p $_[0] $_[1] 2>&1");
 if ($?) { return $out; }
 return undef;
 }