Use two-part chooser for secondary groups
authorJamie Cameron <jcameron@webmin.com>
Tue, 26 Aug 2008 23:30:59 +0000 (23:30 +0000)
committerJamie Cameron <jcameron@webmin.com>
Tue, 26 Aug 2008 23:30:59 +0000 (23:30 +0000)
ldap-useradmin/edit_user.cgi
ldap-useradmin/save_user.cgi

index c3eb279..04ce37d 100755 (executable)
@@ -320,15 +320,14 @@ if ($config{'secmode'} != 1) {
 
 if ($config{'secmode'} == 0) {
        # Show secondary groups with select menu
-       print "<td><select name=sgid multiple size=5>\n";
        foreach $g (sort { lc($a->dn()) cmp lc($b->dn()) } $rv->all_entries) {
                $group = $g->get_value("cn");
-               $gid = $g->get_value('gidNumber');
-               printf "<option value=\"%s\" %s>%s (%s)\n",
-                   $group, $ingroups{$group} ? "selected" : "",
-                   $group, $gid;
+               push(@canglist, [ $group, $group ]);
                }
-       print "</select></td>\n";
+       @ingroups = map { [ $_, $_ ] } sort { $a cmp $b }
+                        grep { $ingroups{$_} } (keys %ingroups);
+       print "<td>",&ui_multi_select("sgid", \@ingroups, \@canglist, 5, 1, 0,
+                            $text{'uedit_allg'}, $text{'uedit_ing'}),"</td>\n";
        }
 elsif ($config{'secmode'} == 2) {
        # Show a text box
index 62a0052..cf4e4ba 100755 (executable)
@@ -616,7 +616,7 @@ else {
        if ($config{'secmode'} != 1) {
                # Update any groups that the user has been added to/removed from
                @sgnames = $config{'secmode'} == 2 ? split(/\s+/, $in{'sgid'})
-                                                  : split(/\0/, $in{'sgid'});
+                                                  : split(/\r?\n/, $in{'sgid'});
                foreach $gname (@sgnames) {
                        $ingroup{$gname}++;
                        }