\n";
+# Start of the form
+print &ui_form_start("save_user.cgi", "post");
+print &ui_hidden("num", $n) if ($n ne "");
+print &ui_table_start($text{'uedit_details'}, "width=100%", 4);
+# Username
print " | ",&hlink("$text{'user'}","user")," | \n";
if ($n eq "" && $config{'new_user_group'} && $access{'gcreate'}) {
$onch = "newgid.value = user.value";
}
if ($access{'urename'} || $n eq "") {
- print " | \n";
+ print &ui_table_row(&hlink($text{'user'}, "user"),
+ &ui_textbox("user", $uinfo{'user'}, 20, 0, undef,
+ "onChange='$onch'"));
}
else {
- print "$uinfo{'user'} | \n";
+ print &ui_table_row(&hlink($text{'user'}, "user"),
+ "".&html_escape($uinfo{'user'})."");
print &ui_hidden("user", $uinfo{'user'}),"\n";
}
-print "",&hlink("$text{'uid'}","uid")," | \n";
-if ($n eq "") {
- $defuid = &allocate_uid(\%used);
- print "\n";
-
- if ( $access{'calcuid'} && $access{'autouid'} && $access{'useruid'} ) {
- # Show options for calculated, auto-incremented and user entered UID
- printf " %s\n",
- $config{'uid_mode'} eq '1' ? "checked" : "",
- $text{'uedit_uid_def'};
- printf " %s\n",
- $config{'uid_mode'} eq '2' ? "checked" : "",
- $text{'uedit_uid_calc'};
- printf " %s\n",
- $config{'uid_mode'} eq '0' ? "checked" : "",
- "";
- }
-
- if ( $access{'calcuid'} && $access{'autouid'} && !$access{'useruid'} ) {
- # Show options for calculated and auto-incremented UID
- printf " %s\n",
- $config{'uid_mode'} eq '1' ? "checked" : "",
- $text{'uedit_uid_def'};
- printf " %s\n",
- $config{'uid_mode'} eq '2' ? "checked" : "",
- $text{'uedit_uid_calc'};
- }
-
- if ( $access{'calcuid'} && !$access{'autouid'} && $access{'useruid'} ) {
- # Show options for calculated and user entered UID
- printf " %s\n",
- $config{'uid_mode'} eq '2' ? "checked" : "",
- $text{'uedit_uid_calc'};
- printf " %s\n",
- $config{'uid_mode'} eq '0' ? "checked" : "",
- "";
- }
-
- if ( !$access{'calcuid'} && $access{'autouid'} && $access{'useruid'} ) {
- # Show options for auto-incremented and user entered UID
- printf " %s\n",
- $config{'uid_mode'} eq '1' ? "checked" : "",
- $text{'uedit_uid_def'};
- printf " %s\n",
- $config{'uid_mode'} eq '0' ? "checked" : "",
- "";
- }
-
- if ( $access{'calcuid'} && !$access{'autouid'} && !$access{'useruid'} ) {
- # Hidden field for calculated UID
- print "";
- print "$text{'uedit_uid_calc'}\n";
- }
-
- if ( !$access{'calcuid'} && $access{'autouid'} && !$access{'useruid'} ) {
- # Hidden field for auto-incremented UID
- print "";
- print "$text{'uedit_uid_calc'}\n";
- }
-
- if ( !$access{'calcuid'} && !$access{'autouid'} && $access{'useruid'} ) {
- # Show field for user entered UID
- print "";
- print "UID: \n";
- }
-
- if ( !$access{'calcuid'} && !$access{'autouid'} && !$access{'useruid'} ) {
- if ( $config{'uid_mode'} eq '0' ) {
- print "";
- print "UID: \n";
- } else {
- print "";
- print "$text{'uedit_uid_def'}\n" if ( $config{'uid_mode'} eq '1' );
- print "$text{'uedit_uid_calc'}\n" if ( $config{'uid_mode'} eq '2' );
- }
- }
- print " | \n";
- }
-else {
- print " | \n";
+# User ID
+if ($n ne "") {
+ # Existing user, just show field to edit
+ $uidfield = &ui_textbox("uid", $user{'uid'}, 10);
}
+else {
+ # Work out which UID modes are available
+ @uidmodes = ( );
+ $defuid = &allocate_uid(\%used);
+ if ($access{'autouid'}) {
+ push(@uidmodes, [ 1, $text{'gedit_uid_def'} ]);
+ }
+ if ($access{'calcuid'}) {
+ push(@uidmodes, [ 2, $text{'gedit_uid_calc'} ]);
+ }
+ if ($access{'useruid'}) {
+ push(@uidmodes, [ 0, &ui_textbox("uid", $defuid, 10) ]);
+ }
+ if (@uidmodes == 1) {
+ $uidfield = &ui_hidden("uid_def", $uidmodes[0]->[0]).
+ $uidmodes[0]->[1];
+ }
+ else {
+ $uidfield = &ui_radio("uid_def", $config{'uid_mode'},
+ \@uidmodes);
+ }
+ }
+print &ui_table_row(&hlink($text{'uid'}, "uid"), $uidfield);
+# Real name
if ($config{'extra_real'}) {
+ # Has separate name, office, work and home phone parts
local @real = split(/,/, $uinfo{'real'}, 5);
- print " | ",&hlink("$text{'real'}","real")," | \n";
- print " | \n";
+ print &ui_table_row(&hlink($text{'real'}, "real"),
+ &ui_textbox("real", $real[0], 20));
- print "",&hlink("$text{'office'}","office")," | \n";
- print " | \n";
+ print &ui_table_row(&hlink($text{'office'}, "office"),
+ &ui_textbox("office", $real[1], 20));
- print " | ",&hlink("$text{'workph'}","workph")," | \n";
- print " | \n";
+ print &ui_table_row(&hlink($text{'workph'}, "workph"),
+ &ui_textbox("workph", $real[2], 20));
- print "",&hlink("$text{'homeph'}","homeph")," | \n";
- print " | \n";
+ print &ui_table_row(&hlink($text{'homeph'}, "homeph"),
+ &ui_textbox("homeph", $real[3], 20));
- print " | ",&hlink("$text{'extra'}","extra")," | \n";
- print " | \n";
+ print &ui_table_row(&hlink($text{'extra'}, "extra"),
+ &ui_textbox("extra", $real[4], 20));
}
else {
- print " | ",&hlink("$text{'real'}","real")," | \n";
- print " | \n";
+ # Just a name
+ print &ui_table_row(&hlink($text{'real'}, "real"),
+ &ui_textbox("real", $uinfo{'real'}, 20));
}
# Show input for home directory
-print "",&hlink("$text{'home'}","home")," | \n";
if ($access{'autohome'}) {
- print "$text{'uedit_auto'} ",
- $n eq "" ? "" : "( $uinfo{'home'} )",
- " | \n";
+ # AUtomatic, cannot be changed
+ $homefield = $text{'uedit_auto'}.
+ ($n eq "" ? "" : "( $uinfo{'home'} );
}
else {
- print "\n";
if ($config{'home_base'}) {
+ # Can be automatic
local $grp = &my_getgrgid($uinfo{'gid'});
local $hb = $n eq "" || &auto_home_dir($config{'home_base'},
$uinfo{'user'}, $grp) eq $uinfo{'home'};
- printf " %s\n",
- $hb ? "checked" : "", $text{'uedit_auto'};
- printf "\n",
- $hb ? "" : "checked";
- printf " %s\n",
- $hb ? "" : $uinfo{'home'},
- &file_chooser_button("home", 1);
+ $homefield = &ui_radio("home_base", $hb ? 1 : 0,
+ [ [ 1, $text{'uedit_auto'} ],
+ [ 0, &ui_filebox("home", $hb ? "" : $uinfo{'home'},
+ 25, 0, undef, undef, 1) ] ]);
}
else {
- print "\n",
- &file_chooser_button("home", 1);
+ # Allow any directory
+ $homefield = &ui_filebox("home", $uinfo{'home'}, 25, 0,
+ undef, undef, 1);
}
}
-print " | \n";
+print &ui_table_row(&hlink($text{'home'}, "home"),
+ $homefield);
# Show shell drop-down
-print " | ",&hlink("$text{'shell'}","shell")," | \n";
-print " | \n";
+push(@shlist, [ "*", $text{'uedit_other'} ]) if (!$shells);
+print &ui_table_row(&hlink($text{'shell'}, "shell"),
+ &ui_select("shell", $uinfo{'shell'}, \@shlist));
# Show password field
$pass = %uinfo ? $uinfo{'pass'} : $config{'lock_string'};
|