Some ui-lib conversion
authorJamie Cameron <jcameron@webmin.com>
Thu, 8 Jan 2009 01:13:30 +0000 (01:13 +0000)
committerJamie Cameron <jcameron@webmin.com>
Thu, 8 Jan 2009 01:13:30 +0000 (01:13 +0000)
postgresql/backup_form.cgi
postgresql/edit_group.cgi
postgresql/edit_host.cgi
postgresql/edit_user.cgi
postgresql/index.cgi
postgresql/lang/en
postgresql/list_groups.cgi
postgresql/list_users.cgi
postgresql/save_group.cgi

index 4ac0bea..9a5ff29 100755 (executable)
@@ -39,8 +39,8 @@ print "<p>\n";
 print &ui_form_start("backup.cgi", "post");
 print &ui_hidden("db", $in{'db'});
 print &ui_hidden("all", $in{'all'});
-print &ui_hidden_table_start($text{'backup_header1'}, undef, 2, "main", 1,
-                            [ "width=30%" ]);
+print &ui_hidden_table_start($text{'backup_header1'}, "width=100%", 2, "main",
+                            1, [ "width=30%" ]);
 
 # Destination file or directory
 $p = $c{'backup_'.$in{'db'}} || "$config{'repository'}/";
@@ -79,7 +79,8 @@ print &ui_hidden_table_end("main");
 
 if ($cron) {
        if ($access{'cmds'}) {
-               print &ui_hidden_table_start($text{'backup_header2'}, undef, 2,
+               print &ui_hidden_table_start($text{'backup_header2'},
+                                            "width=100%", 2,
                                             "opts", 0, [ "width=30%" ]);
 
                $b = $c{'backup_before_'.$in{'db'}};
@@ -102,8 +103,8 @@ if ($cron) {
                print &ui_hidden_table_end("opts");
                 }
 
-       print &ui_hidden_table_start($text{'backup_header3'}, undef, 2, "sched",
-                                    1, [ "width=30%" ]);
+       print &ui_hidden_table_start($text{'backup_header3'}, "width=100%",
+                                    2, "sched", 1, [ "width=30%" ]);
 
        &foreign_require("cron", "cron-lib.pl");
        @jobs = &cron::list_cron_jobs();
index dfc5d05..d02567b 100755 (executable)
@@ -15,49 +15,49 @@ else {
        @group = @{$s->{'data'}->[0]};
        }
 
-print "<form action=save_group.cgi>\n";
-print "<input type=hidden name=new value='$in{'new'}'>\n";
-print "<table border width=100%>\n";
-print "<tr $tb> <td><b>$text{'group_header'}</b></td> </tr>\n";
-print "<tr $cb> <td><table width=100%>\n";
+# Start of form block
+print &ui_form_start("save_group.cgi");
+print &ui_hidden("new", $in{'new'});
+print &ui_table_start($text{'group_header'}, undef, 2);
 
-print "<tr> <td><b>$text{'group_name'}</b></td>\n";
-print "<td><input name=name size=20 value='$group[0]'></td>\n";
+# Group name
+print &ui_table_row($text{'group_name'},
+       &ui_textbox("name", $group[0], 40));
 
-print "<td><b>$text{'group_id'}</b></td>\n";
+# Group ID, dynamically selected for new ones
 if ($in{'new'}) {
        $s = &execute_sql($config{'basedb'},
                          "select max(grosysid) from pg_group");
        $gid = $s->{'data'}->[0]->[0] + 1;
-       print "<td><input name=gid size=10 value='$gid'></td> </tr>\n";
+       print &ui_table_row($text{'group_id'},
+               &ui_textbox("gid", $gid, 10));
        }
 else {
-       print "<td>$group[1]</td> </tr>\n";
-       print "<input type=hidden name=gid value='$in{'gid'}'>\n";
-       print "<input type=hidden name=oldname value='$group[0]'>\n";
+       print &ui_table_row($text{'group_id'}, $group[1]);
+       print &ui_hidden("gid", $in{'gid'});
+       print &ui_hidden("oldname", $group[0]);
        }
 
-map { $mem{$_}++ } &split_array($group[2]) if (!$in{'new'});
-print "<tr> <td valign=top><b>$text{'group_mems'}</b></td>\n";
-print "<td colspan=3><select name=mems multiple size=5 width=200>\n";
+# Group members
 $s = &execute_sql($config{'basedb'}, "select * from pg_shadow");
-foreach $u (@{$s->{'data'}}) {
-       printf "<option value=%s %s>%s\n",
-               $u->[1], $mem{$u->[1]} ? 'selected' : '', $u->[0];
+%uidtouser = map { $_->[1], $_->[0] } @{$s->{'data'}};
+if (!$in{'new'}) {
+       @mems = map { [ $_, $uidtouser{$_} || $_ ] } &split_array($group[2]);
        }
-print "</select></td> </tr>\n";
+@users = map { [ $_->[1], $_->[0] ] } @{$s->{'data'}};
+print &ui_table_row($text{'group_mems'},
+       &ui_multi_select("mems", \@mems, \@users, 10, 1, 0,
+                        $text{'group_memsopts'}, $text{'group_memsvals'}));
 
-print "</table></td></tr></table>\n";
-print "<table width=100%><tr>\n";
+# End of the form buttons
+print &ui_table_end();
 if ($in{'new'}) {
-       print "<td><input type=submit value='$text{'create'}'></td>\n";
+       print &ui_form_end([ [ undef, $text{'create'} ] ]);
        }
 else {
-       print "<td><input type=submit value='$text{'save'}'></td>\n";
-       print "<td align=right><input type=submit name=delete ",
-             "value='$text{'delete'}'></td>\n";
+       print &ui_form_end([ [ undef, $text{'save'} ],
+                            [ 'delete', $text{'delete'} ] ]);
        }
-print "</tr></table>\n";
 
 &ui_print_footer("list_groups.cgi", $text{'group_return'});
 
index 12fc21f..235e1b1 100755 (executable)
@@ -18,13 +18,13 @@ else {
        &ui_print_header(undef, $text{"host_edit"}, "");
        }
 
-print "<form action=save_host.cgi>\n";
-print "<input type=hidden name=idx value='$in{'idx'}'>\n";
-print "<input type=hidden name=new value='$in{'new'}'>\n";
-print "<table border width=100%>\n";
-print "<tr $tb> <td><b>$text{'host_header'}</b></td> </tr>\n";
-print "<tr $cb> <td><table width=100%>\n";
+# Start of form block
+print &ui_form_start("save_host.cgi", "post");
+print &ui_hidden("idx", $in{'idx'});
+print &ui_hidden("new", $in{'new'});
+print &ui_table_start($text{'host_header'}, "width=100%", 2);
 
+# XXX
 $mode = $type eq 'local' ? 3 :
        $host->{'cidr'} ne '' ? 4 :
        $host->{'netmask'} eq '0.0.0.0' ? 0 :
index c39e0f0..af7c269 100755 (executable)
@@ -15,70 +15,58 @@ else {
        @user = @{$s->{'data'}->[0]};
        }
 
-print "<form action=save_user.cgi>\n";
-print "<input type=hidden name=new value='$in{'new'}'>\n";
-print "<input type=hidden name=user value='$in{'user'}'>\n";
-print "<table border width=100%>\n";
-print "<tr $tb> <td><b>$text{'user_header'}</b></td> </tr>\n";
-print "<tr $cb> <td><table width=100%>\n";
+# Start of the form
+print &ui_form_start("save_user.cgi");
+print &ui_hidden("new", $in{'new'});
+print &ui_hidden("user", $in{'user'});
+print &ui_table_start($text{'user_header'}, undef, 2);
 
-print "<tr> <td><b>$text{'user_name'}</b></td>\n";
-if ($in{'new'} || &get_postgresql_version() >= 7.4) {
-       print "<td><input name=name value='$user[0]' size=20></td>\n";
-       }
-else {
-       print "<td>$user[0]</td>\n";
-       }
+# Username, not always editable
+print &ui_table_row($text{'user_name'},
+       $in{'new'} || &get_postgresql_version() >= 7.4 ?
+               &ui_textbox("name", $user[0], 40) :
+               $user[0]);
 
-print "<td><b>$text{'user_passwd'}</b></td>\n";
 if ($in{'new'}) {
        # For new users, can select empty or specific password
-       print "<td>",&ui_radio("pass_def", 1,
+       print &ui_table_row($text{'user_passwd'},
+             &ui_radio("pass_def", 1,
                        [ [ 1, $text{'user_none'} ],
-                         [ 0, $text{'user_setto'} ] ]),"\n",
-                    &ui_password("pass", undef, 20),"</td> </tr>\n";
+                         [ 0, $text{'user_setto'} ] ])." ".
+                    &ui_password("pass", undef, 20));
        }
 else {
        # For existing users, can select empty, leave unchanged or
        # specific password
-       print "<td>",&ui_radio("pass_def", 2,
+       print &ui_table_row($text{'user_passwd'},
+             &ui_radio("pass_def", 2,
                        [ [ 2, $text{'user_nochange'} ],
-                         [ 0, $text{'user_setto'} ] ]),"\n",
-                    &ui_password("pass", undef, 20),"</td> </tr>\n";
+                         [ 0, $text{'user_setto'} ] ])." ".
+                    &ui_password("pass", undef, 20));
        }
 
-print "<tr> <td><b>$text{'user_db'}</b></td>\n";
-printf "<td><input type=radio name=db value=1 %s> $text{'yes'}\n",
-       $user[2] =~ /t|1/ ? 'checked' : '';
-printf "<input type=radio name=db value=0 %s> $text{'no'}</td>\n",
-       $user[2] =~ /t|1/ ? '' : 'checked';
+# Can create databases?
+print &ui_table_row($text{'user_db'},
+       &ui_yesno_radio("db", $user[2] =~ /t|1/));
 
-print "<td><b>$text{'user_other'}</b></td>\n";
-printf "<td><input type=radio name=other value=1 %s> $text{'yes'}\n",
-       $user[4] =~ /t|1/ ? 'checked' : '';
-printf "<input type=radio name=other value=0 %s> $text{'no'}</td> </tr>\n",
-       $user[4] =~ /t|1/ ? '' : 'checked';
+# Create create other users?
+print &ui_table_row($text{'user_other'},
+       &ui_yesno_radio("other", $user[4] =~ /t|1/));
 
-print "<tr> <td><b>$text{'user_until'}</b></td> <td colspan=3>\n";
-if (!$user[6]) {
-       printf "<input type=radio name=until_def value=1 %s> %s\n",
-               $user[6] ? '' : 'checked', $text{'user_forever'};
-       printf "<input type=radio name=until_def value=0 %s>\n",
-               $user[6] ? 'checked' : '';
-       }
-print "<input name=until size=30 value='$user[6]'></td> </tr>\n";
+# Valid until
+print &ui_table_row($text{'user_until'},
+       $user[6] ? &ui_textbox("until", $user[6], 40) :
+               &ui_opt_textbox("until", $user[6], 40, $text{'user_forever'}));
 
-print "</table></td></tr></table>\n";
-print "<table width=100%><tr>\n";
+# End of form and buttons
+print &ui_table_end();
 if ($in{'new'}) {
-       print "<td><input type=submit value='$text{'create'}'></td>\n";
+       print &ui_form_end([ [ undef, $text{'create'} ] ]);
        }
 else {
-       print "<td><input type=submit value='$text{'save'}'></td>\n";
-       print "<td align=right><input type=submit name=delete ",
-             "value='$text{'delete'}'></td>\n";
+       print &ui_form_end([ [ undef, $text{'save'} ],
+                            [ 'delete', $text{'delete'} ] ]);
        }
-print "</tr></table>\n";
 
 &ui_print_footer("list_users.cgi", $text{'user_return'});
 
index 6a58db5..8e23fea 100755 (executable)
@@ -57,15 +57,12 @@ if ($r == 0) {
        print "<b>$text{'index_notrun'}</b> <p>\n";
 
        if (&is_postgresql_local()) {
-               if ($access{'stop'} || $access{'users'}) {
-                       print &ui_hr();
-                       }
+               print &ui_hr();
                print &ui_buttons_start();
                if ($access{'stop'}) {
                        # Show start button
                        print &ui_buttons_row("start.cgi", $text{'index_start'},
-                             &text('index_startmsg',
-                                   "<tt>$config{'start_cmd'}</tt>"));
+                                             $text{'index_startmsg2'});
                        }
                if ($access{'users'}) {
                        print &ui_buttons_row("list_hosts.cgi",
@@ -85,30 +82,24 @@ elsif ($r == -1 && $access{'user'} && 0) {
 elsif ($r == -1) {
        # Running, but webmin doesn't know the login/password
        &main_header(1);
-       print "<p> <b>$text{'index_nopass'}</b> <p>\n";
-       print "<form action=login.cgi method=post>\n";
-       print "<center><table border>\n";
-       print "<tr $tb> <td><b>$text{'index_ltitle'}</b></td> </tr>\n";
-       print "<tr $cb> <td><table cellpadding=2>\n";
+       print "<b>$text{'index_nopass'}</b> <p>\n";
 
-       print "<tr> <td><b>$text{'index_login'}</b></td>\n";
-       printf "<td><input name=login size=20 value='%s'></td> </tr>\n",
-               $access{'user'} || $config{'login'};
+       print &ui_form_start("login.cgi", "post");
+       print &ui_table_start($text{'index_ltitle'}, undef, 2);
 
-       if (!$access{'user'}) {
-               print "<tr> <td></td>\n";
-               printf "<td><input type=checkbox name=sameunix value=1 %s> %s</td> </tr>\n",
-                       $config{'sameunix'} ? "checked" : "", $text{'index_sameunix'};
-               }
+       print &ui_table_row($text{'index_login'},
+               &ui_textbox("login", $access{'user'} || $config{'login'}, 40));
+
+       print &ui_table_row(" ",
+               &ui_checkbox("sameunix", 1, $text{'index_sameunix'},
+                            $config{'sameunix'}));
 
-       print "<tr> <td><b>$text{'index_pass'}</b></td>\n";
-       print "<td><input name=pass size=20 type=password></td> </tr>\n";
+       print &ui_table_row($text{'index_pass'},
+               &ui_password("pass", undef, 40));
 
+       print &ui_table_end();
+       print &ui_form_end([ [ undef, $text{'save'} ] ]);
 
-       print "</table></td></tr></table>\n";
-       print "<input type=submit value='$text{'save'}'>\n";
-       print "<input type=reset value='$text{'index_clear'}'>\n";
-       print "</center></form>\n";
        print &text('index_emsg', "<tt>$rout</tt>"),"<p>\n";
        }
 elsif ($r == -2) {
@@ -118,7 +109,7 @@ elsif ($r == -2) {
                  "$gconfig{'webprefix'}/config.cgi?$module_name"),"<p>\n";
        print &text('index_ldpath', "<tt>$ENV{$gconfig{'ld_env'}}</tt>",
                  "<tt>$config{'psql'}</tt>"),"<br>\n";
-       print "<pre>$out</pre>\n";
+       print "<pre>",&html_escape($out),"</pre>\n";
        print &text('index_emsg', "<tt>$rout</tt>"),"<p>\n";
        }
 else {
@@ -255,28 +246,24 @@ else {
                &icons_table(\@links, \@titles, \@images);
                }
 
+       print &ui_hr();
+       print &ui_buttons_start();
+
+       # Show stop server button
        if ($access{'stop'} && &is_postgresql_local()) {
-               print &ui_hr();
-               print "<form action=stop.cgi>\n";
-               print "<table width=100%><tr><td width=25%>\n";
-               print "<input type=submit ",
-                     "value=\"$text{'index_stop'}\"></td>\n";
-               print "<td>$text{'index_stopmsg'}</td> </tr></table>\n";
-               print "</form>\n";
+               print &ui_buttons_row("stop.cgi", $text{'index_stop'},
+                                     $text{'index_stopmsg'});
                }
 
        # Show backup all button
        if ($can_all && $access{'backup'}) {
-               print &ui_hr() if (!$access{'stop'});
-               print "<form action=backup_form.cgi>\n";
-               print "<input type=hidden name=all value=1>\n";
-               print "<table width=100%><tr><td width=25%>\n";
-               print "<input type=submit ",
-                     "value=\"$text{'index_backup'}\"></td>\n";
-               print "<td>$text{'index_backupmsg'}</td> </tr></table>\n";
-               print "</form>\n";
+               print &ui_buttons_row("backup_form.cgi", $text{'index_backup'},
+                                     $text{'index_backupmsg'},
+                                     &ui_hidden("all", 1));
                }
 
+       print &ui_buttons_end();
+
        # Check if the optional perl modules are installed
        if (&foreign_available("cpan")) {
                eval "use DBI";
index 1bb488f..ce6dd86 100644 (file)
@@ -1,7 +1,7 @@
 index_title=PostgreSQL Database Server
 index_notrun=PostgreSQL is not running on your system - database list could not be retrieved.
 index_start=Start PostgreSQL Server
-index_startmsg=Click this button to start the PostgreSQL database server on your system with the command $1. This Webmin module cannot administer the database until it is started.
+index_startmsg2=Click this button to start the PostgreSQL database server on your system. This Webmin module cannot administer the database until it is started.
 index_nopass=Webmin needs to know your PostgreSQL administration login and password in order to manage your database. Please enter your administration username  and password below.
 index_nouser=Your Webmin account is configured to connect to the PostgreSQL server as user $1, but this user has been denied access. 
 index_ltitle=PostgreSQL Login
@@ -227,6 +227,7 @@ user_err=Failed to save user
 user_epass=Missing or invalid password
 user_ename=Missing or invalid username
 user_sync=The options below configure synchronization between Unix users created through Webmin and PostgreSQL users.
+user_syncwhen=When to synchronize
 user_sync_create=Add a new PostgreSQL user when a Unix user is added.
 user_sync_modify=Update a PostgreSQL user when the matching Unix user is modified.
 user_sync_delete=Delete a PostgreSQL user when the matching Unix user is deleted.
@@ -318,6 +319,8 @@ group_ecannot=You are not allowed to edit groups
 group_name=Group name
 group_id=Group ID
 group_mems=Members
+group_memsopts=All users
+group_memsvals=Users in group
 group_add=Create a new group.
 group_edit=Edit Group
 group_create=Create Group
index 22c454e..5293ada 100755 (executable)
@@ -30,7 +30,7 @@ if (@{$s->{'data'}}) {
                push(@cols, $g->[1]);
                push(@cols, join("&nbsp;|&nbsp;",
                     map { &html_escape($uid{$_}) } &split_array($g->[2])));
-               print &ui_checked_columns_row(\@cols, \@tds, "d", $g->[1]);
+               print &ui_checked_columns_row(\@cols, \@tds, "d", $g->[0]);
                }
        print &ui_columns_end();
        }
index c94605e..fa7ad3e 100755 (executable)
@@ -34,16 +34,20 @@ print &ui_form_end([ [ "delete", $text{'user_delete'} ] ]);
 
 if (&get_postgresql_version() >= 7 && &foreign_installed("useradmin")) {
        print &ui_hr();
+       print "$text{'user_sync'}<p>\n";
        print &ui_form_start("save_sync.cgi");
-       print "$text{'user_sync'}<br>\n";
+       print &ui_table_start(undef, undef, 2);
 
-       print &ui_checkbox("sync_create", 1, $text{'user_sync_create'},
-                          $config{'sync_create'}),"<br>\n";
-       print &ui_checkbox("sync_modify", 1, $text{'user_sync_modify'},
-                          $config{'sync_modify'}),"<br>\n";
-       print &ui_checkbox("sync_delete", 1, $text{'user_sync_delete'},
-                          $config{'sync_delete'}),"<br>\n";
+       # When to sync
+       print &ui_table_row($text{'user_syncwhen'},
+             &ui_checkbox("sync_create", 1, $text{'user_sync_create'},
+                          $config{'sync_create'})."<br>\n".
+             &ui_checkbox("sync_modify", 1, $text{'user_sync_modify'},
+                          $config{'sync_modify'})."<br>\n".
+             &ui_checkbox("sync_delete", 1, $text{'user_sync_delete'},
+                          $config{'sync_delete'}));
 
+       print &ui_table_end();
        print &ui_form_end([ [ "save", $text{'save'} ] ]);
        }
 
index f9d8d9b..551d1e2 100755 (executable)
@@ -36,9 +36,13 @@ else {
                foreach $u (@{$s->{'data'}}) {
                        $umap{$u->[1]} = $u->[0];
                        }
-               @mems = split(/\0/, $in{'mems'});
+               @mems = split(/\r?\n/, $in{'mems'});
                if ($in{'new'}) {
-                       &execute_sql_logged($config{'basedb'}, "create group $in{'name'} sysid $in{'gid'} ".join(" ", map { "user ".$umap{$_} } @mems));
+                       $first = shift(@mems);
+                       &execute_sql_logged($config{'basedb'}, "create group $in{'name'} sysid $in{'gid'} user ".$umap{$first});
+                       if (@mems) {
+                               &execute_sql_logged($config{'basedb'}, "alter group $in{'name'} add user ".join(" , ", map { $umap{$_} } @mems));
+                               }
                        }
                else {
                        if ($in{'name'} ne $in{'oldname'}) {