More ui-lib conversion, auto-selection of search buttons
authorJamie Cameron <jcameron@webmin.com>
Mon, 31 Dec 2007 01:39:20 +0000 (01:39 +0000)
committerJamie Cameron <jcameron@webmin.com>
Mon, 31 Dec 2007 01:39:20 +0000 (01:39 +0000)
proc/CHANGELOG
proc/index_run.cgi
proc/index_search.cgi
proc/lang/en

index d3c7b6b..303b4a8 100644 (file)
@@ -14,3 +14,4 @@ On Virtuozzo systems, the free and used memory shown is determined by the VMs li
 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.
+Re-designed the Run and Search pages, and made the search radio buttons auto-selecting.
index e840832..614d4e2 100755 (executable)
@@ -11,32 +11,34 @@ use Config;
 &ReadParse();
 &index_links("run");
 
-print "<form action=run.cgi method=post>\n";
-print "<table>\n";
-print "<tr> <td>",&hlink("<b>$text{'run_command'}</b>","cmd"),"</td>\n";
-print "<td><input name=cmd size=40>\n";
-print "<input type=submit value=\"$text{'run_submit'}\"></td> </tr>\n";
+print &ui_form_start("run.cgi", "post");
+print &ui_table_start(undef, undef, 2);
 
-print "<tr> <td>",&hlink("<b>$text{'run_mode'}</b>","mode"),"</td>\n";
-print "<td><input type=radio name=mode value=1> $text{'run_bg'}\n";
-print "<input type=radio name=mode value=0 checked> $text{'run_fg'}</td>\n";
-print "</tr>\n";
+# Command to run
+print &ui_table_row(&hlink($text{'run_command'}, "cmd"),
+       &ui_textbox("cmd", undef, 60)." ".
+       &ui_submit($text{'run_submit'}));
 
+# Foreground mode
+print &ui_table_row(&hlink($text{'run_mode'}, "mode"),
+       &ui_radio("mode", 0, [ [ 1, $text{'run_bg'} ],
+                              [ 0, $text{'run_fg'} ] ]));
+
+# Run as user
 if (&supports_users()) {
        if ($< == 0) {
-               print "<tr> <td>",&hlink("<b>$text{'run_as'}</b>","runas"),
-                     "</td>\n";
-               print "<td>",&ui_user_textbox("user", $default_run_user),
-                     "</td> </tr>\n";
+               print &ui_table_row(&hlink($text{'run_as'}, "runas"),
+                       &ui_user_textbox("user", $default_run_user));
                }
        else {
                print &ui_hidden("user", $remote_user),"\n";
                }
        }
 
-print "<tr> <td valign=top>",
-      &hlink("<b>$text{'run_input'}</b>","input"),"</td>\n";
-print "<td><textarea name=input rows=5 cols=30></textarea></td> </tr>\n";
-print "</table></form>\n";
+# Input to command
+print &ui_table_row(&hlink($text{'run_input'}, "input"),
+       &ui_textarea("input", undef, 5, 60));
+print &ui_table_end();
+print &ui_form_end();
 
 &ui_print_footer("/", $text{'index'});
index b35e499..db7b4cf 100755 (executable)
@@ -7,92 +7,94 @@ require './proc-lib.pl';
 &ReadParse();
 &index_links("search");
 
+# Javascript to select radio
+print <<EOF;
+<script>
+function select_mode(m)
+{
+for(i=0; i<document.forms[0].mode.length; i++) {
+       document.forms[0].mode[i].checked = document.forms[0].mode[i].value == m;
+       }
+}
+</script>
+EOF
+
 # display search form
