Diff for /loncom/interface/loncoursegroups.pm between versions 1.6 and 1.15

version 1.6, 2006/02/21 18:56:00 version 1.15, 2006/05/09 14:38:09
Line 37  sub handler { Line 37  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 102  sub handler { Line 102  sub handler {
 sub print_main_menu {  sub print_main_menu {
     my ($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,$view_permission,      my ($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,$view_permission,
         $manage_permission,$action,$rowColor1,$rowColor2) = @_;          $manage_permission,$action,$rowColor1,$rowColor2) = @_;
     $r->print(&header('Course Groups',&mt('LON-CAPA Course Groups'),      $r->print(&header('Course Groups',undef,undef,undef,undef,$function));
               undef,undef,undef,undef,$function));  
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"/adm/coursegroups",          ({href=>"/adm/coursegroups",
           text=>"Course Groups",});            text=>"Course Groups",});
     $r->print(&Apache::lonhtmlcommon::breadcrumbs      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Groups'));
               (undef,'Course Groups'));  
     &display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,      &display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,
                     $view_permission,$manage_permission,$action,$rowColor1,                      $view_permission,$manage_permission,$action,$rowColor1,
                     $rowColor2);                      $rowColor2);
Line 145  sub display_groups { Line 143  sub display_groups {
                           file   => 'Files',                            file   => 'Files',
                           dibd   => 'Discussion Boards',                            dibd   => 'Discussion Boards',
                           dius   => 'Disk Use',                            dius   => 'Disk Use',
                      );                              nogr   => 'No groups exist.',
     $r->print('<br /><br />');                            crng   => 'Create a new group',
                             alth   => 'Although your current role has privileges'.
                                       ' to view any existing groups in this course,'.
                                       ' you do not have privileges to create new'.
                                       ' groups.',
                        );
     if ($view_permission) {      if ($view_permission) {
         if (!defined($action)) {          if (!defined($action)) {
             $action = 'view';              $action = 'view';
         }          }
         my %curr_groups;          my %curr_groups = &Apache::loncommon::coursegroups($cdom,$cnum);
         if (&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum)) {          if (%curr_groups) {
               $r->print('<br /><br />');
             $r->print(&Apache::lonhtmlcommon::start_pick_box());              $r->print(&Apache::lonhtmlcommon::start_pick_box());
             $r->print(<<"END");              $r->print(<<"END");
       <table border="0" cellpadding="4" cellspacing="1">        <table border="0" cellpadding="4" cellspacing="1">
Line 251  END Line 255  END
             $r->print('</table>');              $r->print('</table>');
             $r->print(&Apache::lonhtmlcommon::end_pick_box());              $r->print(&Apache::lonhtmlcommon::end_pick_box());
         } else {          } else {
             $r->print('No groups exist');              $r->print($lt{'nogr'});
               if ($manage_permission) {
                   $r->print('<br /><br /><a href="/adm/coursegroups?action=create&refpage='.$env{'form.refpage'}.'">'.$lt{'crng'}.'</a>');
               } else {
                   $r->print('<br /><br />'.$lt{'crng'});
   
               }
         }          }
     } else {      } else {
         my @coursegroups = split(/:/,$env{'request.course.groups'});          my @coursegroups = split(/:/,$env{'request.course.groups'});
         if (@coursegroups > 0) {          if (@coursegroups > 0) {
             my %curr_groups;              $r->print('<br /><br />');
             if (&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum)) {              my %curr_groups = &Apache::loncommon::coursegroups($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::loncommon::get_group_settings(
                                         $curr_groups{$group});                                          $curr_groups{$group});
Line 452  sub group_administration { Line 463  sub group_administration {
         }          }
     }      }
   
     if ($action eq 'create') {      if (($action eq 'create') || 
           ($action eq 'modify' && $state eq 'pick_members')) {
         if (defined($env{'form.types'})) {          if (defined($env{'form.types'})) {
             @types=&Apache::loncommon::get_env_multiple('form.types');              @types=&Apache::loncommon::get_env_multiple('form.types');
         }          }
Line 473  sub group_administration { Line 485  sub group_administration {
     }      }
     if ($state eq 'pick_members') {      if ($state eq 'pick_members') {
         if ((keys(%users) > 0) && (@tools > 0)) {          if ((keys(%users) > 0) && (@tools > 0)) {
               if ($granularity eq 'Yes') {
                   $elements{$action}{'pick_members'}{'togglefunc'} = 'checkbox';
               }
             foreach my $tool (@tools) {              foreach my $tool (@tools) {
                 if ($granularity eq 'Yes') {                  if ($granularity eq 'Yes') {
                     $elements{$action}{'pick_members'}{'user_'.$tool} = 'checkbox';                      $elements{$action}{'pick_members'}{'user_'.$tool} = 'checkbox';
Line 527  sub group_administration { Line 542  sub group_administration {
             $elements{$action}{'change_members'}{'reenable'} = 'checkbox';              $elements{$action}{'change_members'}{'reenable'} = 'checkbox';
         }          }
         if ($numusers) {          if ($numusers) {
               if ($granularity eq 'Yes') {
                   $elements{$action}{'change_members'}{'togglefunc'} = 'checkbox';
               }
             foreach my $tool (@tools) {              foreach my $tool (@tools) {
                 if ($granularity eq 'Yes') {                  if ($granularity eq 'Yes') {
                     $elements{$action}{'change_members'}{'user_'.$tool} = 'checkbox';                      $elements{$action}{'change_members'}{'user_'.$tool} = 'checkbox';
Line 670  function changeSort(caller) { Line 688  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 702  function changeSort(caller) { Line 720  function changeSort(caller) {
     }      }
   
     my $loaditems =  &onload_action($action,$state);      my $loaditems =  &onload_action($action,$state);
     $r->print(&header('Course Groups Manager',&mt('LON-CAPA Groups Manager'),      $r->print(&header('Course Groups Manager',
                           $jscript,$action,$state,$page,$function,$loaditems));        $jscript,$action,$state,$page,$function,$loaditems));
   
     if ($env{'form.refpage'} eq 'enrl') {      if ($env{'form.refpage'} eq 'enrl') {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
Line 753  function changeSort(caller) { Line 771  function changeSort(caller) {
                 &Apache::lonhtmlcommon::add_breadcrumb(                  &Apache::lonhtmlcommon::add_breadcrumb(
                    {text=>"$trail{$action}{$state}"});                     {text=>"$trail{$action}{$state}"});
                 $r->print(&Apache::lonhtmlcommon::breadcrumbs                  $r->print(&Apache::lonhtmlcommon::breadcrumbs
                      (undef,'Course Groups Manager'));    ('Course Groups Manager'));
                 &display_control($r,$cdom,$cnum,$tabcol,$action,$state,$page,                  &display_control($r,$cdom,$cnum,$tabcol,$action,$state,$page,
                        \%sectioncount,$groupname,$description,$functions,                         \%sectioncount,$groupname,$description,$functions,
                        \@tools,\%toolprivs,\%fixedprivs,$startdate,$enddate,                         \@tools,\%toolprivs,\%fixedprivs,$startdate,$enddate,
Line 763  function changeSort(caller) { Line 781  function changeSort(caller) {
                        \@sections,\%states,\%navbuttons,$rowColor1,$rowColor2);                         \@sections,\%states,\%navbuttons,$rowColor1,$rowColor2);
                 last;                  last;
             } else {              } else {
                 if (($state  =~ /^\w+result$/) && ($i > 0)) {                  if (($state eq 'result') && ($i > 0)) {
                     &Apache::lonhtmlcommon::add_breadcrumb(                      &Apache::lonhtmlcommon::add_breadcrumb(
     {href=>"javascript:backPage(document.$state,'$states{$action}[0]')",      {href=>"javascript:backPage(document.$state,'$states{$action}[0]')",
       text=>"$trail{$action}{$states{$action}[$i]}"});        text=>"$trail{$action}{$states{$action}[$i]}"});
Line 778  function changeSort(caller) { Line 796  function changeSort(caller) {
                         &Apache::lonhtmlcommon::add_breadcrumb(                          &Apache::lonhtmlcommon::add_breadcrumb(
                    {text=>"View groups"});                     {text=>"View groups"});
         $r->print(&Apache::lonhtmlcommon::breadcrumbs          $r->print(&Apache::lonhtmlcommon::breadcrumbs
                      (undef,'Course Groups Manager'));    ('Course Groups Manager'));
         &display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,          &display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,
                         $view_permission,$manage_permission,$action,                          $view_permission,$manage_permission,$action,
                         $rowColor1,$rowColor2);                          $rowColor1,$rowColor2);
Line 790  function changeSort(caller) { Line 808  function changeSort(caller) {
   
 sub retrieve_settings {  sub retrieve_settings {
     my ($cdom,$cnum,$groupname) = @_;      my ($cdom,$cnum,$groupname) = @_;
     my %groupinfo;      my %curr_groups = &Apache::loncommon::coursegroups($cdom,$cnum,$groupname);
   
       return if (!%curr_groups);
   
       my %groupinfo = 
    &Apache::loncommon::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'}}))) {
         }      foreach my $section (@{$groupinfo{'autosec'}{$role}}) {
         $stored{'autoadd'} = $groupinfo{'autoadd'};   push (@{$stored{'sec_'.$role}},$section);
         $stored{'autodrop'} = $groupinfo{'autodrop'};      }
         if (exists($groupinfo{'autosec'})) {      if (@{$groupinfo{'autosec'}{$role}} > 0) {
             foreach my $role (sort(keys(%{$groupinfo{'autosec'}}))) {   push(@{$stored{'autorole'}},$role);
                 foreach my $section (@{$groupinfo{'autosec'}{$role}}) {      }
                     push (@{$stored{'sec_'.$role}},$section);   }
                 }  
                 if (@{$groupinfo{'autosec'}{$role}} > 0) {  
                     push(@{$stored{'autorole'}},$role);  
                 }  
             }  
         }  
     }      }
     return %stored;      return %stored;
 }  }
Line 932  sub display_control { Line 950  sub display_control {
 }  }
   
 sub header {  sub header {
     my ($bodytitle,$title,$jscript,$action,$state,$page,$function,$loaditems) = @_;      my ($bodytitle,$jscript,$action,$state,$page,$function,$loaditems) = @_;
     my $html=&Apache::lonxml::xmlbegin();      my $start_page=
     my $bodytag=&Apache::loncommon::bodytag($bodytitle,$function,$loaditems);   &Apache::loncommon::start_page($bodytitle,
          '<script type="text/javascript">'.
          $jscript.'</script>',
          {'function'    => $function,
    'add_entries' => $loaditems,});
     my $output = <<"END";      my $output = <<"END";
 $html  $start_page
 <head>  <form method="POST" name="$state">
 <title>$title</title>  
 <script type="text/javascript">  
 $jscript  
 </script>  
 </head>  
 $bodytag  
 <form method="post" name="$state">  
   
 END  END
     if ($action eq 'create' || $action eq 'modify') {      if ($action eq 'create' || $action eq 'modify') {
Line 960  END Line 975  END
   
 sub onload_action {  sub onload_action {
     my ($action,$state) = @_;      my ($action,$state) = @_;
     my $loaditems;      my %loaditems;
     if ((defined($env{'form.origin'})) && ($action eq 'create') &&      if ((defined($env{'form.origin'})) && ($action eq 'create') &&
                 ($state eq 'pick_name' || $state eq 'pick_members' ||                   ($state eq 'pick_name' || $state eq 'pick_members' || 
                  $state eq 'pick_privs')) {                   $state eq 'pick_privs')) {
         unless ($env{'form.origin'} eq '') {          unless ($env{'form.origin'} eq '') {
             $loaditems =       $loaditems{'onload'} = 
              'onload="javascript:setFormElements(document.'.$state.')"';   'javascript:setFormElements(document.'.$state.')';
         }          }
     }      }
     if (($action eq 'modify') &&      if (($action eq 'modify') &&
                 ($state eq 'change_settings' || $state eq 'change_members' ||                  ($state eq 'change_settings' || $state eq 'change_members' ||
                  $state eq 'change_privs') || $state eq 'add_members') {                   $state eq 'change_privs' || $state eq 'add_members' ||
             $loaditems =                   $state eq 'pick_members')) {
              'onload="javascript:setFormElements(document.'.$state.')"';   $loaditems{'onload'} = 
       'javascript:setFormElements(document.'.$state.')';
     }      }
     return $loaditems;      return \%loaditems;
 }  }
   
 sub footer {  sub footer {
       my $end_page = &Apache::loncommon::end_page();
        return(<<ENDFOOT);         return(<<ENDFOOT);
    <input type="hidden" name="sortby" value="$env{'form.sortby'}" />     <input type="hidden" name="sortby" value="$env{'form.sortby'}" />
   </form>    </form>
  </body>  $end_page
 </html>  
 ENDFOOT  ENDFOOT
 }  }
   
Line 1136  END Line 1152  END
     }      }
     my @allfunctions = sort(keys (%{$functions}));      my @allfunctions = sort(keys (%{$functions}));
     for (my $i=0; $i<$halfnum; $i++) {      for (my $i=0; $i<$halfnum; $i++) {
         $r->print('<td><input type="checkbox" name="tool" value="'.          $r->print('<td><label><input type="checkbox" name="tool" value="'.
                   $allfunctions[$i].'" />&nbsp;'.                    $allfunctions[$i].'" />&nbsp;'.
                    $$functions{$allfunctions[$i]}.'</td>                     $$functions{$allfunctions[$i]}.'</label></td>
                    <td>&nbsp;</td><td>&nbsp;</td>');                     <td>&nbsp;</td><td>&nbsp;</td>');
     }      }
     $r->print('<td><input type="button" value="check all" '.      $r->print('<td><input type="button" value="check all" '.
               'onclick="javascript:checkAll(document.'.$formname.'.tool)" />'.                'onclick="javascript:checkAll(document.'.$formname.'.tool)" />'.
               '</td></tr><tr><td>&nbsp;</td>');                '</td></tr><tr><td>&nbsp;</td>');
     for (my $j=$halfnum; $j<@allfunctions; $j++) {      for (my $j=$halfnum; $j<@allfunctions; $j++) {
         $r->print('<td><input type="checkbox" name="tool" value="'.          $r->print('<td><label><input type="checkbox" name="tool" value="'.
                   $allfunctions[$j].'" />&nbsp;'.                    $allfunctions[$j].'" />&nbsp;'.
                   $$functions{$allfunctions[$j]}.'</td>                    $$functions{$allfunctions[$j]}.'</label></td>
                   <td>&nbsp;</td><td>&nbsp;</td>');                    <td>&nbsp;</td><td>&nbsp;</td>');
     }      }
     if ($remnum) {      if ($remnum) {
Line 1161  END Line 1177  END
       </tr>        </tr>
       <tr>        <tr>
        <td><b>Granularity:</b></td>         <td><b>Granularity:</b></td>
        <td colspan="9">'.$lt{'doyo'}.'&nbsp;<input type="radio" name="granularity" value="Yes" />'.&mt('Yes').'&nbsp;<input type="radio" name="granularity" value="No" checked="checked" />'.&mt('No'));         <td colspan="9">'.$lt{'doyo'}.'&nbsp;<label><input type="radio" name="granularity" value="Yes" />'.&mt('Yes').'</label>&nbsp;<label><input type="radio" name="granularity" value="No" checked="checked" />'.&mt('No').'</label>');
     if ($action eq 'modify') {      if ($action eq 'modify') {
         $r->print('&nbsp;&nbsp;('.&mt('Currently set to "[_1]"',          $r->print('&nbsp;&nbsp;('.&mt('Currently set to "[_1]"',
                                       $$stored{'granularity'}).')');                                        $$stored{'granularity'}).')');
Line 1196  sub membership_options { Line 1212  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 1309  sub choose_members_form { Line 1325  sub choose_members_form {
     my %origmembers;      my %origmembers;
     $r->print(&Apache::lonhtmlcommon::echo_form_input(      $r->print(&Apache::lonhtmlcommon::echo_form_input(
          ['origin','action','state','page','member','specificity','branch',           ['origin','action','state','page','member','specificity','branch',
           'defpriv','autorole','autoadd','autodrop','sortby'],            'defpriv','autorole','autoadd','autodrop','sortby','togglefunc'],
          \@regexps));           \@regexps));
     my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum);      my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum);
     $r->print('      $r->print('
Line 1599  sub pick_new_members { Line 1615  sub pick_new_members {
             if ($granularity eq 'Yes') {              if ($granularity eq 'Yes') {
                 $r->print('<tr bgcolor="#cccccc">                  $r->print('<tr bgcolor="#cccccc">
  <td colspan="5">&nbsp;</td>   <td colspan="5">&nbsp;</td>
  <td align="center"><small><nobr><b>All:</b>&nbsp;');   <td align="center"><small><nobr><b>'.&mt('All:').'</b>&nbsp;');
                 foreach my $tool (@{$available}) {                  foreach my $tool (@{$available}) {
                     $r->print('<input type="checkbox" name="togglefunc" '.                      $r->print('<label><input type="checkbox" name="togglefunc" '.
    'onclick="javascript:toggleTools(document.'.$formname.'.user_'.$tool.',this);">'.     'onclick="javascript:toggleTools(document.'.$formname.'.user_'.$tool.',this);"'.
    '<b>'.$tool.'</b>&nbsp;&nbsp;&nbsp;');     ' value="'.$tool.'">'.'<b>'.$tool.'</b></label>&nbsp;&nbsp;&nbsp;');
                 }                  }
                 $r->print('</nobr></small></td></tr>');                  $r->print('</nobr></small></td></tr>');
             }              }
Line 1753  sub privilege_specificity { Line 1769  sub privilege_specificity {
         }          }
         if ($totaloptionalprivs) {          if ($totaloptionalprivs) {
             $r->print('              $r->print('
 <br /><br /><nobr><input type="radio" name="specificity" value="No" '.$specific{'No'}.' />&nbsp;'.$lt{'algm'}.'</nobr><br/>  <br /><br /><label><nobr><input type="radio" name="specificity" value="No" '.$specific{'No'}.' />&nbsp;'.$lt{'algm'}.'</nobr></label><br/>
 <nobr><input type="radio" name="specificity" value="Yes" '.$specific{'Yes'}.' />&nbsp;'.$lt{'smgp'}.'</nobr>  <label><nobr><input type="radio" name="specificity" value="Yes" '.$specific{'Yes'}.' />&nbsp;'.$lt{'smgp'}.'</nobr></label>
   </td>    </td>
  </tr>   </tr>
  <tr>   <tr>
Line 1876  sub default_privileges { Line 1892  sub default_privileges {
                     $dynamic .= '</tr>                      $dynamic .= '</tr>
                                  <tr bgcolor="'.$rowColor1.'">'."\n";                                   <tr bgcolor="'.$rowColor1.'">'."\n";
                 }                  }
                 $dynamic .= '<td><input type="checkbox" name="defpriv" value="'.$priv.'" />'.$$toolprivs{$tool}{$priv}.'</td>'."\n";                  $dynamic .= '<td><label><input type="checkbox" name="defpriv" value="'.$priv.'" />'.$$toolprivs{$tool}{$priv}.'</label></td>'."\n";
             }              }
         }          }
         if ($dynamic eq '') {          if ($dynamic eq '') {
Line 1982  sub change_members_form { Line 1998  sub change_members_form {
     my @regexps = ('user_','userpriv_');      my @regexps = ('user_','userpriv_');
     $r->print(&Apache::lonhtmlcommon::echo_form_input(      $r->print(&Apache::lonhtmlcommon::echo_form_input(
                          ['origin','action','state','page','expire','deletion',                           ['origin','action','state','page','expire','deletion',
                           'reenable','activate','changepriv','sortby'],                            'reenable','activate','changepriv','sortby',
                           \@regexps));                            'togglefunc'],\@regexps));
     my $rowimg = 1;      my $rowimg = 1;
     my @available = ();      my @available = ();
     my @unavailable = ();      my @unavailable = ();
Line 2204  END Line 2220  END
  <td colspan="'.$colspan.'" align="center"><small><nobr><b>'.&mt('All:').   <td colspan="'.$colspan.'" align="center"><small><nobr><b>'.&mt('All:').
   '</b>&nbsp;');    '</b>&nbsp;');
                     foreach my $tool (@{$available}) {                      foreach my $tool (@{$available}) {
                         $r->print('<input type="checkbox" name="togglefunc" '.                          $r->print('<label><input type="checkbox" name="togglefunc"'.
    'onclick="javascript:toggleTools(document.'.$formname.'.user_'.$tool.',this);">'.     ' onclick="javascript:toggleTools(document.'.$formname.'.user_'.$tool.',this);"'.
    '<b>'.$tool.'</b>&nbsp;&nbsp;&nbsp;');     ' value="'.$tool.'">'.'<b>'.$tool.'</b></label>&nbsp;&nbsp;&nbsp;');
                     }                      }
                     $r->print('</nobr></small></td></tr>');                      $r->print('</nobr></small></td></tr>');
                 }                  }
Line 2243  END Line 2259  END
                     $r->print('<tr bgcolor="'.$rowColor.'">                      $r->print('<tr bgcolor="'.$rowColor.'">
                                 <td><small>');                                  <td><small>');
                     if ($current{$user}{changestate} eq 'reenable') {                      if ($current{$user}{changestate} eq 'reenable') {
                         $r->print('<nobr>'.                           $r->print('<nobr><label>'. 
    '<input type="checkbox" name="reenable" value="'.$user.'" />'.     '<input type="checkbox" name="reenable" value="'.$user.'" />'.
    $lt{'reen'}.'</nobr><br />');     $lt{'reen'}.'</label></nobr><br />');
                     } elsif ($current{$user}{changestate} eq 'expire') {                      } elsif ($current{$user}{changestate} eq 'expire') {
                         $r->print('<nobr>'.                          $r->print('<nobr><label>'.
    '<input type="checkbox" name="expire" value="'.$user.'" />'.     '<input type="checkbox" name="expire" value="'.$user.'" />'.
    $lt{'expi'}.'</nobr><br />');     $lt{'expi'}.'</label></nobr><br />');
                     } elsif ($current{$user}{changestate} eq 'activate') {                      } elsif ($current{$user}{changestate} eq 'activate') {
                         $r->print('<nobr>'.                          $r->print('<nobr><label>'.
    '<input type="checkbox" name="activate" value="'.$user.'" />'.     '<input type="checkbox" name="activate" value="'.$user.'" />'.
    $lt{'acti'}.'</nobr><br />');     $lt{'acti'}.'</label></nobr><br />');
                     }                      }
                     $r->print('<nobr>'.                      $r->print('<nobr><label>'.
    '<input type="checkbox" name="deletion" value="'.$user.'" />'.     '<input type="checkbox" name="deletion" value="'.$user.'" />'.
    $lt{'dele'}.'</nobr>');     $lt{'dele'}.'</label></nobr>');
                     if ($specificity eq 'Yes') {                      if ($specificity eq 'Yes') {
                         $r->print('<br /><nobr>'.                          $r->print('<br /><nobr><label>'.
    '<input type="checkbox" name="changepriv" value="'.$user.'" />'.$lt{'chpr'}.     '<input type="checkbox" name="changepriv" value="'.$user.'" />'.$lt{'chpr'}.
    '</nobr>');     '</label></nobr>');
                     }                      }
                     $r->print('                      $r->print('
    </td>     </td>
Line 2274  END Line 2290  END
                                   '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');                                    '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
                         foreach my $tool (@{$current{$user}{currtools}}) {                          foreach my $tool (@{$current{$user}{currtools}}) {
                             if ($granularity eq 'Yes') {                              if ($granularity eq 'Yes') {
                                 $r->print('<input type="checkbox"                                   $r->print('<label><input type="checkbox" '. 
                                        checked="checked"                                           'checked="checked" '. 
                                        name="user_'.$tool.'" value="'.                                         'name="user_'.$tool.'" value="'.
                                        $user.'" />');                                         $user.'" />'.$tool.'</label>');
                              } else {                               } else {
                                $r->print('<input type="hidden"                                 $r->print('<input type="hidden" '.
                                        checked="checked"                                         'checked="checked" '.
                                        name="user_'.$tool.'" value="'.                                         'name="user_'.$tool.'" value="'.
                                        $user.'" />');                                         $user.'" />'.$tool);
                              }                               }
                              $r->print($tool.'&nbsp;&nbsp;&nbsp;');                               $r->print('&nbsp;&nbsp;&nbsp;');
                         }                          }
                         $r->print('</nobr></small></td>');                          $r->print('</nobr></small></td>');
                     }                      }
Line 2292  END Line 2308  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><input type="checkbox"                                    $r->print('<nobr><label><input type="checkbox"
                                           name="user_'.$tool.'" value="'.                                            name="user_'.$tool.'" value="'.
                                           $user.'" />'.$tool.                                            $user.'" />'.$tool.
                                                   '</nobr>&nbsp;&nbsp;&nbsp;');                                            '</label></nobr>&nbsp;&nbsp;&nbsp;');
                             }                              }
                         } else {                          } else {
                             foreach my $tool (@{$current{$user}{newtools}}) {                              foreach my $tool (@{$current{$user}{newtools}}) {
Line 2695  END Line 2711  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 2794  sub write_group_data { Line 2809  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 2833  sub write_group_data { Line 2848  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_'.
Line 2894  sub process_membership { Line 2909  sub process_membership {
                   &Apache::loncommon::get_env_multiple('form.userpriv_'.$priv);                    &Apache::loncommon::get_env_multiple('form.userpriv_'.$priv);
                 foreach my $user (@users) {                  foreach my $user (@users) {
                     $group_privs{$user} .= $priv.':';                      $group_privs{$user} .= $priv.':';
                       if ($state eq 'memresult') { 
                           unless (exists($$usertools{$user}{$tool})) {
                               $$usertools{$user}{$tool} = 1;
                           }
                       }
                 }                  }
             } else {              } else {
                 if (@{$defprivs} > 0) {                  if (@{$defprivs} > 0) {
Line 2965  sub process_membership { Line 2985  sub process_membership {
                 }                  }
             }              }
         }          }
     }         }
   
     foreach my $user (sort(keys(%{$usertools}))) {      foreach my $user (sort(keys(%{$usertools}))) {
         my $type;          my $type;
Line 3004  sub process_membership { Line 3024  sub process_membership {
     if ($num_ok) {      if ($num_ok) {
         foreach my $type (sort(keys(%added))) {           foreach my $type (sort(keys(%added))) { 
             $r->print(&mt('The following users were successfully [_1]',$type));              $r->print(&mt('The following users were successfully [_1]',$type));
             if ($type eq 'activated' || $type eq 'added' || $type eq 'reenabled') {              if (!($type eq 'deleted' ||  $type eq 'expired')) {   
                 $r->print(&mt(' with the following privileges'));                  $r->print(&mt(' with the following privileges'));
             }              }
             $r->print(':<br />');              $r->print(':<br />');
             foreach my $user (@{$added{$type}}) {              foreach my $user (@{$added{$type}}) {
                 my $privlist;                  my $privlist = '';
                 if ($type eq 'activated' || $type eq 'added') {                  if (!($type eq 'deleted' ||  $type eq 'expired')) {
                       $privlist = ': ';
                     my @privs = split(/:/,$group_privs{$user});                      my @privs = split(/:/,$group_privs{$user});
                     my $curr_tool = '';                      my $curr_tool = '';
                     foreach my $priv (@privs) {                      foreach my $priv (@privs) {
Line 3022  sub process_membership { Line 3043  sub process_membership {
                     }                      }
                     $privlist =~ s/, $//;                      $privlist =~ s/, $//;
                 }                  }
                 $r->print($$userdata{$user}[$$idx{fullname}].'&nbsp;-&nbsp;'.$user.': '.$privlist.'<br />');                  $r->print($$userdata{$user}[$$idx{fullname}].'&nbsp;-&nbsp;'.$user.$privlist.'<br />');
             }              }
         }          }
     }      }
Line 3278  sub member_privs_entries { Line 3299  sub member_privs_entries {
                         if ($privcount == 3) {                          if ($privcount == 3) {
                             $dynamic .= '</tr><tr>';                              $dynamic .= '</tr><tr>';
                         }                          }
                         $dynamic .='<td><nobr><input type="checkbox" '.                          $dynamic .='<td><nobr><label><input type="checkbox" '.
                                'name="userpriv_'.$priv.'" value="'.$user.'"';                                 'name="userpriv_'.$priv.'" value="'.$user.'"';
                         if (grep/^\Q$priv\E$/,@{$defprivs}) {                          if (grep/^\Q$priv\E$/,@{$defprivs}) {
                             $dynamic .= ' checked="checked" ';                              $dynamic .= ' checked="checked" ';
                         }                          }
                         $dynamic .= ' />'.$$toolprivs{$tool}{$priv}.                          $dynamic .= ' />'.$$toolprivs{$tool}{$priv}.
                                     '</nobr></td>';                                      '</label></nobr></td>';
                     }                      }
                 }                  }
                 $r->print('<tr><td colspan="2"><nobr>'.$fixed.'</nobr></td></tr><tr>'.$dynamic.'</tr></table></td>');                  $r->print('<tr><td colspan="2"><nobr>'.$fixed.'</nobr></td></tr><tr>'.$dynamic.'</tr></table></td>');
Line 3313  sub date_setting_table { Line 3334  sub date_setting_table {
                                                       'startdate',$starttime);                                                        'startdate',$starttime);
     my $endform = &Apache::lonhtmlcommon::date_setter($formname,      my $endform = &Apache::lonhtmlcommon::date_setter($formname,
                                                       'enddate',$endtime);                                                        'enddate',$endtime);
     my $perpetual = '<nobr><input type="checkbox" name="no_end_date" />      my $perpetual = '<nobr><label><input type="checkbox" name="no_end_date" />
                                                   no ending date</nobr>';                                                  no ending date</label></nobr>';
     my $start_table = '';      my $start_table = '';
     $start_table .= "<table>\n";      $start_table .= "<table>\n";
     $start_table .= '<tr><td align="right">Default starting date for       $start_table .= '<tr><td align="right">Default starting date for 
Line 3391  sub validate_groupname { Line 3412  sub validate_groupname {
     my ($groupname,$action,$cdom,$cnum) = @_;      my ($groupname,$action,$cdom,$cnum) = @_;
     my %sectioncount;      my %sectioncount;
     my $numsec=&Apache::loncommon::get_sections($cdom,$cnum,\%sectioncount);      my $numsec=&Apache::loncommon::get_sections($cdom,$cnum,\%sectioncount);
     my %curr_groups;      my %curr_groups = &Apache::loncommon::coursegroups($cdom,$cnum);
     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 3407  sub validate_groupname { Line 3427  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 3423  sub validate_groupname { Line 3443  sub validate_groupname {
             return $earlyout;              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.6  
changed lines
  Added in v.1.15


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