Diff for /loncom/interface/loncoursegroups.pm between versions 1.101.4.2 and 1.102

version 1.101.4.2, 2010/01/26 03:26:02 version 1.102, 2009/06/05 12:49:50
Line 54  sub handler { Line 54  sub handler {
     if (! ($env{'request.course.fn'})) {      if (! ($env{'request.course.fn'})) {
         # Not in a course          # Not in a course
         $env{'user.error.msg'}=          $env{'user.error.msg'}=
      "/adm/coursegroups:mdg:0:0:Cannot edit or view course/community groups";       "/adm/coursegroups:mdg:0:0:Cannot edit or view course groups";
         return HTTP_NOT_ACCEPTABLE;          return HTTP_NOT_ACCEPTABLE;
     }      }
   
Line 537  sub group_administration { Line 537  sub group_administration {
   
     if (ref($stored{'autorole'}) eq 'ARRAY') {      if (ref($stored{'autorole'}) eq 'ARRAY') {
         foreach my $role (@{$stored{'autorole'}}) {          foreach my $role (@{$stored{'autorole'}}) {
             unless (($role eq 'cc') || ($role eq 'co')) {              unless ($role eq 'cc') {
                 $elements{'modify'}{'change_settings'}{'sec_'.$role} =                   $elements{'modify'}{'change_settings'}{'sec_'.$role} = 
                                                                    'selectbox';                                                                     'selectbox';
             }              }
Line 1086  sub display_control { Line 1086  sub display_control {
             &add_members_form($r,$cdom,$cnum,$action,$state,$page,$startdate,              &add_members_form($r,$cdom,$cnum,$action,$state,$page,$startdate,
                               $enddate,$groupname,$description,$granularity,                                $enddate,$groupname,$description,$granularity,
                               $quota,$sectioncount,$tools,$functions,$stored,                                $quota,$sectioncount,$tools,$functions,$stored,
                               $states,$navbuttons,$gpterm,$ucgpterm,$crstype);                                $states,$navbuttons,$gpterm,$ucgpterm);
         } elsif ($state eq 'pick_members') {          } elsif ($state eq 'pick_members') {
             &choose_members_form($r,$cdom,$cnum,$action,$state,$page,              &choose_members_form($r,$cdom,$cnum,$action,$state,$page,
                                  $groupname,$description,$granularity,$quota,                                   $groupname,$description,$granularity,$quota,
Line 1119  sub display_control { Line 1119  sub display_control {
         my %stored = &retrieve_settings($cdom,$cnum,$groupname,$action);          my %stored = &retrieve_settings($cdom,$cnum,$groupname,$action);
         if ($state eq 'verify') {          if ($state eq 'verify') {
             &verify_delete($r,$groupname,$state,$action,$page,$states,              &verify_delete($r,$groupname,$state,$action,$page,$states,
                            \%stored,$crstype);                             \%stored);
         } elsif ($state eq 'result') {          } elsif ($state eq 'result') {
             &delete_group($r,$cdom,$cnum,$groupname,$crstype);              &delete_group($r,$cdom,$cnum,$groupname);
         }          }
     } elsif ($action eq 'reenable') {      } elsif ($action eq 'reenable') {
         my %stored = &retrieve_settings($cdom,$cnum,$groupname,$action);          my %stored = &retrieve_settings($cdom,$cnum,$groupname,$action);
         if ($state eq 'verify') {          if ($state eq 'verify') {
             &verify_reenable($r,$groupname,$state,$action,$page,$states,              &verify_reenable($r,$groupname,$state,$action,$page,$states,
                            \%stored,$crstype);                             \%stored);
         } elsif ($state eq 'result') {          } elsif ($state eq 'result') {
             &reenable_group($r,$cdom,$cnum,$groupname);              &reenable_group($r,$cdom,$cnum,$groupname);
         }          }
Line 1135  sub display_control { Line 1135  sub display_control {
 }  }
   
 sub verify_delete {  sub verify_delete {
     my ($r,$groupname,$formname,$action,$page,$states,$stored,$crstype) = @_;      my ($r,$groupname,$formname,$action,$page,$states,$stored) = @_;
     $r->print(&Apache::lonhtmlcommon::echo_form_input([]));      $r->print(&Apache::lonhtmlcommon::echo_form_input([]));
     $r->print(&mt('You have requested deletion of the group [_1].'      $r->print(&mt('You have requested deletion of the group [_1].'
                  ,'<i>'.$stored->{'description'}.'</i>').                   ,'<i>'.$stored->{'description'}.'</i>').
               '<br /><br />'.&mt('When a group is deleted the following occurs:').'<ul>'.                '<br /><br />'.&mt('When a group is deleted the following occurs:').'<ul>'.
               '<li>'.&mt('All group membership is terminated.').'</li>'.                '<li>'.&mt('All group membership is terminated.').'</li>'.
               '<li>'.&mt('The group ceases to be available either for viewing or for modification of group settings and membership.').'</li>');                '<li>'.&mt('The group ceases to be available either for viewing or for modification of group settings and membership.').'</li>'.
     if ($crstype eq 'Community') {                '<li>'.&mt('The group folder is removed from the folder containing it - normally this is the "Course Groups" folder which contains folders for all groups in the course.').'</li>'.
         $r->print( '<li>'.&mt("The group folder is removed from the folder containing it - normally this is the 'Community Groups' folder which contains folders for all groups in the community.").'</li>'.                '</ul>'.&mt('Although a deleted group is no longer accessible, the group name used for the group will be reserved, and will not be available for assignment to a new group in the same course in the future.'));
                    '</ul>'.&mt("Although a deleted group is no longer accessible, the group name used for the group will be reserved, and will not be available for assignment to a new group in the same community in the future."));  
     } else {   
         $r->print( '<li>'.&mt("The group folder is removed from the folder containing it - normally this is the 'Course Groups' folder which contains folders for all groups in the course.").'</li>'.  
                    '</ul>'.&mt("Although a deleted group is no longer accessible, the group name used for the group will be reserved, and will not be available for assignment to a new group in the same course in the future."));  
     }  
     my $prevtext = &mt('Go back');      my $prevtext = &mt('Go back');
     my $nexttext = &mt('Delete group');      my $nexttext = &mt('Delete group');
     my $prev;      my $prev;
Line 1161  sub verify_delete { Line 1156  sub verify_delete {
 }  }
   
 sub delete_group {  sub delete_group {
     my ($r,$cdom,$cnum,$groupname,$crstype) = @_;      my ($r,$cdom,$cnum,$groupname) = @_;
     my %membership = &Apache::lonnet::get_group_membership($cdom,$cnum,      my %membership = &Apache::lonnet::get_group_membership($cdom,$cnum,
                                                            $groupname);                                                             $groupname);
     my $now = time;      my $now = time;
Line 1203  sub delete_group { Line 1198  sub delete_group {
                  .&mt('Group deletion failed because deletion of [_1] out of [_2] members failed.'                   .&mt('Group deletion failed because deletion of [_1] out of [_2] members failed.'
                      ,$num_fail,$num_users)                       ,$num_fail,$num_users)
                  .'</div>');                   .'</div>');
           
     } else {      } else {
         my ($result,$message) =           my ($result,$message) = 
              &Apache::lonnet::toggle_coursegroup_status($cdom,$cnum,               &Apache::lonnet::toggle_coursegroup_status($cdom,$cnum,
                                                         $groupname,'delete');                                                          $groupname,'delete');
         if ($result eq 'ok') {          if ($result eq 'ok') {
             my $outcome = &modify_folders($cdom,$cnum,$groupname,$crstype);              my $outcome = &modify_folders($cdom,$cnum,$groupname);
             if ($outcome eq '') {              if ($outcome eq '') {
                 $r->print('<div class="LC_success">'                  $r->print('<div class="LC_success">'
                          .&mt('Group successfully deleted.')                           .&mt('Group successfully deleted.')
                          .'</div>');                           .'</div>');
             } else {              } else {
                 $r->print('<div class="LC_error">');                  $r->print('<div class="LC_error">'
                 if ($crstype eq 'Community') {                           .&mt("Although the group was deleted, an error occurred when removing"
                     $r->print(&mt("Although the group was deleted, an error occurred when removing the group's folder from the 'Community Groups' folder: [_1]",$outcome));                               ." the group's folder from the 'Course Groups' folder: [_1]",$outcome)
                 } else {                           .'</div>');
                     $r->print(&mt("Although the group was deleted, an error occurred when removing the group's folder from the 'Course Groups' folder: [_1]",$outcome));  
                 }  
                 $r->print('</div>');  
             }              }
         } else {          } else {
             $r->print('<div class="LC_error">'              $r->print('<div class="LC_error">'
Line 1232  sub delete_group { Line 1225  sub delete_group {
 }  }
   
 sub reenable_folder {  sub reenable_folder {
     my ($cdom,$cnum,$groupname,$description,$crstype) = @_;      my ($cdom,$cnum,$groupname,$description) = @_;
     my $outcome;      my $outcome;
     my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';      my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';
     my $allgrpsmap = $crspath.'group_allfolders.sequence';      my $allgrpsmap = $crspath.'group_allfolders.sequence';
     my $foldertitle;      my $foldertitle = &mt('Course Folder -[_1]',$description);
     if ($crstype eq 'Community') {  
         $foldertitle = &mt("Community Folder -[_1]",$description);  
     } else {  
         $foldertitle = &mt("Course Folder -[_1]",$description);  
     }  
     my $mapurl = $crspath.'group_folder_'.      my $mapurl = $crspath.'group_folder_'.
                    $groupname.'.sequence';                     $groupname.'.sequence';
     my ($errtext,$fatal)=&LONCAPA::map::mapread($allgrpsmap);      my ($errtext,$fatal)=&LONCAPA::map::mapread($allgrpsmap);
Line 1270  sub reenable_folder { Line 1258  sub reenable_folder {
 }  }
   
 sub modify_folders {  sub modify_folders {
     my ($cdom,$cnum,$groupname,$crstype) = @_;      my ($cdom,$cnum,$groupname) = @_;
     my ($outcome,$groupmap,$groupmapres,$map,$id,$src);      my ($outcome,$groupmap,$groupmapres,$map,$id,$src);
     my $navmap = Apache::lonnavmaps::navmap->new();      my $navmap = Apache::lonnavmaps::navmap->new();
     if (!defined($navmap)) {      if (!defined($navmap)) {
         $outcome = '<div class="LC_error">';          $outcome = '<div class="LC_error">'.
         if ($crstype eq 'Community') {                     &mt('Error reading course contents.').' '.
             $outcome .= &mt("Error reading community contents.").' '.                     &mt('You need to re-initialize the course.').
                    &mt("You need to re-initialize the community.");                     '</div>';
         } else {  
             $outcome .= &mt("Error reading course contents.").' '.  
                    &mt("You need to re-initialize the course.");  
         }  
         $outcome .= '</div>';  
         return $outcome;          return $outcome;
     }      }
     $groupmap = '/uploaded/'.$cdom.'/'.$cnum.'/'.'group_folder_'.      $groupmap = '/uploaded/'.$cdom.'/'.$cnum.'/'.'group_folder_'.
Line 1337  sub modify_folders { Line 1320  sub modify_folders {
 }  }
   
 sub verify_reenable {  sub verify_reenable {
     my ($r,$groupname,$formname,$action,$page,$states,$stored,$crstype) = @_;      my ($r,$groupname,$formname,$action,$page,$states,$stored) = @_;
     $r->print(&Apache::lonhtmlcommon::echo_form_input([]));      $r->print(&Apache::lonhtmlcommon::echo_form_input([]));
     $r->print(&mt('You have requested enabling the previously deleted group [_1].'      $r->print(&mt('You have requested enabling the previously deleted group [_1].'
                  ,'<i>'.$stored->{'description'}.'</i>').                   ,'<i>'.$stored->{'description'}.'</i>').
               '<br /><br />'.&mt('When a deleted group is re-enabled the following occurs:').'<ul>'.                '<br /><br />'.&mt('When a deleted group is re-enabled the following occurs:').'<ul>'.
               '<li>'.&mt('Group settings and membership at the time the group was deleted are reinstated.').'</li><li>');                '<li>'.&mt('Group settings and membership at the time the group was deleted are reinstated.').'</li>'.
     if ($crstype eq 'Community') {                '<li>'.&mt('A group folder is added to the "Course Groups" folder which contains folders for all groups in the course.').'</li></ul>');
         $r->print(&mt("A group folder is added to the 'Community Groups' folder which contains folders for all groups in the community."));  
     } else {  
         $r->print(&mt("A group folder is added to the 'Course Groups' folder which contains folders for all groups in the course."));  
     }  
     $r->print('</li></ul>');  
     my $prevtext = &mt('Go back');      my $prevtext = &mt('Go back');
     my $nexttext = &mt('Reenable group');      my $nexttext = &mt('Reenable group');
     my $prev;      my $prev;
Line 1361  sub verify_reenable { Line 1339  sub verify_reenable {
 }  }
   
 sub reenable_group {  sub reenable_group {
     my ($r,$cdom,$cnum,$groupname,$crstype) = @_;      my ($r,$cdom,$cnum,$groupname) = @_;
     my %groups =       my %groups = 
         &Apache::longroup::coursegroups($cdom,$cnum,$groupname,          &Apache::longroup::coursegroups($cdom,$cnum,$groupname,
                                         'deleted_groups');                                          'deleted_groups');
Line 1435  $context) eq 'ok') { Line 1413  $context) eq 'ok') {
                      .&mt('There were no group members to reinstate, as none were removed when the group was deleted.')                       .&mt('There were no group members to reinstate, as none were removed when the group was deleted.')
                      .'</div>');                       .'</div>');
         }          }
         my $outcome = &reenable_folder($cdom,$cnum,$groupname,$description,$crstype);          my $outcome = &reenable_folder($cdom,$cnum,$groupname,$description);
         if ($outcome eq '') {          if ($outcome eq '') {
             $r->print('<div class="LC_success">'              $r->print('<div class="LC_success">'
                      .&mt('Group successfully re-enabled.')                       .&mt('Group successfully re-enabled.')
                      .'</div>');                       .'</div>');
         } else {          } else {
             $r->print('<div class="LC_error">');              $r->print('<div class="LC_error">'
             if ($crstype eq 'Community') {                       .&mt("Although the group was re-enabled, an error occurred when adding the group's folder to the 'Course Groups' folder: [_1]",$outcome)
                 $r->print(&mt("Although the group was re-enabled, an error occurred when adding the group's folder to the 'Community Groups' folder: [_1]",$outcome));                       .'</div>');
             } else {  
                 $r->print(&mt("Although the group was re-enabled, an error occurred when adding the group's folder to the 'Course Groups' folder: [_1]",$outcome));  
             }  
             $r->print('</div>');  
         }          }
     } else {      } else {
         $r->print('<div class="LC_error">'          $r->print('<div class="LC_error">'
Line 1614  sub general_settings_form { Line 1588  sub general_settings_form {
         @{$tools} = sort(keys(%{$functions}));          @{$tools} = sort(keys(%{$functions}));
         &privilege_specificity($r,$action,3,$tools,$stored,$toolprivs,          &privilege_specificity($r,$action,3,$tools,$stored,$toolprivs,
        $fixedprivs,\@available,$formname,         $fixedprivs,\@available,$formname,
        $gpterm,$ucgpterm,$functions,$crstype);         $gpterm,$ucgpterm,$functions);
         &mapping_options($r,$action,$formname,$page,$sectioncount,          &mapping_options($r,$action,$formname,$page,$sectioncount,
                          $states,$stored,$navbuttons,4,5,                           $states,$stored,$navbuttons,4,5,
  $gpterm,$ucgpterm,$crstype,$cdom,$cnum);   $gpterm,$ucgpterm,$crstype,$cdom,$cnum);
Line 1767  sub get_quota_constraints { Line 1741  sub get_quota_constraints {
 }  }
   
 sub membership_options {  sub membership_options {
     my ($r,$cdom,$cnum,$action,$state,$sectioncount,$image,$gpterm,$ucgpterm,$crstype)=@_;      my ($r,$cdom,$cnum,$action,$state,$sectioncount,$image,$gpterm,$ucgpterm)=@_;
       my $crstype = &Apache::loncommon::course_type();
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
                 'pipa' => 'Build a list of users for selection of group members',                  'pipa' => 'Build a list of users for selection of group members',
                 'gmem' => 'Group membership selection list criteria:',                  'gmem' => "Group membership selection list criteria:",
                 'picr' => 'Pick the criteria to use to build a list of course users from which you will select members of the new group.',                  'picr' => 'Pick the criteria to use to build a list of '.
                 'pica' => 'Pick the criteria to use to build a list of course users from which you will select additional members of the group.',                            lc($crstype).' users from which you will select ',
                 'ifno' => 'If you do not wish to add members when you first create the group, there is no need to pick any criteria.',                   'meof' => "members of the new group.",
                   'admg' => "additional members of the group.",
                   'ifno' => "If you do not wish to add members when you first ".
                             "create the group, there is no need to pick any criteria.",
                   'asub' => "A subsequent step will also allow you to specify automatic adding/dropping of group members triggered by specified user role and section <i>changes</i> in the course.",
                 'acty' => 'Access types',                  'acty' => 'Access types',
                 'coro' => 'Course roles',                  'coro' => $crstype.' roles',
                 'cose' => 'Course sections',                  'cose' => $crstype.' sections',
              );               );
     if ($crstype eq 'Community') {  
         $lt{'picr'} = &mt('Pick the criteria to use to build a list of community participants from which you will select ');  
         $lt{'asub'} = &mt('A subsequent step will also allow you to specify automatic adding/dropping of group members triggered by specified user role and section [_1]changes[_2] in the course.','<i>','</i>');  
         $lt{'coro'} = &mt('Community roles');  
         $lt{'cose'} = &mt('Community sections');  
     } else {  
         $lt{'asub'} = &mt('A subsequent step will also allow you to specify automatic adding/dropping of group members triggered by specified user role and section [_1]changes[_2] in the course.','<i>','</i>');  
     }  
   
     my %status_types = (      my %status_types = (
                    active => &mt('Currently has access'),                     active => &mt('Currently has access'),
                    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');      my @roles = ('st','cc','in','ta','ep','cr');
     if ($crstype eq 'Community') {  
         push(@roles,'co');  
     } else {  
         push(@roles,'cc');  
     }  
     push (@roles,('in','ta','ep','ad','cr'));  
   
     my @sections = keys(%{$sectioncount});      my @sections = keys(%{$sectioncount});
   
     $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'pipa'}).'      $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'pipa'}).'
      <b>'.$lt{'gmem'}.'</b><br />');       <b>'.$lt{'gmem'}.'</b><br />'.$lt{'picr'});
   
     if ($action eq 'create') {      if ($action eq 'create') {
         $r->print($lt{'picr'}.'<br />'.$lt{'ifno'}.'<br />'.$lt{'asub'});          $r->print($lt{'meof'}.'<br />'.$lt{'ifno'}.'<br />'.$lt{'asub'});
     } else {      } else {
         $r->print($lt{'pica'});          $r->print($lt{'admg'});
     }      }
     $r->print('      $r->print('
      <br />       <br />
Line 1925  sub choose_members_form { Line 1888  sub choose_members_form {
         }          }
     }      }
     &privilege_specificity($r,$action,$specimg,$tools,$stored,$toolprivs,      &privilege_specificity($r,$action,$specimg,$tools,$stored,$toolprivs,
                           $fixedprivs,\@available,$formname,$gpterm,$ucgpterm,                            $fixedprivs,\@available,$formname,$gpterm,$ucgpterm);
                           $functions,$crstype);  
     my $newusers = &pick_new_members($r,$action,$formname,\@available,$idx,      my $newusers = &pick_new_members($r,$action,$formname,\@available,$idx,
      $stored,$memimg,$users,$userdata,       $stored,$memimg,$users,$userdata,
      $granularity,\%origmembers,$gpterm,       $granularity,\%origmembers,$gpterm,
Line 2104  sub pick_new_members { Line 2066  sub pick_new_members {
         &check_uncheck_buttons($r,$formname,'member',$lt{'addm'});          &check_uncheck_buttons($r,$formname,'member',$lt{'addm'});
         if (@{$available} > 0 && $granularity eq 'Yes') {          if (@{$available} > 0 && $granularity eq 'Yes') {
             $r->print('<td>              $r->print('<td>
      <fieldset><legend><b>'.$lt{'setf'}.'</b></legend>       <fieldset><legend>'.$lt{'setf'}.'</legend>
       <span class="LC_nobreak">        <span class="LC_nobreak">
       <input type="button" value="'.&mt('check all').'"        <input type="button" value="'.&mt('check all').'"
         onclick="javascript:checkAllTools(document.'.$formname.')" />          onclick="javascript:checkAllTools(document.'.$formname.')" />
Line 2203  sub pick_new_members { Line 2165  sub pick_new_members {
   
 sub privilege_specificity {  sub privilege_specificity {
     my ($r,$action,$img,$tools,$stored,$toolprivs,$fixedprivs,$available,      my ($r,$action,$img,$tools,$stored,$toolprivs,$fixedprivs,$available,
  $formname,$gpterm,$ucgpterm,$functions,$crstype) = @_;   $formname,$gpterm,$ucgpterm,$functions) = @_;
     my %lt = &Apache::lonlocal::texthash (      my %lt = &Apache::lonlocal::texthash (
       'uprv' => 'User privileges for collaborative tools',        'uprv' => 'User privileges for collaborative tools',
       'frty' => 'For each collaborative tool you have chosen to include, '.        'frty' => 'For each collaborative tool you have chosen to include, '.
Line 2237  sub privilege_specificity { Line 2199  sub privilege_specificity {
       'oppr' => 'Optional privileges',        'oppr' => 'Optional privileges',
       'defp' => 'The default privileges new members will receive are:',         'defp' => 'The default privileges new members will receive are:', 
     );      );
     if ($crstype eq 'Community') {  
         $lt{'thes'} = &mt('These will be the privileges given to members assigned in the future via automatic group assignment for users who receive specific sections/roles in the community ');   
     }  
     my $totaloptionalprivs = 0;      my $totaloptionalprivs = 0;
     foreach my $tool (@{$tools}) {      foreach my $tool (@{$tools}) {
         foreach my $priv (sort(keys(%{$$toolprivs{$tool}}))) {          foreach my $priv (sort(keys(%{$$toolprivs{$tool}}))) {
Line 2338  sub default_privileges { Line 2297  sub default_privileges {
       &Apache::lonhtmlcommon::row_title($lt{'func'},undef,        &Apache::lonhtmlcommon::row_title($lt{'func'},undef,
       'LC_groups_functionality'));        'LC_groups_functionality'));
     my @tableHeader;      my @tableHeader;
     if ((ref($functions) eq 'HASH') && (ref($tools) eq 'ARRAY')) {      foreach my $key (sort(keys(%{$functions}))){
         @tableHeader = map { $functions->{$_}; } @{$tools};          push (@tableHeader,&mt(${$functions}{$key}));
     }      }   
  $r->print(join('</td><td class="LC_groups_functionality">', @tableHeader));   $r->print(join('</td><td class="LC_groups_functionality">', @tableHeader));
     $r->print(&Apache::lonhtmlcommon::row_closure(1));      $r->print(&Apache::lonhtmlcommon::row_closure(1));
     my $fixed = '';      my $fixed = '';
Line 2557  sub current_membership { Line 2516  sub current_membership {
                 $r->print('                  $r->print('
      <td>       <td>
       <span class="LC_nobreak">        <span class="LC_nobreak">
        <fieldset><legend><b>'.$lt{'curf'}.'</b></legend>         <fieldset><legend>'.$lt{'curf'}.'</legend>
        <input type="button" value="'.&mt('check all').'"         <input type="button" value="'.&mt('check all').'"
        onclick="javascript:checkAllTools(document.'.$formname.')" />         onclick="javascript:checkAllTools(document.'.$formname.')" />
        &nbsp;&nbsp;         &nbsp;&nbsp;
Line 2715  sub check_uncheck_buttons { Line 2674  sub check_uncheck_buttons {
     $r->print('      $r->print('
      <td '.$colspan.'>       <td '.$colspan.'>
        <fieldset>         <fieldset>
        <legend><b>'.$title.'</b></legend>         <legend>'.$title.'</legend>
       <span class="LC_nobreak">        <span class="LC_nobreak">
        <input type="button" value="'.&mt('check all').'"         <input type="button" value="'.&mt('check all').'"
        onclick="javascript:checkAll(document.'.$formname.'.'.$field.')" />         onclick="javascript:checkAll(document.'.$formname.'.'.$field.')" />
Line 2795  sub change_privs_form { Line 2754  sub change_privs_form {
 sub add_members_form {  sub add_members_form {
     my ($r,$cdom,$cnum,$action,$formname,$page,$startdate,$enddate,$groupname,      my ($r,$cdom,$cnum,$action,$formname,$page,$startdate,$enddate,$groupname,
         $description,$granularity,$quota,$sectioncount,$tools,$functions,          $description,$granularity,$quota,$sectioncount,$tools,$functions,
         $stored,$states,$navbuttons,$gpterm,$ucgpterm,$crstype)=@_;           $stored,$states,$navbuttons,$gpterm,$ucgpterm)=@_; 
     $r->print(' <br />');      $r->print(' <br />');
     my @available = ();      my @available = ();
     my @unavailable = ();      my @unavailable = ();
Line 2804  sub add_members_form { Line 2763  sub add_members_form {
     $groupname,$description,$granularity,$quota,      $groupname,$description,$granularity,$quota,
     \@available,\@unavailable,$gpterm,$ucgpterm);      \@available,\@unavailable,$gpterm,$ucgpterm);
     &membership_options($r,$cdom,$cnum,$action,$formname,$sectioncount,1,$gpterm,      &membership_options($r,$cdom,$cnum,$action,$formname,$sectioncount,1,$gpterm,
                         $ucgpterm,$crstype);                          $ucgpterm);
     my $nexttext = $$navbuttons{'gtns'};      my $nexttext = $$navbuttons{'gtns'};
     my $prevtext = $$navbuttons{'gtpp'};      my $prevtext = $$navbuttons{'gtpp'};
     &display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext,      &display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext,
Line 3015  sub member_privileges_form { Line 2974  sub member_privileges_form {
                                     $r->print('<td>');                                      $r->print('<td>');
                                 }                                  }
                                 $r->print(                                  $r->print(
  '<fieldset><legend><b>'.&mt($$toolprivs{$tool}{$priv}).'</b></legend>'   '<fieldset><legend>'.&mt($$toolprivs{$tool}{$priv}).'</legend>'
 .'<span class="LC_nobreak">'  .'<span class="LC_nobreak">'
 .' <input type="button" value="'.&mt('check all').'"'  .' <input type="button" value="'.&mt('check all').'"'
 .' onclick="javascript:checkAll(document.'.$formname.'.userpriv_'.$priv.')" />'  .' onclick="javascript:checkAll(document.'.$formname.'.userpriv_'.$priv.')" />'
Line 3135  sub process_request { Line 3094  sub process_request {
         &process_membership($r,$cdom,$cnum,$action,$state,$groupname,$tools,          &process_membership($r,$cdom,$cnum,$action,$state,$groupname,$tools,
                             $enddate,$startdate,$userdata,$idx,$toolprivs,                              $enddate,$startdate,$userdata,$idx,$toolprivs,
                             $usertools,$specificity,\@defprivs,$memchg,$gpterm,                              $usertools,$specificity,\@defprivs,$memchg,$gpterm,
                             $ucgpterm,$crstype);                              $ucgpterm);
     }      }
     return;      return;
 }  }
Line 3297  sub write_group_data { Line 3256  sub write_group_data {
                                 }                                  }
                                 undef($navmap);                                  undef($navmap);
                             } else {                              } else {
                                 if ($crstype eq 'Community') {                                  $error = &mt('An error occurred while setting parameters '.
                                     $error = &mt("An error occurred while setting parameters '.  
                                               'for Discussion Boards folder: '.  
                                               'Could not retrieve community information");  
                                 } else {  
                                     $error = &mt("An error occurred while setting parameters '.  
                                              'for Discussion Boards folder: '.                                               'for Discussion Boards folder: '.
                                              'Could not retrieve course information");                                               'Could not retrieve course information' );
                                 }  
                             }                              }
                         } else {                          } else {
                             $r->print($outcome);                              $r->print($outcome);
                         }                          }
                     }                      }
                 } else {                  } else {
                     $error = &mt("An error occurred while retrieving the contents of the group's folder.").'<br />';                      $error = &mt("An error occurred while retrieving the contents of the group's folder.").'<br />'.
                     if ($crstype eq 'Community') {                               &mt('You need to re-initialize the course.');
                         $error .= &mt("You need to re-initialize the community.");  
   
                     } else {  
                         $error .= &mt("You need to re-initialize the course.");  
                     }  
                 }                  }
                 if ($error ne '') {                  if ($error ne '') {
                     $r->print('<div class="LC_error">'.$error.'</div>');                      $r->print('<div class="LC_error">'.$error.'</div>');
Line 3347  sub write_group_data { Line 3295  sub write_group_data {
 sub process_membership {  sub process_membership {
     my ($r,$cdom,$cnum,$action,$state,$groupname,$tools,$enddate,$startdate,      my ($r,$cdom,$cnum,$action,$state,$groupname,$tools,$enddate,$startdate,
         $userdata,$idx,$toolprivs,$usertools,$specificity,$defprivs,$memchg,          $userdata,$idx,$toolprivs,$usertools,$specificity,$defprivs,$memchg,
         $gpterm,$ucgpterm,$crstype)=@_;          $gpterm,$ucgpterm)=@_;
     my %usersettings = ();      my %usersettings = ();
     my %added= ();      my %added= ();
     my %failed = ();      my %failed = ();
Line 3552  sub process_membership { Line 3500  sub process_membership {
         $r->print('<div class="LC_success">'          $r->print('<div class="LC_success">'
                  .&mt($ucgpterm.' membership list updated.')                   .&mt($ucgpterm.' membership list updated.')
                  .'</div>');                   .'</div>');
  $r->print('<p class="LC_info">');   $r->print('<p class="LC_info">'
         if ($crstype eq 'Community') {                   .&mt('Any currently logged in course users affected by the changes you made'
             $r->print(&mt("Any currently logged in community users affected by the changes you made"  
                       .' to group membership or privileges for the [_1] group will need to log out'  
                       .' and log back in for their LON-CAPA sessions to reflect these changes.'  
                      ,'<i>'.$groupname.'</i>'));  
   
         } else {    
             $r->print(&mt("Any currently logged in course users affected by the changes you made"  
                      .' to group membership or privileges for the [_1] group will need to log out'                       .' to group membership or privileges for the [_1] group will need to log out'
                      .' and log back in for their LON-CAPA sessions to reflect these changes.'                       .' and log back in for their LON-CAPA sessions to reflect these changes.'
                      ,'<i>'.$groupname.'</i>'));                       ,'<i>'.$groupname.'</i>')
         }                    .'</p>'
         $r->print('</p>');          );
     } else {      } else {
         $r->print('<div class="LC_error">'          $r->print('<div class="LC_error">'
                  .&mt("An error occurred while updating the $gpterm membership list:")                   .&mt("An error occurred while updating the $gpterm membership list:")
Line 3636  sub mapping_settings { Line 3577  sub mapping_settings {
         @sections = ('all','none');          @sections = ('all','none');
     }      }
     $r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'pirs'}));      $r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'pirs'}));
     my @roles = &standard_roles($crstype);      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().
       &Apache::loncommon::start_data_table_header_row());        &Apache::loncommon::start_data_table_header_row());
Line 3679  sub print_autorole_item { Line 3620  sub print_autorole_item {
     my ($role,$roletitle,$sections) = @_;      my ($role,$roletitle,$sections) = @_;
     my $sections_sel;      my $sections_sel;
     if (@{$sections} > 0) {      if (@{$sections} > 0) {
         if (($role eq 'cc') || ($role eq 'co')) {          if ($role eq 'cc') {
             $sections_sel = '<td align="right">'.              $sections_sel = '<td align="right">'.
                             &mt('all sections').'<input type="hidden" '.                              &mt('all sections').'<input type="hidden" '.
                             'name="sec_'.$role.'" value="all" /></td>';                              'name="sec_cc" value="all" /></td>';
         } else {          } else {
             $sections_sel='<td align="right">'.              $sections_sel='<td align="right">'.
                           &sections_selection($sections,'sec_'.$role).                            &sections_selection($sections,'sec_'.$role).
Line 3698  sub print_autorole_item { Line 3639  sub print_autorole_item {
 }   } 
   
 sub standard_roles {  sub standard_roles {
     my ($crstype) = @_;      my @roles = ('cc','in','ta','ep','st');
     my @roles = qw(in ta ep ad st);  
     if ($crstype eq 'Community') {  
         unshift(@roles,'co');  
     } else {  
         unshift(@roles,'cc');  
     }  
     return @roles;      return @roles;
 }  }
   
Line 3843  sub add_group_folder { Line 3778  sub add_group_folder {
     my ($cdom,$cnum,$now,$groupname,$action,$description,$tools,$groupinfo,      my ($cdom,$cnum,$now,$groupname,$action,$description,$tools,$groupinfo,
         $gpterm,$ucgpterm,$crstype) = @_;          $gpterm,$ucgpterm,$crstype) = @_;
     if ($cdom eq '' || $cnum eq '') {      if ($cdom eq '' || $cnum eq '') {
         my $error = '<span class="LC_error">';          return '<span class="LC_error">'
         if ($crstype eq 'Community') {                 .&mt('Error: invalid course domain or number - group folder creation failed.')
             $error .= &mt("Error: invalid community domain or number - group folder creation failed.");                .'</span>';
         } else {  
             $error .= &mt("Error: invalid course domain or number - group folder creation failed.");  
         }  
         $error .= '</span>';  
         return $error;  
     }      }
     my ($outcome,$allgrpsmap,$grpmap,$boardsmap,$grppage,$warning);      my ($outcome,$allgrpsmap,$grpmap,$boardsmap,$grppage,$warning);
     my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';      my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';
Line 3918  sub add_group_folder { Line 3848  sub add_group_folder {
     my ($furl,$ferr)= &Apache::lonuserstate::readmap($cdom.'/'.$cnum);      my ($furl,$ferr)= &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
     my $navmap = Apache::lonnavmaps::navmap->new();      my $navmap = Apache::lonnavmaps::navmap->new();
     if (!defined($navmap)) {      if (!defined($navmap)) {
         $warning .= '<span class="LC_error">';          return $warning.'<span class="LC_error">'.&mt('Error retrieving course contents').
         if ($crstype eq 'Community') {                 ' '.&mt('You need to re-initialize the course.').'</span>';
             $warning .= &mt("Error retrieving community contents").  
                         ' '.&mt("You need to re-initialize the community.");  
         } else {  
             $warning  .= &mt("Error retrieving course contents").  
                          ' '.&mt("You need to re-initialize the course.");  
         }  
         $warning .= '</span>';  
         return $warning;  
     }      }
     # modify parameters      # modify parameters
     my $parm_result;      my $parm_result;
Line 4032  sub new_map { Line 3954  sub new_map {
 }  }
   
 sub parm_setter {  sub parm_setter {
     my ($navmap,$cdom,$url,$groupname,$crstype) = @_;      my ($navmap,$cdom,$url,$groupname) = @_;
       my $allresults;
     if (!defined($navmap)) {      if (!defined($navmap)) {
         my $allresults;          $allresults = '<div class="LC_warning">'.
         if ($crstype eq 'Community') {                         &mt('Parameters not set for [_1] because the contents of the course could not be retrieved.',$url).' '.
             $allresults = &mt("Parameters not set for [_1] because the contents of the community could not be retrieved.",$url).' '.                        &mt('You need to reinitialize the course.').
                           &mt("You need to reinitialize the community.");                        '</div>';
         } else {          return $allresults;
             $allresults = &mt("Parameters not set for [_1] because the contents of the course could not be retrieved.",$url).' '.  
                           &mt("You need to reinitialize the course.");  
   
         }  
         return '<div class="LC_warning">'.$allresults.'</div>';  
     }      }
     my %hide_settings = (      my %hide_settings = (
                            'course' =>  {                             'course' =>  {
Line 4057  sub parm_setter { Line 3975  sub parm_setter {
                                         },                                          },
                         );                          );
     my $res = $navmap->getResourceByUrl($url);      my $res = $navmap->getResourceByUrl($url);
     my $allresults;  
     if ($res) {      if ($res) {
         my $symb = $res->symb();          my $symb = $res->symb();
         foreach my $level (keys(%hide_settings)) {          foreach my $level (keys(%hide_settings)) {
Line 4074  sub parm_setter { Line 3991  sub parm_setter {
             }              }
         }          }
     } else {      } else {
         $allresults = '<div class="LC_warning">';          $allresults = '<div class="LC_warning">' 
         if ($crstype eq 'Community') {                       .&mt('Parameters not set for [_1] because the resource was not recognized'
             $allresults .= &mt("Parameters not set for [_1] because the resource was not recognized as part of the community.",'<tt>'.$url.'</tt>');                           .' as part of the course.','<tt>'.$url.'</tt>')
         } else {                       .'</div>';
             $allresults .= &mt('Parameters not set for [_1] because the resource was not recognized as part of the course.','<tt>'.$url.'</tt>');  
         }  
         $allresults .= '</div>';  
     }      }
     return $allresults;      return $allresults;
 }  }

Removed from v.1.101.4.2  
changed lines
  Added in v.1.102


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