-print "<form action=index_search.cgi>\n";
-print "<table width=100%><tr><td valign=top>\n";
-
-printf "<input type=radio name=mode value=0 %s>\n",
-       $in{mode}==0 ? "checked" : "";
-print &hlink("<b>$text{'search_user'}</b>","suser"),"\n";
-printf "<input name=user size=8 value=\"%s\"> %s<br>\n",
-       $in{mode}==0 ? $in{user} : "",
-       &user_chooser_button("user", 0);
-
-printf "<input type=radio name=mode value=1 %s>\n",
-       $in{mode}==1 ? "checked" : "";
-print &hlink("<b>$text{'search_match'}</b>","smatch"),"\n";
-printf "<input name=match size=20 value=\"%s\"><br>\n",
-       $in{mode}==1 ? $in{match} : "";
-
-printf "<input type=radio name=mode value=2 %s>\n",
-       $in{mode}==2 ? "checked" : "";
-$cpu = sprintf "<input name=cpu size=4 value=\"%s\">\n",
-               $in{mode}==2 ? $in{cpu} : "";
-print &hlink("<b>".&text('search_cpupc', $cpu)."</b>", "scpu"),"<br>\n";
-
-print "</td><td valign=top>\n";
+print &ui_form_start("index_search.cgi");
+print &ui_table_start(undef, undef, 4);
+
+# By user
+print &ui_table_row(&ui_oneradio("mode", 0, &hlink($text{'search_user'}, "suser"),
+                             $in{'mode'} == 0),
+                   &ui_user_textbox("user", $in{'user'}, 0, 0,
+                                    &mode_selector(0)));
+
+# By process name
+print &ui_table_row(&ui_oneradio("mode", 1, &hlink($text{'search_match'},"smatch"),
+                             $in{'mode'} == 1),
+                   &ui_textbox("match", $in{'match'}, 30, 0, undef,
+                               &mode_selector(1)));
+
+if ($has_lsof_command) {
+       # TCP port
+       print &ui_table_row(&ui_oneradio("mode", 5,
+               &hlink($text{'search_port'}, "ssocket"), $in{'mode'} == 5),
+               &ui_textbox("port", $in{'port'}, 6, 0, undef,
+                           &mode_selector(5))." ".
+               $text{'search_protocol'}." ".
+               &ui_select("protocol", $in{'protocol'},
+                          [ [ 'tcp', 'TCP' ], [ 'udp', 'UDP' ] ], 1, 0, 0,
+                          0, &mode_selector(5, "onChange")));
+
+       # Using IP address
+       print &ui_table_row(&ui_oneradio("mode", 6,
+               &hlink($text{'search_ip'}, "sip"), $in{'mode'} == 6),
+               &ui_textbox("ip", $in{'ip'}, 20, 0, undef,
+                           &mode_selector(6)));
+       }
+
+# By CPU used
+print &ui_table_row(&ui_oneradio("mode", 2,
+               &hlink($text{'search_cpupc2'}, "scpu"), $in{'mode'} == 2),
+               &ui_textbox("cpu", $in{'cpu'}, 4, 0, undef,
+                           &mode_selector(2))."%");
 
 if ($has_fuser_command) {
-       printf "<input type=radio name=mode value=3 %s>\n",
-               $in{mode}==3 ? "checked" : "";
-       print &hlink("<b>$text{'search_fs'}</b>","sfs"),"\n";
+       # Using filesystem
        if (&foreign_check("mount")) {
                &foreign_require("mount", "mount-lib.pl");
-               print "<select name=fs>\n";
+               @opts = ( );
                foreach $fs (&foreign_call("mount", "list_mounted")) {
                        next if ($fs->[2] eq "swap");
-                       printf "<option %s>%s\n",
-                            $in{'mode'}==3 && $in{'fs'} eq $fs->[0] ?
-                            "selected" : "", $fs->[0];
+                       push(@opts, $fs->[0]);
                        }
-               print "</select><br>\n";
+               $fschooser = &ui_select("fs", $in{'fs'}, \@opts, 1, 0, 0, 0,
+                                       &mode_selector(3, "onChange"));
                }
        else {
-               printf "<input name=fs size=15 value='%s'><br>\n",
-                       $in{'mode'}==3 ? $in{'fs'} : "";
+               $fschooser = &ui_textbox("fs", $in{'fs'}, 30, 0, undef,
+                                        &mode_selector(3));
                }
-
-       printf "<input type=radio name=mode value=4 %s>\n",
-               $in{mode}==4 ? "checked" : "";
-       print &hlink("<b>$text{'search_files'}</b>","sfiles"),"\n";
-       printf "<input name=files size=30 value=\"%s\">\n",
-               $in{mode}==4 ? $in{'files'} : "";
-       print &file_chooser_button("files", 0);
-       print "<br>\n";
-       }
-if ($has_lsof_command) {
-       # Show input for file in use
-       printf "<input type=radio name=mode value=5 %s>\n",
-               $in{mode}==5 ? "checked" : "";
-       print &hlink("<b>$text{'search_port'}</b>","ssocket"),"\n";
-       printf "<input name=port size=6 value='%s'>\n",
-               $in{mode}==5 ? $in{port} : "";
-
-       # Show input for protocol and port
-       print &hlink("<b>$text{'search_protocol'}</b>","ssocket"),"\n";
-       print "<select name=protocol>\n";
-       printf "<option value=tcp %s>TCP\n",
-               $in{protocol} eq 'tcp' ? 'selected' : '';
-       printf "<option value=udp %s>UDP\n",
-               $in{protocol} eq 'udp' ? 'selected' : '';
-       print "</select>\n";
-       print "<br>\n";
-
-       # Show input for IP address
-       printf "<input type=radio name=mode value=6 %s>\n",
-               $in{mode}==6 ? "checked" : "";
-       print &hlink("<b>$text{'search_ip'}</b>","sip"),"\n";
-       printf "<input name=ip size=15 value='%s'>\n",
-               $in{mode}==6 ? $in{ip} : "";
+       print &ui_table_row(&ui_oneradio("mode", 3,
+               &hlink($text{'search_fs'}, "sfs"), $in{'mode'} == 3),
+               $fschooser, 3);
+
+       # Using file
+       print &ui_table_row(&ui_oneradio("mode", 4,
+               &hlink($text{'search_files'}, "sfiles"), $in{'mode'} == 4),
+               &ui_textbox("files", $in{'files'}, 50, 0, undef,
+                           &mode_selector(4))." ".
+               &file_chooser_button("files", 0), 3);
        }
 
-print "</td></tr></table>\n";
-print "<input type=submit value=\"$text{'search_submit'}\">\n";
-print "&nbsp;" x 5;
-printf "<input type=checkbox name=ignore value=1 %s> %s<br>\n",
-       $in{'ignore'} || !defined($in{'mode'}) ? 'checked' : '',
-       &hlink("<b>$text{'search_ignore'}</b>","signore");
-print "</form>\n";
+# Exclude own processes
+print &ui_table_row(undef,
+       &ui_checkbox("ignore", 1,
+               &hlink("<b>$text{'search_ignore'}</b>","signore"),
+               $in{'ignore'} || !defined($in{'mode'})));
+
+print &ui_table_end();
+print &ui_form_end([ [ undef, $text{'search_submit'} ] ]);
 
 if (%in) {
        # search for processes
@@ -209,3 +211,10 @@ if (%in) {
 
 &ui_print_footer("/", $text{'index'});
 
+sub mode_selector
+{
+local ($m, $action) = @_;
+$action ||= "onFocus";
+return "$action='select_mode($m)'";
+}
+
index 27f2d43..36008ef 100644 (file)
@@ -28,6 +28,7 @@ stime=Started
 search_user=Owned by
 search_match=Matching
 search_cpupc=Using more than $1% CPU
+search_cpupc2=Using more CPU than
 search_fs=Using filesystem
 search_files=Using file
 search_submit=Search