Diff for /loncom/interface/loncoursegroups.pm between versions 1.14 and 1.19

version 1.14, 2006/05/01 19:37:33 version 1.19, 2006/05/18 18:35:13
Line 30  use Apache::loncommon; Line 30  use Apache::loncommon;
 use Apache::lonhtmlcommon;  use Apache::lonhtmlcommon;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnavmaps;  use Apache::lonnavmaps;
   use Apache::longroup;
 use Apache::Constants qw(:common :http);  use Apache::Constants qw(:common :http);
   
 sub handler {  sub handler {
Line 37  sub handler { Line 38  sub handler {
   
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;      $r->send_http_header;
                                                                                   
     if ($r->header_only) {      if ($r->header_only) {
         return OK;          return OK;
     }      }
Line 154  sub display_groups { Line 155  sub display_groups {
         if (!defined($action)) {          if (!defined($action)) {
             $action = 'view';              $action = 'view';
         }          }
         my %curr_groups;          my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
         if (&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum)) {          if (%curr_groups) {
             $r->print('<br /><br />');              $r->print('<br /><br />');
             $r->print(&Apache::lonhtmlcommon::start_pick_box());              $r->print(&Apache::lonhtmlcommon::start_pick_box());
             $r->print(<<"END");              $r->print(<<"END");
Line 182  END Line 183  END
             my %Sortby = ();              my %Sortby = ();
             foreach my $group (sort(keys(%curr_groups))) {              foreach my $group (sort(keys(%curr_groups))) {
                 %{$grp_info{$group}} =                   %{$grp_info{$group}} = 
                                   &Apache::loncommon::get_group_settings(                                    &Apache::longroup::get_group_settings(
                                                          $curr_groups{$group});                                                           $curr_groups{$group});
                 my $members_result = &group_members($cdom,$cnum,$group,                  my $members_result = &group_members($cdom,$cnum,$group,
                                                     \%grp_info);                                                      \%grp_info);
Line 245  END Line 246  END
                     if ($action eq 'modify' || $action eq 'delete') {                      if ($action eq 'modify' || $action eq 'delete') {
                         $link .= $group;                          $link .= $group;
                     } else {                      } else {
                         $link .= $group.'/grppg?register=1';                          $link .= $group.'/grppg';
                     }                      }
                     $link .= '">'.$lt{$action}.'</a>';                        $link .= '">'.$lt{$action}.'</a>';  
                     $r->print('<tr bgcolor="'.$rowColor.'"><td><small>'.$link.'</small></td><td><small>'.$group.'</small></td><td><small>'.$description.'</small></td><td><small>'.$creator.'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($creation).'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($modified).'</small></td><td><small>'.$functionality.'</small></td><td><small>'.$quota.'</small></td><td><small>'.$totalmembers.'</small></td><td><small>'.$totalfiles.'</small></td><td><small>'.$boards.'</small></td><td><small>'.$diskuse.'</small></td></tr>');                      $r->print('<tr bgcolor="'.$rowColor.'"><td><small>'.$link.'</small></td><td><small>'.$group.'</small></td><td><small>'.$description.'</small></td><td><small>'.$creator.'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($creation).'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($modified).'</small></td><td><small>'.$functionality.'</small></td><td><small>'.$quota.'</small></td><td><small>'.$totalmembers.'</small></td><td><small>'.$totalfiles.'</small></td><td><small>'.$boards.'</small></td><td><small>'.$diskuse.'</small></td></tr>');
Line 267  END Line 268  END
         my @coursegroups = split(/:/,$env{'request.course.groups'});          my @coursegroups = split(/:/,$env{'request.course.groups'});
         if (@coursegroups > 0) {          if (@coursegroups > 0) {
             $r->print('<br /><br />');              $r->print('<br /><br />');
             my %curr_groups;              my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
             if (&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum)) {              if (%curr_groups) {
                 foreach my $group (@coursegroups) {                  foreach my $group (@coursegroups) {
                     my %group_info =  &Apache::loncommon::get_group_settings(                      my %group_info =  &Apache::longroup::get_group_settings(
                                         $curr_groups{$group});                                          $curr_groups{$group});
                     my $description = &Apache::lonnet::unescape(                      my $description = &Apache::lonnet::unescape(
                                         $group_info{description});                                          $group_info{description});
                     my ($uname,$udom) = split(/:/,$group_info{creator});                      my ($uname,$udom) = split(/:/,$group_info{creator});
                     $r->print('<font size="+1"><a href="/adm/'.$udom.'/'.$uname.'/'.$group.'/grppg?register=1">'.$group,'</a><font><br /><small>'.$description.'</small><br /><br />');                      $r->print('<font size="+1"><a href="/adm/'.$udom.'/'.$uname.'/'.$group.'/grppg">'.$group,'</a><font><br /><small>'.$description.'</small><br /><br />');
                 }                  }
             }              }
         } else {          } else {
Line 433  sub group_administration { Line 434  sub group_administration {
                                    );                                     );
     if (ref($stored{'autorole'}) eq 'ARRAY') {      if (ref($stored{'autorole'}) eq 'ARRAY') {
         foreach my $role (@{$stored{'autorole'}}) {          foreach my $role (@{$stored{'autorole'}}) {
             $elements{'modify'}{'change_settings'}{'sec_'.$role} = 'selectbox';               unless ($role eq 'cc') {
                   $elements{'modify'}{'change_settings'}{'sec_'.$role} = 
                                                                      'selectbox';
               }
         }          }
     }      }
     %{$elements{'create'}{'pick_members'}} = (      %{$elements{'create'}{'pick_members'}} = (
Line 454  sub group_administration { Line 458  sub group_administration {
         (($state eq 'pick_name') || ($state eq 'pick_privs'))) ||          (($state eq 'pick_name') || ($state eq 'pick_privs'))) ||
        (($action eq 'modify') && (($state eq 'change_settings') ||         (($action eq 'modify') && (($state eq 'change_settings') ||
                                   ($state eq 'add_members')))) {                                    ($state eq 'add_members')))) {
         my $numsections = &Apache::loncommon::get_sections($cdom,$cnum,          %sectioncount = &Apache::loncommon::get_sections($cdom,$cnum);
                                                            \%sectioncount);          if (%sectioncount) {
         if ($numsections > 0) {  
             $elements{'create'}{'pick_name'}{'sectionpick'} = 'selectbox';              $elements{'create'}{'pick_name'}{'sectionpick'} = 'selectbox';
             $elements{'modify'}{'change_mapping'}{'sectionpick'} = 'selectbox';              $elements{'modify'}{'change_mapping'}{'sectionpick'} = 'selectbox';
             $elements{'modify'}{'add_members'}{'sectionpick'} = 'selectbox';              $elements{'modify'}{'add_members'}{'sectionpick'} = 'selectbox';
Line 688  function changeSort(caller) { Line 691  function changeSort(caller) {
     document.$state.sortby.value = caller;      document.$state.sortby.value = caller;
     document.$state.submit();      document.$state.submit();
 }   } 
                                                                                         
 |;  |;
     $jscript .= &Apache::lonhtmlcommon::set_form_elements(      $jscript .= &Apache::lonhtmlcommon::set_form_elements(
                            \%{$elements{$action}{$state}},\%stored);                             \%{$elements{$action}{$state}},\%stored);
Line 808  function changeSort(caller) { Line 811  function changeSort(caller) {
   
 sub retrieve_settings {  sub retrieve_settings {
     my ($cdom,$cnum,$groupname) = @_;      my ($cdom,$cnum,$groupname) = @_;
     my %groupinfo;      my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,$groupname);
   
       return if (!%curr_groups);
   
       my %groupinfo = 
    &Apache::longroup::get_group_settings($curr_groups{$groupname});
   
     my %stored;      my %stored;
     my %curr_groups;  
     my $numgroups = &Apache::loncommon::coursegroups(\%curr_groups,$cdom,      $stored{'description'} = 
                                                              $cnum,$groupname);   &Apache::lonnet::unescape($groupinfo{'description'});
     if ($numgroups > 0) {      $stored{'startdate'} = $groupinfo{'startdate'};
         %groupinfo = &Apache::loncommon::get_group_settings(      $stored{'enddate'} = $groupinfo{'enddate'};
                                                      $curr_groups{$groupname});      if ($stored{'enddate'} == 0) {
         $stored{'description'} = &Apache::lonnet::unescape(   $stored{'no_end_date'} = 1;
                                                     $groupinfo{'description'});      }
         $stored{'startdate'} = $groupinfo{'startdate'};      $stored{'granularity'} = $groupinfo{'granularity'};
         $stored{'enddate'} = $groupinfo{'enddate'};      $stored{'specificity'} = $groupinfo{'specificity'};
         if ($stored{'enddate'} == 0) {      $stored{'creation'} = $groupinfo{'creation'};
             $stored{'no_end_date'} = 1;      $stored{'creator'} = $groupinfo{'creator'};
         }  
         $stored{'granularity'} = $groupinfo{'granularity'};      foreach my $tool (sort(keys(%{$groupinfo{'functions'}}))) {
         $stored{'specificity'} = $groupinfo{'specificity'};   if ($groupinfo{functions}{$tool} eq 'on') {
         $stored{'creation'} = $groupinfo{'creation'};      push(@{$stored{tool}},$tool);
         $stored{'creator'} = $groupinfo{'creator'};   }
       }
         foreach my $tool (sort(keys(%{$groupinfo{'functions'}}))) {      foreach my $role (@{$groupinfo{'roles'}}) {
             if ($groupinfo{functions}{$tool} eq 'on') {   push(@{$stored{roles}},$role);
                 push(@{$stored{tool}},$tool);      }
             }      foreach my $type (@{$groupinfo{'types'}}) {
         }   push(@{$stored{types}},$type);
         foreach my $role (@{$groupinfo{'roles'}}) {      }
             push(@{$stored{roles}},$role);      foreach my $section (@{$groupinfo{'sectionpick'}}) {
         }   push(@{$stored{sectionpick}},$section);
         foreach my $type (@{$groupinfo{'types'}}) {      }
             push(@{$stored{types}},$type);      foreach my $defpriv (@{$groupinfo{'defpriv'}}) {
         }   push(@{$stored{defpriv}},$defpriv);
         foreach my $section (@{$groupinfo{'sectionpick'}}) {      }
             push(@{$stored{sectionpick}},$section);      $stored{'autoadd'} = $groupinfo{'autoadd'};
         }      $stored{'autodrop'} = $groupinfo{'autodrop'};
         foreach my $defpriv (@{$groupinfo{'defpriv'}}) {      if (exists($groupinfo{'autosec'})) {
             push(@{$stored{defpriv}},$defpriv);   foreach my $role (sort(keys(%{$groupinfo{'autosec'}}))) {
         }              if (ref($groupinfo{'autosec'}{$role}) eq 'ARRAY') {
         $stored{'autoadd'} = $groupinfo{'autoadd'};          foreach my $section (@{$groupinfo{'autosec'}{$role}}) {
         $stored{'autodrop'} = $groupinfo{'autodrop'};              push (@{$stored{'sec_'.$role}},$section);
         if (exists($groupinfo{'autosec'})) {          }
             foreach my $role (sort(keys(%{$groupinfo{'autosec'}}))) {          if (@{$groupinfo{'autosec'}{$role}} > 0) {
                 foreach my $section (@{$groupinfo{'autosec'}{$role}}) {      push(@{$stored{'autorole'}},$role);
                     push (@{$stored{'sec_'.$role}},$section);          }
                 }  
                 if (@{$groupinfo{'autosec'}{$role}} > 0) {  
                     push(@{$stored{'autorole'}},$role);  
                 }  
             }              }
         }   }
     }      }
     return %stored;      return %stored;
 }  }
Line 1212  sub membership_options { Line 1217  sub membership_options {
                    previous => &mt('Previously had access'),                     previous => &mt('Previously had access'),
                    future => &mt('Will have future access'),                     future => &mt('Will have future access'),
                    );                     );
                                                                                    
     my @roles = ('st','cc','in','ta','ep','cr');      my @roles = ('st','cc','in','ta','ep','cr');
   
     my @sections = keys(%{$sectioncount});      my @sections = keys(%{$sectioncount});
Line 1248  sub membership_options { Line 1253  sub membership_options {
     $r->print(&Apache::lonhtmlcommon::role_select_row(\@roles));      $r->print(&Apache::lonhtmlcommon::role_select_row(\@roles));
     if (@sections > 0) {      if (@sections > 0) {
         @sections = sort {$a cmp $b} @sections;          @sections = sort {$a cmp $b} @sections;
         unshift(@sections,'_all'); # Put 'all' at the front of the list          unshift(@sections,'all'); # Put 'all' at the front of the list
         unshift(@sections,'_nosec'); # Put 'no sections' next          unshift(@sections,'none'); # Put 'no sections' next
         $r->print('<td>&nbsp;</td>          $r->print('<td>&nbsp;</td>
                    <td colspan="3" align="center" valign="top">'.                     <td colspan="3" align="center" valign="top">'.
         &sections_selection(\@sections,'sectionpick').'</td>');          &sections_selection(\@sections,'sectionpick').'</td>');
Line 1270  sub sections_selection { Line 1275  sub sections_selection {
         $numvisible = @{$sections};          $numvisible = @{$sections};
     }      }
     foreach my $sec (@{$sections}) {      foreach my $sec (@{$sections}) {
         if ($sec eq '_all') {          if ($sec eq 'all') {
             $section_sel .= '  <option value="'.$sec.'" />all sections'."\n";              $section_sel .= '  <option value="'.$sec.'" />all sections'."\n";
         } elsif ($sec eq '_nosec') {          } elsif ($sec eq 'none') {
             $section_sel .= '  <option value="'.$sec.'" />no section'."\n";               $section_sel .= '  <option value="'.$sec.'" />no section'."\n"; 
         } else {          } else {
             $section_sel .= '  <option value="'.$sec.'" />'.$sec."\n";              $section_sel .= '  <option value="'.$sec.'" />'.$sec."\n";
Line 2308  END Line 2313  END
                         $r->print('<td align="left"><small>');                          $r->print('<td align="left"><small>');
                         if ($granularity eq 'Yes') {                          if ($granularity eq 'Yes') {
                             foreach my $tool (@{$current{$user}{newtools}}) {                              foreach my $tool (@{$current{$user}{newtools}}) {
                                 $r->print('<nobr><label><input type="checkbox"                                    $r->print('<nobr><label><input type="checkbox"
                                           name="user_'.$tool.'" value="'.                                            name="user_'.$tool.'" value="'.
                                           $user.'" />'.$tool.                                            $user.'" />'.$tool.
                                           '</label></nobr>&nbsp;&nbsp;&nbsp;');                                            '</label></nobr>&nbsp;&nbsp;&nbsp;');
Line 2589  sub member_privileges_form { Line 2594  sub member_privileges_form {
         }          }
         $specificity = $env{'form.specificity'};          $specificity = $env{'form.specificity'};
     } else {      } else {
         @defprivs = @{$$stored{'defpriv'}};          if (defined($$stored{'defpriv'})) {
               @defprivs = @{$$stored{'defpriv'}};
           }
         $specificity = $$stored{'specificity'};          $specificity = $$stored{'specificity'};
     }      }
     my @showtools;      my @showtools;
Line 2711  END Line 2718  END
                           '<br />');                            '<br />');
                 &display_defprivs($r,$tabcol,$rowColor1,$rowColor2,$tools,                  &display_defprivs($r,$tabcol,$rowColor1,$rowColor2,$tools,
                             $toolprivs,\@defprivs);                              $toolprivs,\@defprivs);
                                                                                         
             }              }
         } else {          } else {
             if (keys(%{$usertools}) > 0) {              if (keys(%{$usertools}) > 0) {
Line 2774  sub process_request { Line 2780  sub process_request {
             @defprivs = @temp;               @defprivs = @temp; 
         }          }
     } else {      } else {
         @defprivs = @{$$stored{'defpriv'}};          if (defined($$stored{'defpriv'})) {
               @defprivs = @{$$stored{'defpriv'}};
           }
     }      }
   
     my $outcome;      my $outcome;
Line 2810  sub write_group_data { Line 2818  sub write_group_data {
                              'creation','modified','creator','granularity',                               'creation','modified','creator','granularity',
                              'specificity','autoadd','autodrop');                               'specificity','autoadd','autodrop');
     my @mult_attributes = ('roles','types','sectionpick','defpriv');      my @mult_attributes = ('roles','types','sectionpick','defpriv');
                                                                                       
     my %groupinfo = (      my %groupinfo = (
                      description => $esc_description,                       description => $esc_description,
                      startdate => $startdate,                       startdate => $startdate,
Line 2849  sub write_group_data { Line 2857  sub write_group_data {
     }      }
     my $autosec;      my $autosec;
     my @autorole = &Apache::loncommon::get_env_multiple('form.autorole');      my @autorole = &Apache::loncommon::get_env_multiple('form.autorole');
                                                                                       
     foreach my $role (@autorole) {      foreach my $role (@autorole) {
         if (defined($env{'form.sec_'.$role})) {          if (defined($env{'form.sec_'.$role})) {
             my @autosections=&Apache::loncommon::get_env_multiple('form.sec_'.              my @autosections=&Apache::loncommon::get_env_multiple('form.sec_'.
                                                                   $role);                                                                    $role);
             if (grep/^_all$/,@autosections) {  
                 @autosections = sort {$a cmp $b} keys(%{$sectioncount});  
             }  
             $autosec .= '<role id="'.$role.'">';              $autosec .= '<role id="'.$role.'">';
             foreach my $sec (@autosections) {              foreach my $sec (@autosections) {
                 $autosec .= '<section>'.$sec.'</section>';                  $autosec .= '<section>'.$sec.'</section>';
Line 3057  sub process_membership { Line 3062  sub process_membership {
         }          }
     }      }
     if ($roster_result eq 'ok') {      if ($roster_result eq 'ok') {
         $r->print('<br />Group membership list updated.');          $r->print('<br />'.&mt('Group membership list updated.'));
     } else {      } else {
         $r->print('<br />An error occurred while updating the group membership list -'.$roster_result.'<br />');          $r->print('<br />'.&mt('An error occurred while updating the group membership list -').$roster_result.'<br />');
     }      }
     return;      return;
 }  }
Line 3117  sub automapping { Line 3122  sub automapping {
    <td>&nbsp;</td>     <td>&nbsp;</td>
    <td colspan="3">     <td colspan="3">
    <nobr>'.$$lt{'auad'}.':&nbsp;     <nobr>'.$$lt{'auad'}.':&nbsp;
     <input type="radio" name="autoadd" value="on" />on&nbsp;&nbsp;<input type="radio" name="autoadd" value="off" />off');      <label><input type="radio" name="autoadd" value="on" />on&nbsp;&nbsp;</label><label><input type="radio" name="autoadd" value="off" checked="checked" />off</label>');
     if ($action eq 'modify') {      if ($action eq 'modify') {
         $r->print('&nbsp;&nbsp;&nbsp;&nbsp;('.$$lt{'curr'}.' <b>'.$$lt{$add}.'</b>)');          $r->print('&nbsp;&nbsp;&nbsp;&nbsp;('.$$lt{'curr'}.' <b>'.$$lt{$add}.'</b>)');
     }      }
Line 3129  sub automapping { Line 3134  sub automapping {
    <td>&nbsp;</td>     <td>&nbsp;</td>
    <td colspan="3">     <td colspan="3">
     <nobr>'.$$lt{'auex'}.':&nbsp;      <nobr>'.$$lt{'auex'}.':&nbsp;
     <input type="radio" name="autodrop" value="on" />on&nbsp;&nbsp;<input type="radio" name="autodrop" value="off" />off');      <label><input type="radio" name="autodrop" value="on" />on&nbsp;&nbsp;</label><label><input type="radio" name="autodrop" value="off" checked="checked" />off</label>');
     if ($action eq 'modify') {      if ($action eq 'modify') {
         $r->print('&nbsp;&nbsp;&nbsp;&nbsp;('.$$lt{'curr'}.' <b>'.$$lt{$drop}.'</b>)');          $r->print('&nbsp;&nbsp;&nbsp;&nbsp;('.$$lt{'curr'}.' <b>'.$$lt{$drop}.'</b>)');
     }      }
Line 3152  sub mapping_settings { Line 3157  sub mapping_settings {
     my @sections = keys(%{$sectioncount});      my @sections = keys(%{$sectioncount});
     if (@sections > 0) {      if (@sections > 0) {
         @sections = sort {$a cmp $b} @sections;          @sections = sort {$a cmp $b} @sections;
         unshift(@sections,'_nosec'); # Put 'no sections' next          unshift(@sections,'none'); # Put 'no sections' next
         unshift(@sections,'_all'); # Put 'all' at the front of the list          unshift(@sections,'all'); # Put 'all' at the front of the list
     }      }
     &topic_bar($r,$tabcol,$image,$$lt{'pirs'});      &topic_bar($r,$tabcol,$image,$$lt{'pirs'});
     $r->print('      $r->print('
Line 3177  sub mapping_settings { Line 3182  sub mapping_settings {
         my $plrole=&Apache::lonnet::plaintext($role);          my $plrole=&Apache::lonnet::plaintext($role);
         my $sections_sel;          my $sections_sel;
         if (@sections > 0) {          if (@sections > 0) {
             $sections_sel='<td>'.&sections_selection(\@sections,'sec_'.$role).              if ($role eq 'cc') {
                                                                        '</td>';                  $sections_sel = '<td align="right">'.
                                   &mt('all sections').'<input type="hidden" '. 
                                   'name="sec_cc" value="all" /></td>';
               } else { 
                   $sections_sel='<td align="right">'.
                                 &sections_selection(\@sections,'sec_'.$role).
                                 '</td>';
               }
         }          }
         if ($rowNum %2 == 1) {          if ($rowNum %2 == 1) {
             $rowColor = $rowColor1;              $rowColor = $rowColor1;
Line 3211  sub mapping_settings { Line 3223  sub mapping_settings {
 }  }
   
 sub standard_roles {  sub standard_roles {
     my @roles = ('st','ep','ta','in','cc');      my @roles = ('cc','in','ta','ep','st');
     return @roles;      return @roles;
 }  }
   
Line 3411  function toggleTools(field,caller) { Line 3423  function toggleTools(field,caller) {
   
 sub validate_groupname {  sub validate_groupname {
     my ($groupname,$action,$cdom,$cnum) = @_;      my ($groupname,$action,$cdom,$cnum) = @_;
     my %sectioncount;      my %sectioncount = &Apache::loncommon::get_sections($cdom,$cnum);
     my $numsec=&Apache::loncommon::get_sections($cdom,$cnum,\%sectioncount);      my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
     my %curr_groups;  
     my $numgroups=&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum);  
                                                                                            
     my %lt = &Apache::lonlocal::texthash (      my %lt = &Apache::lonlocal::texthash (
                       igna => 'Invalid group name',                        igna => 'Invalid group name',
                       tgne => 'The group name entered ',                        tgne => 'The group name entered ',
Line 3429  sub validate_groupname { Line 3439  sub validate_groupname {
                       thgr => '- does not correspond to the name of an existing'.                          thgr => '- does not correspond to the name of an existing'.  
                               ' group ',                                    ' group ',    
     );      );
                                                                                            
     my $exitmsg = '<b>'.$lt{'igna'}.'</b><br /><br />'.$lt{'tgne'}.' "'.      my $exitmsg = '<b>'.$lt{'igna'}.'</b><br /><br />'.$lt{'tgne'}.' "'.
                   $groupname.'" ';                    $groupname.'" ';
     my $dupmsg = $lt{'grna'};      my $dupmsg = $lt{'grna'};
Line 3438  sub validate_groupname { Line 3448  sub validate_groupname {
         $earlyout = $exitmsg.$lt{'isno'}.'<br />'.$lt{'gnmo'};          $earlyout = $exitmsg.$lt{'isno'}.'<br />'.$lt{'gnmo'};
         return $earlyout;          return $earlyout;
     }      }
     if ($numsec) {      if (exists($sectioncount{$groupname})) {
         if (exists($sectioncount{$groupname})) {   return $exitmsg.$lt{'cnnb'}.&mt('a section').$lt{'inth'}.
             $earlyout = $exitmsg.$lt{'cnnb'}.&mt('a section').$lt{'inth'}.      '<br />'.$lt{'grna'};
                         '<br />'.$lt{'grna'};  
             return $earlyout;  
         }  
     }      }
     if ($action eq 'create') {      if ($action eq 'create' 
         if ($numgroups) {   && exists($curr_groups{$groupname})) {
             if (exists($curr_groups{$groupname})) {  
                 $earlyout = $exitmsg.$lt{'cnnb'}.&mt('an existing group').   return $exitmsg.$lt{'cnnb'}.&mt('an existing group').
                             $lt{'inth'}.'<br />'.$lt{'grna'};      $lt{'inth'}.'<br />'.$lt{'grna'};
                 return $earlyout;  
             }  
         }  
     } elsif ($action eq 'modify') {      } elsif ($action eq 'modify') {
         unless(exists($curr_groups{$groupname})) {          unless(exists($curr_groups{$groupname})) {
             $earlyout = &mt('Group name:').' '.$groupname.$lt{'thgr'}.$lt{'inth'};              $earlyout = &mt('Group name:').' '.$groupname.$lt{'thgr'}.$lt{'inth'};

Removed from v.1.14  
changed lines
  Added in v.1.19


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>