diff --git a/cgi-bin/css/ldapns.css b/cgi-bin/css/ldapns.css index 7dea251c40cb426249bb0df5338cada1e9c916e9..141df70c8448eb4de6124acd4afe64885cec2e4a 100644 --- a/cgi-bin/css/ldapns.css +++ b/cgi-bin/css/ldapns.css @@ -297,8 +297,20 @@ .ldapns_field select { margin: 0.2em 1em 0.2em 1em; + padding: 0.2em 0.2em 0.2em 0.2em; } +.ldapns_field select[multiple] { + padding: 0.2em 1em 0.2em 0.2em; +} + +/* +select[multiple] { + size: 15; + height: 100%; +} +*/ + .ldapns_field .ldapns_fb_checkbox { position: relative; float: left; diff --git a/ldap_NS.pl b/ldap_NS.pl index 152c894738c5400954972a3b9069d2eb719d93d6..146c8b8084eeb01317b79d9ab99cdea31d2df43e 100755 --- a/ldap_NS.pl +++ b/ldap_NS.pl @@ -105,7 +105,7 @@ INIT { my $uid = '[a-zA-Z][\-a-zA-Z0-9]{6,16}'; $validate->{'UID'} = '/^'.$uid.'$/'; - my $word = '[a-zA-Z0-9][a-zA-Z0-9_-]{1,}[a-zA-Z0-9]'; + my $word = '[a-zA-Z0-9][a-zA-Z0-9_-]*[a-zA-Z0-9]'; my $anchored_word = '/^'.$word.'$/'; my $peopletree = $SNET::LdapNS::PEOPLE.','.$SNET::LdapNS::SNET; @@ -916,6 +916,31 @@ sub refresh_userInfos { } +sub getsize_multipleselect($) { + + my $options = $_[0]; + my $size = 0; + + if (defined($options)) { + if (ref($options) eq 'ARRAY') { + $size = scalar(@{$options}); + } + elsif (ref($options) eq 'HASH') { + $size = scalar(keys(%{$options})); + } + } + + if ($size > 10) { + $size = 10; + } + elsif ($size < 5) { + $size = 5; + } + + return $size; + +} + sub print_ns_headers($) { my $title = shift; @@ -1214,6 +1239,7 @@ sub display_userinfos { options => $options, sortopts => 'NAME', type => 'select', + size => getsize_multipleselect($options), multiple => 1, ); @@ -1509,6 +1535,7 @@ EOJS name => 'group', options => $options, type => 'select', + size => getsize_multipleselect($options), sortopts => 'NAME', selectname => 0, multiple => 0, @@ -1679,6 +1706,12 @@ EOJS multiple => 0, ); + if ($type eq 'select') { + $form->field( + size => getsize_multipleselect($options), + ); + } + print_ns_headers("LdapNS delete users"); print $form->render(); print_ns_footers; @@ -1844,6 +1877,12 @@ EOJS multiple => 0, ); + if ($type eq 'select') { + $form->field( + size => getsize_multipleselect($options), + ); + } + print_ns_headers("LdapNS reset passwords"); print $form->render(); print_ns_footers; @@ -1919,6 +1958,7 @@ EOJS options => $options, sortopts => 'NAME', type => 'select', + size => getsize_multipleselect($options), multiple => 0, ); @@ -2202,6 +2242,7 @@ sub display_groupinfos { options => $options, optgroups => 1, type => 'select', + size => getsize_multipleselect($options), multiple => 1, ); @@ -2609,6 +2650,12 @@ EOJS multiple => 0, ); + if ($type eq 'select') { + $form->field( + size => getsize_multipleselect($options), + ); + } + print_ns_headers("LdapNS delete groups"); print $form->render(); print_ns_footers; @@ -2845,6 +2892,13 @@ EOJS multiple => 1, disable => (scalar(keys(%{$deloptions})) == 0), ); + + if ($type eq 'select') { + $form->field( + size => getsize_multipleselect($deloptions), + ); + } + } else { $form->tmpl_param('disable_deluser' => 1); @@ -2860,6 +2914,13 @@ EOJS multiple => 1, disable => (scalar(keys(%{$addoptions})) == 0), ); + + if ($type eq 'select') { + $form->field( + size => getsize_multipleselect($addoptions), + ); + } + } else { $form->tmpl_param('disable_adduser' => 1); @@ -3167,6 +3228,7 @@ EOJS options => $options, sortopts => 'NAME', type => 'select', + size => getsize_multipleselect($options), multiple => 0, ); @@ -3585,6 +3647,7 @@ sub display_policyinfos { options => $options, sortopts => 'NAME', type => 'select', + size => getsize_multipleselect($options), multiple => 1, );