Diff for /loncom/interface/loncoursegroups.pm between versions 1.67 and 1.78

version 1.67, 2006/12/04 14:59:56 version 1.78, 2008/08/24 12:54:55
Line 140  function openGroupRoster(group,status) { Line 140  function openGroupRoster(group,status) {
     rosterbrowser.focus();      rosterbrowser.focus();
 }\n|;  }\n|;
     $r->print(&header('Groups',$jscript,$action,$state));      $r->print(&header('Groups',$jscript,$action,$state));
     if ($env{'form.refpage'} eq 'enrl') {      if ($env{'form.refpage'} eq 'cusr') {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>"/adm/dropadd",              ({href=>"/adm/createuser",
               text=>"Enrollment Manager"});                text=>"User Management"});
     }      }
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"/adm/coursegroups",          ({href=>"/adm/coursegroups",
           text=>"Groups"});            text=>"Groups"});
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Groups'));      my $helpitem;
       if ($manage_permission) {
           $helpitem = 'Creating_Groups';
       }
       $r->print(&Apache::lonhtmlcommon::breadcrumbs('Groups',$helpitem));
     &display_groups($r,$cdom,$cnum,$functions,$idx,$view_permission,      &display_groups($r,$cdom,$cnum,$functions,$idx,$view_permission,
     $manage_permission,$action,$state,$gpterm,$ucgpterm,      $manage_permission,$action,$state,$gpterm,$ucgpterm,
     $crstype);      $crstype);
