#!/usr/local/bin/perl # edit_group.cgi # Edit or create a webmin group require './acl-lib.pl'; &ReadParse(); $access{'groups'} || &error($text{'gedit_ecannot'}); if ($in{'group'}) { # Editing an existing group &ui_print_header(undef, $text{'gedit_title'}, ""); foreach $g (&list_groups()) { if ($g->{'name'} eq $in{'group'}) { %group = %$g; } } } else { # Creating a new group &ui_print_header(undef, $text{'gedit_title2'}, ""); foreach $g (&list_groups()) { if ($g->{'name'} eq $in{'clone'}) { $group{'modules'} = $g->{'modules'}; } } } print "
\n"; print "\n"; if ($in{'clone'}) { print "\n"; } print "\n"; print "\n"; print "
$text{'gedit_rights'}
\n"; # Show the group name print "\n"; print "\n"; # Find and show the parent group @glist = grep { $_->{'name'} ne $group{'name'} } &list_groups(); @mcan = $access{'gassign'} eq '*' ? ( ( map { $_->{'name'} } @glist ), '_none' ) : split(/\s+/, $access{'gassign'}); map { $gcan{$_}++ } @mcan; if (@glist && %gcan) { print "\n"; print "\n"; } print "\n"; if ($in{'group'}) { # Show all current members print "\n"; print "\n"; } @mlist = &list_module_infos(); map { $has{$_}++ } @{$group{'modules'}}; print "\n"; print "\n"; print "
$text{'gedit_group'}$text{'edit_group'}
$text{'gedit_members'}\n"; $i = 0; foreach $m (@{$group{'members'}}) { print "\n" if ($i%4 == 0); print "\n"; print "\n" if ($i%4 == 3); $i++; } print "
",($m =~ /^\@(.*)$/ ? "$1" : $m), "
$text{'gedit_modules'}\n"; print &select_all_link("mod", 0, $text{'edit_selall'})," \n"; print &select_invert_link("mod", 0, $text{'edit_invert'}),"
\n"; @cats = &unique(map { $_->{'category'} } @mlist); &read_file("$config_directory/webmin.catnames", \%catnames); print "\n"; foreach $c (sort { $b cmp $a } @cats) { @cmlist = grep { $_->{'category'} eq $c } @mlist; print "\n"; $sw = 0; foreach $m (@cmlist) { local $md = $m->{'dir'}; if (!$sw) { print "\n"; } print ""; if ($sw) { print "\n"; } $sw = !$sw; } } print "
", $catnames{$c} || $text{'category_'.$c}, "
"; printf"\n", $has{$md} ? "checked" : ""; if ($access{'acl'} && $in{'group'}) { # Show link for editing ACL printf "". "%s\n", &urlize($m->{'dir'}), "group", &urlize($in{'group'}), $m->{'desc'}; } else { print "$m->{'desc'}\n"; } print "
\n"; print &select_all_link("mod", 0, $text{'edit_selall'})," \n"; print &select_invert_link("mod", 0, $text{'edit_invert'}),"\n"; print "
\n"; print "\n"; print "\n"; if ($in{'group'}) { print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } print "
", "
", "", "
\n"; &ui_print_footer("", $text{'index_return'});