Diff for /loncom/interface/loncoursegroups.pm between versions 1.20 and 1.21

version 1.20, 2006/05/18 22:13:48 version 1.21, 2006/05/22 22:35:46
Line 83  sub handler { Line 83  sub handler {
     my $rowColor2 = "#eeeeee";      my $rowColor2 = "#eeeeee";
   
     my $action = $env{'form.action'};      my $action = $env{'form.action'};
       my $state = $env{'form.state'};
       if ((!defined($action)) || ($action eq 'view')) {
           if (!defined($state)) {
               $state = 'view';
           }
       }
     if ($action eq 'create' || $action eq 'modify' || $action eq 'view') {       if ($action eq 'create' || $action eq 'modify' || $action eq 'view') { 
         if ($view_permission || $manage_permission) {          if ($view_permission || $manage_permission) {
             &group_administration($r,$action,$cdom,$cnum,$function,$tabcol,              &group_administration($r,$action,$state,$cdom,$cnum,$function,
                                   \%functions,\%idx,$view_permission,                                    $tabcol,\%functions,\%idx,$view_permission,
                                   $manage_permission,$rowColor1,$rowColor2);                                    $manage_permission,$rowColor1,$rowColor2);
         } else {          } else {
             $r->print(&mt('You do not have group administration '.              $r->print(&mt('You do not have group administration '.
Line 94  sub handler { Line 100  sub handler {
         }          }
     } else {      } else {
         &print_main_menu($r,$cdom,$cnum,$function,$tabcol,\%functions,\%idx,          &print_main_menu($r,$cdom,$cnum,$function,$tabcol,\%functions,\%idx,
                          $view_permission,$manage_permission,$action,                           $view_permission,$manage_permission,$action,$state,
                          $rowColor1,$rowColor2);                           $rowColor1,$rowColor2);
     }      }
     return OK;      return OK;
Line 102  sub handler { Line 108  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,$state,$rowColor1,$rowColor2) = @_;
     $r->print(&header('Course Groups',undef,undef,undef,undef,$function));      my $jscript = qq|
   function changeSort(caller) {
       document.$state.sortby.value = caller;
       document.$state.submit();
   }\n|;
       $r->print(&header('Course Groups',$jscript,$action,$state,
                         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('Course Groups'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('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,$state,
                     $rowColor2);                      $rowColor1,$rowColor2);
     $r->print(&footer());      $r->print(&footer());
     return;      return;
 }  }
   
 sub display_groups {  sub display_groups {
     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,$state,$rowColor1,$rowColor2) = @_;
     my %curr_groups = ();      my %curr_groups = ();
     my %grp_info = ();      my %grp_info = ();
   
     my %actionlinks = (      my %actionlinks = (
       modify => '<a href="/adm/coursegroups?action=modify&state=pick_task&refpage='.        modify => '<a href="/adm/coursegroups?action=modify&refpage='.
                 $env{'form.refpage'}.'&groupname=',                           $env{'form.refpage'}.'&groupname=',
       view => '<a href="/adm/'.$cdom.'/'.$cnum.'/',        view => '<a href="/adm/'.$cdom.'/'.$cnum.'/',
       delete => '<a href="/adm/coursegroups?action=delete&refpage='.        delete => '<a href="/adm/coursegroups?action=delete&refpage='.
                 $env{'form.refpage'}.'&groupname=',                           $env{'form.refpage'}.'&groupname=',
     );      );
     my %lt = &Apache::lonlocal::texthash(       my %lt = &Apache::lonlocal::texthash( 
                           modify => 'Modify',                            modify => 'Modify',
Line 174  sub display_groups { Line 185  sub display_groups {
         <td><b>$lt{'func'}</b>          <td><b>$lt{'func'}</b>
         </td>          </td>
         <td><b><a href="javascript:changeSort('quota')">$lt{'quot'}</a></b></td>          <td><b><a href="javascript:changeSort('quota')">$lt{'quot'}</a></b></td>
         <td><b><a href="javascript:changeSort('totalmembers)">$lt{'memb'}</a></b></td>          <td><b><a href="javascript:changeSort('totalmembers')">$lt{'memb'}</a></b></td>
         <td><b><a href="javascript:changeSort('totalfiles')">$lt{'file'}</a></b></td>          <td><b><a href="javascript:changeSort('totalfiles')">$lt{'file'}</a></b></td>
         <td><b><a href="javascript:changeSort('boards')">$lt{'dibd'}</a></b></td>          <td><b><a href="javascript:changeSort('boards')">$lt{'dibd'}</a></b></td>
         <td><b><a href="javascript:changeSort('diskuse')">$lt{'dius'}</a></b></td>          <td><b><a href="javascript:changeSort('diskuse')">$lt{'dius'}</a></b></td>
Line 248  END Line 259  END
                     } else {                      } else {
                         $link .= $group.'/grppg';                          $link .= $group.'/grppg';
                     }                      }
                     $link .= '">'.$lt{$action}.'</a>';                        $link .= '">'.$lt{$action}.'</a>';
                       if ($action eq 'view') { 
                           if (($manage_permission) && 
                               ($env{'form.refpage'} ne 'enrl')) {
                               $link .= '&nbsp;&nbsp;'.$actionlinks{'modify'}.
                                         $group.'">'.$lt{'modify'}.'</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>');
                     $rowNum ++;                      $rowNum ++;
                 }                  }
             }              }
             $r->print('</table>');              $r->print('</table>');
             $r->print(&Apache::lonhtmlcommon::end_pick_box());              $r->print(&Apache::lonhtmlcommon::end_pick_box());
               $r->print('<input type="hidden" name="refpage" '.
                         'value="'.$env{'form.refpage'}.'" />');
               if ($action eq 'view') {
                   if (!defined($state)) {
                       $state = 'view';
                   }
                   $r->print('<input type="hidden" name="state" value="'.
                         $state.'" />');
               }
         } else {          } else {
             $r->print($lt{'nogr'});              $r->print($lt{'nogr'});
             if ($manage_permission) {              if ($manage_permission) {
Line 288  END Line 315  END
 }  }
   
 sub group_administration {  sub group_administration {
     my ($r,$action,$cdom,$cnum,$function,$tabcol,$functions,$idx,      my ($r,$action,$state,$cdom,$cnum,$function,$tabcol,$functions,$idx,
         $view_permission,$manage_permission,$rowColor1,$rowColor2) = @_;          $view_permission,$manage_permission,$rowColor1,$rowColor2) = @_;
     my %sectioncount = ();      my %sectioncount = ();
     my @tools = ();      my @tools = ();
Line 303  sub group_administration { Line 330  sub group_administration {
     my %memchg;      my %memchg;
     my @member_changes = ('deletion','expire','activate','reenable',      my @member_changes = ('deletion','expire','activate','reenable',
                           'changefunc','changepriv');                            'changefunc','changepriv');
     my $state = $env{'form.state'};  
     my ($groupname,$description,$startdate,$enddate,$granularity,$specificity);      my ($groupname,$description,$startdate,$enddate,$granularity,$specificity);
   
     if (defined($env{'form.groupname'})) {      if (defined($env{'form.groupname'})) {
Line 342  sub group_administration { Line 368  sub group_administration {
   
     if ($action eq 'modify') {      if ($action eq 'modify') {
         if ($state eq '') {          if ($state eq '') {
             $state = 'pick_group';              if (defined($env{'form.groupname'})) {
                   $state = 'pick_task';
               } else {
                   $state = 'pick_group';
               }
         } else {          } else {
             %stored = &retrieve_settings($cdom,$cnum,$groupname);              %stored = &retrieve_settings($cdom,$cnum,$groupname);
             if (ref($stored{'types'}) eq 'ARRAY') {              if (ref($stored{'types'}) eq 'ARRAY') {
Line 560  sub group_administration { Line 590  sub group_administration {
     }      }
   
     if (($state eq 'pick_privs') || ($state eq 'change_privs') ||      if (($state eq 'pick_privs') || ($state eq 'change_privs') ||
         (($specificity eq 'No') &&            (($specificity eq 'No') && 
          (($state eq 'addresult') || ($state eq 'memresult')))) {            ($state eq 'memresult' || $state eq 'result' || $state eq 'addresult'))) { 
         foreach my $tool (@tools) {          foreach my $tool (@tools) {
             my @values = &Apache::loncommon::get_env_multiple('form.user_'.$tool);              my @values = &Apache::loncommon::get_env_multiple('form.user_'.$tool);
             foreach my $user (@values) {              foreach my $user (@values) {
                   if ($state eq 'pick_privs' || $state eq 'result' 
                       || $state eq 'addresult') {
                       if (!grep(/^\Q$user\E$/,@members)) {
                           next;
                       }
                   }
                 unless(exists($usertools{$user}{$tool})) {                  unless(exists($usertools{$user}{$tool})) {
                     $usertools{$user}{$tool} = 1;                      $usertools{$user}{$tool} = 1;
                 }                  }
Line 705  function changeSort(caller) { Line 741  function changeSort(caller) {
     @{$branchstates{'members'}} = ('change_members','change_privs','memresult');      @{$branchstates{'members'}} = ('change_members','change_privs','memresult');
     @{$branchstates{'adds'}} = ('add_members','pick_members','pick_privs',      @{$branchstates{'adds'}} = ('add_members','pick_members','pick_privs',
                                 'addresult');                                  'addresult');
       
     if (defined($env{'form.branch'})) {      if (defined($env{'form.branch'})) {
         push (@{$states{$action}},@{$branchstates{$env{'form.branch'}}});          push (@{$states{$action}},@{$branchstates{$env{'form.branch'}}});
     }      }
Line 801  function changeSort(caller) { Line 837  function changeSort(caller) {
         $r->print(&Apache::lonhtmlcommon::breadcrumbs          $r->print(&Apache::lonhtmlcommon::breadcrumbs
   ('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,$state,
                         $rowColor1,$rowColor2);                          $rowColor1,$rowColor2);
   
     }      }
Line 903  sub display_control { Line 939  sub display_control {
         my $groupname = $env{'form.groupname'};          my $groupname = $env{'form.groupname'};
         if ($state eq 'pick_group') {          if ($state eq 'pick_group') {
             &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,$state,
                             $rowColor1,$rowColor2);                              $rowColor1,$rowColor2);
         } elsif ($state eq 'pick_task') {          } elsif ($state eq 'pick_task') {
             &modify_menu($r,$groupname,$page);              &modify_menu($r,$groupname,$page);
Line 1207  sub membership_options { Line 1243  sub membership_options {
                 'meof' => 'members of the new group.',                  'meof' => 'members of the new group.',
                 'admg' => 'additional members of the group.',                  'admg' => 'additional members of the group.',
                 'ifno' => 'If you do not wish to add members when you first '.                  'ifno' => 'If you do not wish to add members when you first '.
                           'create the group, do not make any selections',                              'create the group, do not make any selections.',
                   'asub' => 'A subsequent step will also allow you to specify automatic adding/dropping of group members triggered by specified role and section changes.',
                 'acty' => 'Access types',                  'acty' => 'Access types',
                 'coro' => 'Course roles',                  'coro' => 'Course roles',
                 'cose' => 'Course sections',                  'cose' => 'Course sections',
Line 1229  sub membership_options { Line 1266  sub membership_options {
     <td colspan="3">      <td colspan="3">
      <b>'.$lt{'gmem'}.'</b><br/>'.$lt{'picr'});       <b>'.$lt{'gmem'}.'</b><br/>'.$lt{'picr'});
     if ($action eq 'create') {      if ($action eq 'create') {
         $r->print($lt{'meof'}.'<br />'.$lt{'ifno'});          $r->print($lt{'meof'}.'<br />'.$lt{'ifno'}.'<br />'.$lt{'asub'});
     } else {      } else {
         $r->print($lt{'admg'});          $r->print($lt{'admg'});
     }      }
Line 2906  sub process_membership { Line 2943  sub process_membership {
     my $num_fail = 0;      my $num_fail = 0;
     my %group_privs = ();      my %group_privs = ();
     my %curr_privs = ();      my %curr_privs = ();
       my %curr_start = ();
       my %curr_end = ();
     my %tooltype = ();      my %tooltype = ();
   
     foreach my $tool (@{$tools}) {      foreach my $tool (@{$tools}) {
Line 2962  sub process_membership { Line 3001  sub process_membership {
                                                                  $groupname);                                                                   $groupname);
         foreach my $key (sort(keys(%membership))) {          foreach my $key (sort(keys(%membership))) {
             if ($key =~ /^\Q$groupname\E:([^:]+:[^:]+)$/) {              if ($key =~ /^\Q$groupname\E:([^:]+:[^:]+)$/) {
                 (undef,undef,$curr_privs{$1})=split(/:/,$membership{$key},3);                  ($curr_end{$1},$curr_start{$1},$curr_privs{$1}) = 
                                                   split(/:/,$membership{$key},3);
             }              }
         }          }
         if (@expire + @deletion > 0) {          if (@expire + @deletion > 0) {
             foreach my $user (@expire) {              foreach my $user (@expire) {
                 my ($currend,$currstart,$grp_privs) =                   my $savestart = $curr_start{$user};
                               split(/:/,$membership{$groupname.':'.$user},3);                  if ($savestart > $now) {
                 if ($currstart > $now) {                      $savestart = $now;
                     $currstart = $now;  
                 }                  }
                 $usersettings{$groupname.':'.$user} = $now.':'.$currstart.':'.                  $usersettings{$groupname.':'.$user} = $now.':'.$savestart.':'.
                                                       $grp_privs;                                                        $curr_privs{$user};
                 if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname,                  if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname,
                                                        $user,$now,$currstart,                                                         $user,$now,$savestart,
                                                        $grp_privs) eq 'ok') {                                                         $curr_privs{$user}) eq 'ok') {
                     push(@{$added{'expired'}},$user);                      push(@{$added{'expired'}},$user);
                     $num_ok ++;                      $num_ok ++;
                 } else {                  } else {
Line 3011  sub process_membership { Line 3050  sub process_membership {
                push(@unchanged,$user);                 push(@unchanged,$user);
                next;                 next;
             }              }
               if (exists($curr_start{$user})) {
                   $start = $curr_start{$user};
               }
               if (exists($curr_end{$user})) {
                   $end = $curr_end{$user};
               }
             $type = 'modified';              $type = 'modified';
             if (@activate > 0) {              if (@activate > 0) {
                 if (grep/^$user$/,@activate) {                  if (grep/^$user$/,@activate) {
                     $start = $now;                      $start = $now;
                       $end = $enddate;
                     $type = 'activated';                      $type = 'activated';
                 }                  }
             }              }
             if (@reenable > 0) {              if (@reenable > 0) {
                 if (grep/^$user$/,@reenable) {                  if (grep/^$user$/,@reenable) {
                       $start = $startdate;
                       $end = $enddate;
                     $type = 'reenabled';                      $type = 'reenabled';
                 }                  }
             }              }

Removed from v.1.20  
changed lines
  Added in v.1.21


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