Line 189  sub display_groups { Line 193  sub display_groups {
                           dius   => 'Disk Use (%)',                            dius   => 'Disk Use (%)',
                           nogr   => 'No groups exist.',                            nogr   => 'No groups exist.',
                           crng   => 'Create a new group',                            crng   => 'Create a new group',
                             redg   => 'Re-enable a deleted group',
                           alth   => 'Although your current role has privileges'.                            alth   => 'Although your current role has privileges'.
                                     ' to view any existing groups in this '.                                      ' to view any existing groups in this '.
                                     lc($crstype).', you do not have privileges '.                                      lc($crstype).', you do not have privileges '.
Line 198  sub display_groups { Line 203  sub display_groups {
         if (!defined($action)) {          if (!defined($action)) {
             $action = 'view';              $action = 'view';
         }          }
         my $status;          my ($status,$reenable_link);
         if ($action eq 'reenable') {          if ($action eq 'reenable') {
             $status = 'deleted_groups';              $status = 'deleted_groups';
           } else {
               if ($manage_permission) {
                   my %deleted_groups = 
                       &Apache::longroup::coursegroups($cdom,$cnum,undef,'deleted_groups');
                   if (keys(%deleted_groups) > 0) {
                       $reenable_link = '&nbsp;&nbsp;&nbsp;&nbsp;<a href="/adm/coursegroups?action=reenable&amp;refpage='.$env{'form.refpage'}.'">'.$lt{'redg'}.'</a>';
                   }
               }
         }          }
         my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,undef,          my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,undef,
                                                           $status);                                                            $status);
   
         if (%curr_groups) {          if (%curr_groups) {
             if ($manage_permission) {              if ($manage_permission) {
                 if (!exists($env{'form.refpage'})) {                   if ($action ne 'reenable') {
                     $r->print('<br /><a href="/adm/coursegroups?action=create">'.$lt{'crng'}.'</a>');                      $r->print('<br /><a href="/adm/coursegroups?action=create&amp;refpage='.$env{'form.refpage'}.'">'.$lt{'crng'}.'</a>');
                   }
                   if ($reenable_link) {
                       $r->print($reenable_link);
                 }                  }
             }              }
             $r->print('<br /><br />');              $r->print('<br /><br />');
Line 237  END Line 254  END
                 my $members_result = &group_members($cdom,$cnum,$group,                  my $members_result = &group_members($cdom,$cnum,$group,
                                                     \%grp_info);                                                      \%grp_info);
                 my $port_path = '/userfiles/groups/'.$group.'/portfolio';                  my $port_path = '/userfiles/groups/'.$group.'/portfolio';
                 my $port_dir = &Apache::loncommon::propath($cdom,$cnum).$port_path;  
                 my $totaldirs = 0;                  my $totaldirs = 0;
                 my $totalfiles = 0;                  my $totalfiles = 0;
                 &group_files($group,$port_dir,\$totalfiles,\$totaldirs);                  &group_files($group,$port_path,\$totalfiles,\$totaldirs);
                 $grp_info{$group}{'totalfiles'} = $totalfiles;                  $grp_info{$group}{'totalfiles'} = $totalfiles;
                 $grp_info{$group}{'totaldirs'} = $totaldirs;                  $grp_info{$group}{'totaldirs'} = $totaldirs;
                 my $diskuse = &Apache::lonnet::diskusage($cdom,$cnum,$port_dir);                  my $getpropath = 1;  
                   my $diskuse = &Apache::lonnet::diskusage($cdom,$cnum,$port_path,                                                         $getpropath);
                 if ($grp_info{$group}{'quota'} > 0) {                  if ($grp_info{$group}{'quota'} > 0) {
                     my $pct_use = 0.1 * $diskuse/$grp_info{$group}{'quota'};                      my $pct_use = 0.1 * $diskuse/$grp_info{$group}{'quota'};
                     $grp_info{$group}{'diskuse'} = sprintf("%.0f",$pct_use);                      $grp_info{$group}{'diskuse'} = sprintf("%.0f",$pct_use);
Line 312  END Line 329  END
                     }                      }
                     $link .= '">'.$lt{$action}.'</a>';                      $link .= '">'.$lt{$action}.'</a>';
                     if ($action eq 'view') {                       if ($action eq 'view') { 
                         if (($manage_permission) &&                           if ($manage_permission) { 
                             ($env{'form.refpage'} ne 'enrl')) {  
                             $link .= '&nbsp;&nbsp;'.$actionlinks{'modify'}.                              $link .= '&nbsp;&nbsp;'.$actionlinks{'modify'}.
                                       $group.'">'.$lt{'modify'}.'</a>'.                                        $group.'">'.$lt{'modify'}.'</a>'.
                                      '&nbsp;&nbsp;'.$actionlinks{'delete'}.                                       '&nbsp;&nbsp;'.$actionlinks{'delete'}.
Line 349  END Line 365  END
         } else {          } else {
             $r->print($lt{'nogr'});              $r->print($lt{'nogr'});
             if ($manage_permission) {              if ($manage_permission) {
                 if (!exists($env{'form.refpage'})) {                  $r->print('<br /><br /><a href="/adm/coursegroups?action=create&amp;refpage='.$env{'form.refpage'}.'">'.$lt{'crng'}.'</a>');
                     $r->print('<br /><br /><a href="/adm/coursegroups?action=create">'.$lt{'crng'}.'</a>');                  if ($action ne 'reenable') {
                       if ($reenable_link) {
                           $r->print($reenable_link);
                       }
                 }                  }
             } else {              } else {
                 $r->print('<br /><br />'.$lt{'alth'});                  $r->print('<br /><br />'.$lt{'alth'});
   
             }              }
         }          }
     } else {      } else {
Line 388  sub group_administration { Line 406  sub group_administration {
     my @types = ();      my @types = ();
     my @roles = ();      my @roles = ();
     my @sections = ();      my @sections = ();
     my @buildsections = ();  
     my %users = ();      my %users = ();
     my %userdata = ();      my %userdata = ();
     my @members = ();      my @members = ();
Line 548  sub group_administration { Line 565  sub group_administration {
         }          }
         if (defined($env{'form.sectionpick'})) {          if (defined($env{'form.sectionpick'})) {
             @sections=&Apache::loncommon::get_env_multiple('form.sectionpick');              @sections=&Apache::loncommon::get_env_multiple('form.sectionpick');
             if (grep/^all$/,@sections) {  
                 @buildsections = sort {$a cmp $b} keys(%sectioncount);  
             } else {  
                 @buildsections = @sections;  
             }  
         }          }
     }      }
   
     if (($state eq 'pick_members') || ($state eq 'pick_privs') || ($state eq 'change_privs')) {      if (($state eq 'pick_members') || ($state eq 'pick_privs') || ($state eq 'change_privs')) {
         &build_members_list($cdom,$cnum,\@types,\@roles,\@buildsections,\%users,          &build_members_list($cdom,$cnum,\@types,\@roles,\@sections,\%users,
                             \%userdata);                              \%userdata);
     }      }
     if ($state eq 'pick_members') {      if ($state eq 'pick_members') {
Line 848  function changeSort(caller) { Line 860  function changeSort(caller) {
     $r->print(&header("Groups Manager",      $r->print(&header("Groups Manager",
       $jscript,$action,$state,$page,$loaditems));        $jscript,$action,$state,$page,$loaditems));
   
     if ($env{'form.refpage'} eq 'enrl') {      if ($env{'form.refpage'} eq 'cusr') {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"/adm/dropadd",          ({href=>"/adm/createuser",
           text=>"Enrollment Manager",            text=>"User Management",
           faq=>9,bug=>'Instructor Interface',});            faq=>9,bug=>'Instructor Interface',});
         if ($action eq 'modify' || $action eq 'delete') {          if ($action eq 'modify' || $action eq 'delete') {
             &Apache::lonhtmlcommon::add_breadcrumb              &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>"/adm/coursegroups?refpage=enrl&action=$action",              ({href=>"/adm/coursegroups?refpage=cusr&action=$action",
               text=>"Groups",                text=>"Groups",
               faq=>9,bug=>'Instructor Interface',});                faq=>9,bug=>'Instructor Interface',});
         }          }
Line 1132  sub verify_delete { Line 1144  sub verify_delete {
     my $prevtext = &mt('Go back');      my $prevtext = &mt('Go back');
     my $nexttext = &mt('Delete group');      my $nexttext = &mt('Delete group');
     my $prev;      my $prev;
     if ($env{'form.refpage'} eq 'enrl')  {      if ($env{'form.refpage'} eq 'cusr')  {
         $prev = 'view';          $prev = 'view';
     }      }
     &display_navbuttons($r,$formname,$prev,$prevtext,      &display_navbuttons($r,$formname,$prev,$prevtext,
Line 1151  sub delete_group { Line 1163  sub delete_group {
     my @deleted;      my @deleted;
     my @undeleted;      my @undeleted;
     my %usersettings;      my %usersettings;
       my $context = 'deletegroup';
     foreach my $key (sort(keys(%membership))) {      foreach my $key (sort(keys(%membership))) {
         if ($key =~ /^\Q$groupname\E:([^:]+:[^:]+)$/) {          if ($key =~ /^\Q$groupname\E:([^:]+:[^:]+)$/) {
             my $user = $1;              my $user = $1;
Line 1160  sub delete_group { Line 1173  sub delete_group {
                 $usersettings{$groupname.':'.$user} = $now.':-1:'.$userprivs;                  $usersettings{$groupname.':'.$user} = $now.':-1:'.$userprivs;
                 if (&Apache::lonnet::modify_group_roles($cdom,$cnum,                  if (&Apache::lonnet::modify_group_roles($cdom,$cnum,
                                                         $groupname,$user,                                                          $groupname,$user,
                                                         $now,'-1',$userprivs)                                                          $now,'-1',$userprivs,
                                                           '',$context)
                     eq 'ok') {                      eq 'ok') {
                     $num_ok ++;                      $num_ok ++;
                     push(@deleted,$user);                      push(@deleted,$user);
Line 1216  sub reenable_folder { Line 1230  sub reenable_folder {
         $LONCAPA::map::order[1+$#LONCAPA::map::order]=$idx;          $LONCAPA::map::order[1+$#LONCAPA::map::order]=$idx;
         my ($outtext,$errtext) = &LONCAPA::map::storemap($allgrpsmap,1);          my ($outtext,$errtext) = &LONCAPA::map::storemap($allgrpsmap,1);
         if ($errtext) {          if ($errtext) {
             $outcome = &mt('Error storing updated parent folder to group').              $outcome = &mt('Error saving updated parent folder to group').
                            "- $allgrpsmap - $errtext".'<br />';                             "- $allgrpsmap - $errtext".'<br />';
         } else {          } else {
             my ($furl,$ferr) =              my ($furl,$ferr) =
Line 1266  sub modify_folders { Line 1280  sub modify_folders {
                 $#LONCAPA::map::order--;                  $#LONCAPA::map::order--;
                 my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1);                  my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1);
                 if ($errtext) {                  if ($errtext) {
                     $outcome = &mt('Error storing updated parent folder to group'). "- $map - $errtext".'<br />';                      $outcome = &mt('Error saving updated parent folder to group'). "- $map - $errtext".'<br />';
                 } else {                  } else {
                     my ($furl,$ferr) =                      my ($furl,$ferr) =
                         &Apache::lonuserstate::readmap($cdom.'/'.$cnum);                          &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
Line 1288  sub verify_reenable { Line 1302  sub verify_reenable {
     my $prevtext = &mt('Go back');      my $prevtext = &mt('Go back');
     my $nexttext = &mt('Reenable group');      my $nexttext = &mt('Reenable group');
     my $prev;      my $prev;
     if ($env{'form.refpage'} eq 'enrl')  {      if ($env{'form.refpage'} eq 'cusr')  {
         $prev = 'view';          $prev = 'view';
     }      }
     &display_navbuttons($r,$formname,$prev,$prevtext,      &display_navbuttons($r,$formname,$prev,$prevtext,
Line 1320  sub reenable_group { Line 1334  sub reenable_group {
     my $num_users = 0;      my $num_users = 0;
     my $num_ok = 0;      my $num_ok = 0;
     my $num_fail = 0;      my $num_fail = 0;
       my $context = 'reenablegroup';
     my (%usersettings,@enabled,@unenabled);      my (%usersettings,@enabled,@unenabled);
     my ($result,$message) =      my ($result,$message) =
           &Apache::lonnet::toggle_coursegroup_status($cdom,$cnum,$groupname,            &Apache::lonnet::toggle_coursegroup_status($cdom,$cnum,$groupname,
Line 1339  sub reenable_group { Line 1354  sub reenable_group {
                     if (&Apache::lonnet::modify_group_roles($cdom,$cnum,                      if (&Apache::lonnet::modify_group_roles($cdom,$cnum,
                                                             $groupname,$user,                                                              $groupname,$user,
                                                             $defend,$defstart,                                                              $defend,$defstart,
                                                             $userprivs) eq 'ok') {                                                              $userprivs,'',
   $context) eq 'ok') {
                         $num_ok ++;                          $num_ok ++;
                         push(@enabled,$user);                          push(@enabled,$user);
                     } else {                      } else {
Line 1442  sub build_members_list { Line 1458  sub build_members_list {
 }  }
   
 sub group_files {  sub group_files {
     my ($group,$currdir,$numfiles,$numdirs) = @_;      my ($group,$portpath,$numfiles,$numdirs) = @_;
     my $dirptr=16384;      my $dirptr=16384;
     my @dir_list=&Apache::portfolio::get_dir_list($currdir,$group);      my @dir_list=&Apache::portfolio::get_dir_list($portpath,undef,$group);
     foreach my $line (@dir_list) {      foreach my $line (@dir_list) {
         my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);          my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);
         if (($filename !~ /^\.\.?$/) && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/) && ($filename ne 'no_such_dir')) {           if (($filename !~ /^\.\.?$/) && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/) && ($filename ne 'no_such_dir')) { 
             if ($dirptr&$testdir) {              if ($dirptr&$testdir) {
                 $currdir .= '/'.$filename;                  $portpath .= '/'.$filename;
                 $$numdirs ++;                  $$numdirs ++;
                 &group_files($numfiles,$numdirs)                  &group_files($group,$portpath,$numfiles,$numdirs)
             } else {              } else {
                 $$numfiles ++;                  $$numfiles ++;
             }              }
Line 1558  sub groupsettings_options { Line 1574  sub groupsettings_options {
                   'for different group members?',                    'for different group members?',
     );      );
     my ($crsquota,$freespace,$maxposs) = &get_quota_constraints($action,$stored);      my ($crsquota,$freespace,$maxposs) = &get_quota_constraints($action,$stored);
     &topic_bar($r,$image,$lt{'gnde'});      $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'gnde'}).'
     $r->print('  
      <table class="LC_descriptive_input">       <table class="LC_descriptive_input">
       <tr>        <tr>
        <td class="LC_description">'.$lt{'gnam'}.':</td>         <td class="LC_description">'.$lt{'gnam'}.':</td>
Line 1697  sub membership_options { Line 1712  sub membership_options {
   
     my @sections = keys(%{$sectioncount});      my @sections = keys(%{$sectioncount});
   
     &topic_bar($r,$image,$lt{'pipa'});      $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'pipa'}).'
     $r->print('  
      <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'}.'<br />'.$lt{'asub'});          $r->print($lt{'meof'}.'<br />'.$lt{'ifno'}.'<br />'.$lt{'asub'});
Line 1768  sub access_date_settings { Line 1782  sub access_date_settings {
         }          }
     }      }
     my ($table) = &date_setting_table($starttime,$endtime,$formname);      my ($table) = &date_setting_table($starttime,$endtime,$formname);
     &topic_bar($r,$image,$lt{'sten'});      $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'sten'}).'
     $r->print('  
     '.$table.'      '.$table.'
     ');      ');
     return;      return;
Line 2007  sub pick_new_members { Line 2020  sub pick_new_members {
             $r->print(&check_uncheck_tools($r,$available));              $r->print(&check_uncheck_tools($r,$available));
         }          }
     }      }
     &topic_bar($r,$img,$lt{'gpme'});      $r->print(&Apache::lonhtmlcommon::topic_bar($img,$lt{'gpme'}));
     if (keys(%members) > 0) {      if (keys(%members) > 0) {
         $r->print('          $r->print('
     <table>      <table>
Line 2156  sub privilege_specificity { Line 2169  sub privilege_specificity {
             }              }
         }          }
     }      }
     &topic_bar($r,$img,$lt{'uprv'});      $r->print(&Apache::lonhtmlcommon::topic_bar($img,$lt{'uprv'}));
     if ((($action eq 'create') && (@{$available} > 0)) ||       if ((($action eq 'create') && (@{$available} > 0)) || 
         (($action eq 'modify') && ($formname eq 'change_settings'))) {          (($action eq 'modify') && ($formname eq 'change_settings'))) {
         my %specific = (          my %specific = (
Line 2397  sub change_members_form { Line 2410  sub change_members_form {
     $r->print('      $r->print('
 <br />  <br />
 ');  ');
     &topic_bar($r,1,$lt{'grse'});      $r->print(&Apache::lonhtmlcommon::topic_bar(1,$lt{'grse'}));
     &print_current_settings($r,$action,$functions,$startdate,$enddate,      &print_current_settings($r,$action,$functions,$startdate,$enddate,
     $groupname,$description,$granularity,$quota,      $groupname,$description,$granularity,$quota,
     \@available,\@unavailable,$gpterm,$ucgpterm);      \@available,\@unavailable,$gpterm,$ucgpterm);
     &topic_bar($r,2,$lt{'mogm'});      $r->print(&Apache::lonhtmlcommon::topic_bar(2,$lt{'mogm'}));
     my $numcurrent = &current_membership($r,$cdom,$cnum,$formname,$groupname,      my $numcurrent = &current_membership($r,$cdom,$cnum,$formname,$groupname,
                                          \@available,\@unavailable,$fixedprivs,                                           \@available,\@unavailable,$fixedprivs,
                  $granularity,$specificity);                   $granularity,$specificity);
Line 2651  sub change_privs_form { Line 2664  sub change_privs_form {
     } else {      } else {
         $nexttext = $$navbuttons{'mose'};          $nexttext = $$navbuttons{'mose'};
     }      }
     &topic_bar($r,3,&mt('Members to delete or expire'));      $r->print(&Apache::lonhtmlcommon::topic_bar(3,&mt('Members to delete or expire')));
     my $exp_or_del = 0;      my $exp_or_del = 0;
     if (ref($$memchg{'deletion'}) eq 'ARRAY') {      if (ref($$memchg{'deletion'}) eq 'ARRAY') {
         if (@{$$memchg{'deletion'}} > 0) {          if (@{$$memchg{'deletion'}} > 0) {
Line 2679  sub change_privs_form { Line 2692  sub change_privs_form {
         $r->print($lt{'nome'}.'<br />');          $r->print($lt{'nome'}.'<br />');
     }      }
           
     &topic_bar($r,4,&mt('Setting optional privileges for specific group members'));      $r->print(&Apache::lonhtmlcommon::topic_bar(4,&mt('Setting optional privileges for specific group members')));
   
     my $numchgs = &member_privileges_form($r,$action,$formname,$tools,      my $numchgs = &member_privileges_form($r,$action,$formname,$tools,
                                           $toolprivs,$fixedprivs,$userdata,                                            $toolprivs,$fixedprivs,$userdata,
Line 2736  sub choose_privs_form { Line 2749  sub choose_privs_form {
         $nexttext = $$navbuttons{'adme'};          $nexttext = $$navbuttons{'adme'};
     }      }
   
     &topic_bar($r,6,&mt('Setting optional privileges for specific group members'));      $r->print(&Apache::lonhtmlcommon::topic_bar(6,&mt('Setting optional privileges for specific group members')));
   
     &member_privileges_form($r,$action,$formname,$tools,$toolprivs,      &member_privileges_form($r,$action,$formname,$tools,$toolprivs,
                             $fixedprivs,$userdata,$usertools,$idx,undef,                              $fixedprivs,$userdata,$usertools,$idx,undef,
Line 3139  sub write_group_data { Line 3152  sub write_group_data {
                                            $description,$tools,\%groupinfo,                                             $description,$tools,\%groupinfo,
                                            $gpterm,$ucgpterm,$crstype);                                             $gpterm,$ucgpterm,$crstype);
             if ($result ne 'ok') {              if ($result ne 'ok') {
                 $r->print(&mt('A problem occurred when creating folders for the new [_1].<br/>[_2]<br />',$gpterm,$result));                  $r->print(&mt('A problem occurred when creating folders for the new [_1].<br />[_2]<br />',$gpterm,$result));
             }              }
             $r->print(&mt('[_1] [_2] was created.<br />',$ucgpterm,$groupname));              $r->print(&mt('[_1] [_2] was created.<br />',$ucgpterm,$groupname));
         } elsif ($action eq 'modify') {          } elsif ($action eq 'modify') {
Line 3213  sub process_membership { Line 3226  sub process_membership {
     my %curr_start = ();      my %curr_start = ();
     my %curr_end = ();      my %curr_end = ();
     my %tooltype = ();      my %tooltype = ();
       my $context = 'processgroupmembership';
   
     foreach my $tool (@{$tools}) {      foreach my $tool (@{$tools}) {
         foreach my $priv (sort(keys(%{$$toolprivs{$tool}}))) {          foreach my $priv (sort(keys(%{$$toolprivs{$tool}}))) {
Line 3282  sub process_membership { Line 3296  sub process_membership {
                                                       $curr_privs{$user};                                                        $curr_privs{$user};
                 if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname,                  if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname,
                                                        $user,$now,$savestart,                                                         $user,$now,$savestart,
                                                        $curr_privs{$user}) eq 'ok') {                                                         $curr_privs{$user},'',$context) eq 'ok') {
                     push(@{$added{'expired'}},$user);                      push(@{$added{'expired'}},$user);
                     $num_ok ++;                      $num_ok ++;
                 } else {                  } else {
Line 3293  sub process_membership { Line 3307  sub process_membership {
             foreach my $user (@deletion) {              foreach my $user (@deletion) {
                 $usersettings{$groupname.':'.$user} = $now.':-1:';                  $usersettings{$groupname.':'.$user} = $now.':-1:';
                 if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname,                  if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname,
                                                        $user,$now,'-1','')                                                         $user,$now,'-1','','',$context)
                                                          eq 'ok') {                                                           eq 'ok') {
                     push(@{$added{'deleted'}},$user);                      push(@{$added{'deleted'}},$user);
                     $num_ok ++;                      $num_ok ++;
Line 3347  sub process_membership { Line 3361  sub process_membership {
                                               $group_privs{$user};                                                $group_privs{$user};
         if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname,          if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname,
                                                 $user,$end,$start,                                                  $user,$end,$start,
                                                 $group_privs{$user}) eq 'ok') {                                                  $group_privs{$user},'',$context) eq 'ok') {
             push(@{$added{$type}},$user);              push(@{$added{$type}},$user);
             $num_ok ++;              $num_ok ++;
         } else {          } else {
Line 3443  sub automapping { Line 3457  sub automapping {
     if (exists($$stored{'autodrop'})) {      if (exists($$stored{'autodrop'})) {
         $drop = $$stored{'autodrop'};          $drop = $$stored{'autodrop'};
     }      }
     &topic_bar($r,$image,$$lt{'endi'});      $r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'endi'}).'
     $r->print('  
     <b>'.$$lt{'gmma'}.':</b><br />'.$$lt{'adds'}.'<br />'.$$lt{'drops'}.'<br /><br />      <b>'.$$lt{'gmma'}.':</b><br />'.$$lt{'adds'}.'<br />'.$$lt{'drops'}.'<br /><br />
    <nobr>'.$$lt{'auad'}.':&nbsp;     <nobr>'.$$lt{'auad'}.':&nbsp;
     <label><input type="radio" name="autoadd" value="on" />on&nbsp;&nbsp;</label><label><input type="radio" name="autoadd" value="off" checked="checked" />off</label>');      <label><input type="radio" name="autoadd" value="on" />on&nbsp;&nbsp;</label><label><input type="radio" name="autoadd" value="off" checked="checked" />off</label>');
Line 3471  sub mapping_settings { Line 3484  sub mapping_settings {
     } else {      } else {
         @sections = ('all','none');          @sections = ('all','none');
     }      }
     &topic_bar($r,$image,$$lt{'pirs'});      $r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'pirs'}));
     my @roles = &standard_roles();      my @roles = &standard_roles();
     my %customroles = &Apache::lonhtmlcommon::course_custom_roles($cdom,$cnum);      my %customroles = &Apache::lonhtmlcommon::course_custom_roles($cdom,$cnum);
     $r->print(&Apache::loncommon::start_data_table().      $r->print(&Apache::loncommon::start_data_table().
Line 3679  sub add_group_folder { Line 3692  sub add_group_folder {
     if ($action eq 'create') {      if ($action eq 'create') {
         if (&get_folder_lock($cdom,$cnum,'group_allfolders',$now) eq 'ok') {          if (&get_folder_lock($cdom,$cnum,'group_allfolders',$now) eq 'ok') {
             # check if group_allfolders.sequence exists.              # check if group_allfolders.sequence exists.
             my ($errtext,$fatal)=&LONCAPA::map::mapread($allgrpsmap);              my $mapcontents = &Apache::lonnet::getfile($allgrpsmap);
             if ($fatal == 2) { #file does not exist;              if ($mapcontents eq '-1') { #file does not exist;
                 my $grpstitle = &mt('[_1] [_2]s',$crstype,$ucgpterm);                  my $grpstitle = &mt('[_1] [_2]s',$crstype,$ucgpterm);
                 my $topmap_url = '/'.$env{'course.'.$env{'request.course.id'}.'.url'};                  my $topmap_url = '/'.$env{'course.'.$env{'request.course.id'}.'.url'};
                 $topmap_url =~ s|/+|/|g;                  $topmap_url =~ s|/+|/|g;
Line 3706  sub add_group_folder { Line 3719  sub add_group_folder {
             $outcome = &mt('Could not obtain exclusive lock to check status of the folder for all groups. No group folder added.');              $outcome = &mt('Could not obtain exclusive lock to check status of the folder for all groups. No group folder added.');
             return $outcome;              return $outcome;
         }          }
         my $grpfolder = &mt('[_1] Folder -',$ucgpterm,).$description;          my $grpfolder = &mt($ucgpterm.' Folder - [_1]',$description);
         $grppage='/adm/'.$cdom.'/'.$cnum.'/'.$groupname.'/smppg';          $grppage='/adm/'.$cdom.'/'.$cnum.'/'.$groupname.'/smppg';
         my $grptitle = &mt('Group homepage').' - '.$description;          my $grptitle = &mt('Group homepage - [_1]',$description);
         my ($discussions,$disctitle);          my ($discussions,$disctitle);
         my $outcome = &map_updater($cdom,$cnum,'group_folder_'.$groupname.'.sequence',          my $outcome = &map_updater($cdom,$cnum,'group_folder_'.$groupname.'.sequence',
                                    'grpseq',$grpfolder,$allgrpsmap,$grppage,                                     'grpseq',$grpfolder,$allgrpsmap,$grppage,
Line 3767  sub get_folder_lock { Line 3780  sub get_folder_lock {
   
     while (($gotlock ne 'ok') && $tries <3) {      while (($gotlock ne 'ok') && $tries <3) {
         $tries ++;          $tries ++;
         sleep 1;          sleep(1);
         $gotlock = &Apache::lonnet::newput('coursegroups',$lockhash,$cdom,$cnum);          $gotlock = &Apache::lonnet::newput('coursegroups',$lockhash,$cdom,$cnum);
     }      }
     return $gotlock;      return $gotlock;
Line 3808  sub map_updater { Line 3821  sub map_updater {
         $LONCAPA::map::order[1+$#LONCAPA::map::order]=$newidx;          $LONCAPA::map::order[1+$#LONCAPA::map::order]=$newidx;
         my ($outtext,$errtext) = &LONCAPA::map::storemap($parentmap,1);          my ($outtext,$errtext) = &LONCAPA::map::storemap($parentmap,1);
         if ($errtext) {          if ($errtext) {
             $outcome = &mt('Error storing updated parent folder')." ($parentmap):  $errtext".'<br />';              $outcome = &mt('Error saving updated parent folder')." ($parentmap):  $errtext".'<br />';
             return $outcome;              return $outcome;
         }          }
     }      }
Line 3972  sub validate_groupname { Line 3985  sub validate_groupname {
     return;      return;
 }  }
   
 sub topic_bar {  
     my ($r,$imgnum,$title) = @_;  
     $r->print('  
 <div class="LC_topic_bar">  
     <img alt="'.&mt('Step [_1]',$imgnum).  
       '"src="/res/adm/pages/bl_step'.$imgnum.'.gif" />&nbsp;  
     <span>'.$title.'</span>  
 </div>  
 ');  
     return;  
 }  
   
 sub check_changes {  sub check_changes {
     my ($member_changes,$memchg) = @_;      my ($member_changes,$memchg) = @_;
     my %exclusions;      my %exclusions;

Removed from v.1.67  
changed lines
  Added in v.1.78


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