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

version 1.101, 2009/05/11 16:51:27 version 1.101.4.2, 2010/01/26 03:26:02
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 groups";       "/adm/coursegroups:mdg:0:0:Cannot edit or view course/community 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') {              unless (($role eq 'cc') || ($role eq 'co')) {
                 $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);                                $states,$navbuttons,$gpterm,$ucgpterm,$crstype);
         } 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);                             \%stored,$crstype);
         } elsif ($state eq 'result') {          } elsif ($state eq 'result') {
             &delete_group($r,$cdom,$cnum,$groupname);              &delete_group($r,$cdom,$cnum,$groupname,$crstype);
         }          }
     } 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);                             \%stored,$crstype);
         } 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) = @_;      my ($r,$groupname,$formname,$action,$page,$states,$stored,$crstype) = @_;
     $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>');
               '<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>'.      if ($crstype eq 'Community') {
               '</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.'));          $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 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 1156  sub verify_delete { Line 1161  sub verify_delete {
 }  }
   
 sub delete_group {  sub delete_group {
     my ($r,$cdom,$cnum,$groupname) = @_;      my ($r,$cdom,$cnum,$groupname,$crstype) = @_;
     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 1198  sub delete_group { Line 1203  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);              my $outcome = &modify_folders($cdom,$cnum,$groupname,$crstype);
             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">');
                          .&mt("Although the group was deleted, an error occurred when removing"                  if ($crstype eq 'Community') {
                              ." the group's folder from the 'Course Groups' folder: [_1]",$outcome)                      $r->print(&mt("Although the group was deleted, an error occurred when removing the group's folder from the 'Community Groups' folder: [_1]",$outcome));
                          .'</div>');                  } else {
                       $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 1225  sub delete_group { Line 1232  sub delete_group {
 }  }
   
 sub reenable_folder {  sub reenable_folder {
     my ($cdom,$cnum,$groupname,$description) = @_;      my ($cdom,$cnum,$groupname,$description,$crstype) = @_;
     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 = &mt('Course Folder -[_1]',$description);      my $foldertitle;
       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 1258  sub reenable_folder { Line 1270  sub reenable_folder {
 }  }
   
 sub modify_folders {  sub modify_folders {
     my ($cdom,$cnum,$groupname) = @_;      my ($cdom,$cnum,$groupname,$crstype) = @_;
     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">';
                    &mt('Error reading course contents.').' '.          if ($crstype eq 'Community') {
                    &mt('You need to re-initialize the course.').              $outcome .= &mt("Error reading community contents.").' '.
                    '</div>';                     &mt("You need to re-initialize the community.");
           } 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 1320  sub modify_folders { Line 1337  sub modify_folders {
 }  }
   
 sub verify_reenable {  sub verify_reenable {
     my ($r,$groupname,$formname,$action,$page,$states,$stored) = @_;      my ($r,$groupname,$formname,$action,$page,$states,$stored,$crstype) = @_;
     $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>'.&mt('Group settings and membership at the time the group was deleted are reinstated.').'</li><li>');
               '<li>'.&mt('A group folder is added to the "Course Groups" folder which contains folders for all groups in the course.').'</li></ul>');      if ($crstype eq 'Community') {
           $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 1339  sub verify_reenable { Line 1361  sub verify_reenable {
 }  }
   
 sub reenable_group {  sub reenable_group {
     my ($r,$cdom,$cnum,$groupname) = @_;      my ($r,$cdom,$cnum,$groupname,$crstype) = @_;
     my %groups =       my %groups = 
         &Apache::longroup::coursegroups($cdom,$cnum,$groupname,          &Apache::longroup::coursegroups($cdom,$cnum,$groupname,
                                         'deleted_groups');                                          'deleted_groups');
Line 1413  $context) eq 'ok') { Line 1435  $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);          my $outcome = &reenable_folder($cdom,$cnum,$groupname,$description,$crstype);
         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">');
                      .&mt("Although the group was re-enabled, an error occurred when adding the group's folder to the 'Course Groups' folder: [_1]",$outcome)              if ($crstype eq 'Community') {
                      .'</div>');                  $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));
               } 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 1588  sub general_settings_form { Line 1614  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);         $gpterm,$ucgpterm,$functions,$crstype);
         &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 1741  sub get_quota_constraints { Line 1767  sub get_quota_constraints {
 }  }
   
 sub membership_options {  sub membership_options {
     my ($r,$cdom,$cnum,$action,$state,$sectioncount,$image,$gpterm,$ucgpterm)=@_;      my ($r,$cdom,$cnum,$action,$state,$sectioncount,$image,$gpterm,$ucgpterm,$crstype)=@_;
     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 '.                  'picr' => 'Pick the criteria to use to build a list of course users from which you will select members of the new group.',
                           lc($crstype).' users from which you will select ',                  'pica' => 'Pick the criteria to use to build a list of course users from which you will select additional members of the group.',
                 'meof' => "members of the new group.",                  'ifno' => 'If you do not wish to add members when you first create the group, there is no need to pick any criteria.', 
                 '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' => $crstype.' roles',                  'coro' => 'Course roles',
                 'cose' => $crstype.' sections',                  'cose' => 'Course 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','cc','in','ta','ep','cr');      my @roles = ('st');
       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 />'.$lt{'picr'});       <b>'.$lt{'gmem'}.'</b><br />');
   
     if ($action eq 'create') {      if ($action eq 'create') {
         $r->print($lt{'meof'}.'<br />'.$lt{'ifno'}.'<br />'.$lt{'asub'});          $r->print($lt{'picr'}.'<br />'.$lt{'ifno'}.'<br />'.$lt{'asub'});
     } else {      } else {
         $r->print($lt{'admg'});          $r->print($lt{'pica'});
     }      }
     $r->print('      $r->print('
      <br />       <br />
Line 1888  sub choose_members_form { Line 1925  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 2165  sub pick_new_members { Line 2203  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) = @_;   $formname,$gpterm,$ucgpterm,$functions,$crstype) = @_;
     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 2199  sub privilege_specificity { Line 2237  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 2297  sub default_privileges { Line 2338  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;
     foreach my $key (sort(keys(%{$functions}))){      if ((ref($functions) eq 'HASH') && (ref($tools) eq 'ARRAY')) {
         push (@tableHeader,&mt(${$functions}{$key}));          @tableHeader = map { $functions->{$_}; } @{$tools};
     }         }
  $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 2754  sub change_privs_form { Line 2795  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)=@_;           $stored,$states,$navbuttons,$gpterm,$ucgpterm,$crstype)=@_; 
     $r->print(' <br />');      $r->print(' <br />');
     my @available = ();      my @available = ();
     my @unavailable = ();      my @unavailable = ();
Line 2763  sub add_members_form { Line 2804  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);                          $ucgpterm,$crstype);
     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 3094  sub process_request { Line 3135  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);                              $ucgpterm,$crstype);
     }      }
     return;      return;
 }  }
Line 3256  sub write_group_data { Line 3297  sub write_group_data {
                                 }                                  }
                                 undef($navmap);                                  undef($navmap);
                             } else {                              } else {
                                 $error = &mt('An error occurred while setting parameters '.                                  if ($crstype eq 'Community') {
                                       $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 />';
                              &mt('You need to re-initialize the course.');                      if ($crstype eq 'Community') {
                           $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 3295  sub write_group_data { Line 3347  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)=@_;          $gpterm,$ucgpterm,$crstype)=@_;
     my %usersettings = ();      my %usersettings = ();
     my %added= ();      my %added= ();
     my %failed = ();      my %failed = ();
Line 3500  sub process_membership { Line 3552  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">');
                  .&mt('Any currently logged in course users affected by the changes you made'          if ($crstype eq 'Community') {
               $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 3577  sub mapping_settings { Line 3636  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();      my @roles = &standard_roles($crstype);
     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 3620  sub print_autorole_item { Line 3679  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') {          if (($role eq 'cc') || ($role eq 'co')) {
             $sections_sel = '<td align="right">'.              $sections_sel = '<td align="right">'.
                             &mt('all sections').'<input type="hidden" '.                              &mt('all sections').'<input type="hidden" '.
                             'name="sec_cc" value="all" /></td>';                              'name="sec_'.$role.'" 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 3639  sub print_autorole_item { Line 3698  sub print_autorole_item {
 }   } 
   
 sub standard_roles {  sub standard_roles {
     my @roles = ('cc','in','ta','ep','st');      my ($crstype) = @_;
       my @roles = qw(in ta ep ad st);
       if ($crstype eq 'Community') {
           unshift(@roles,'co');
       } else {
           unshift(@roles,'cc');
       }
     return @roles;      return @roles;
 }  }
   
Line 3778  sub add_group_folder { Line 3843  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 '') {
         return '<span class="LC_error">'          my $error = '<span class="LC_error">';
               .&mt('Error: invalid course domain or number - group folder creation failed.')          if ($crstype eq 'Community') { 
               .'</span>';              $error .= &mt("Error: invalid community domain or number - group folder creation failed.");
           } 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 3848  sub add_group_folder { Line 3918  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)) {
         return $warning.'<span class="LC_error">'.&mt('Error retrieving course contents').          $warning .= '<span class="LC_error">';
                ' '.&mt('You need to re-initialize the course.').'</span>';          if ($crstype eq 'Community') {
               $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 3954  sub new_map { Line 4032  sub new_map {
 }  }
   
 sub parm_setter {  sub parm_setter {
     my ($navmap,$cdom,$url,$groupname) = @_;      my ($navmap,$cdom,$url,$groupname,$crstype) = @_;
     my $allresults;  
     if (!defined($navmap)) {      if (!defined($navmap)) {
         $allresults = '<div class="LC_warning">'.          my $allresults;
                       &mt('Parameters not set for [_1] because the contents of the course could not be retrieved.',$url).' '.          if ($crstype eq 'Community') { 
                       &mt('You need to reinitialize the course.').              $allresults = &mt("Parameters not set for [_1] because the contents of the community could not be retrieved.",$url).' '.
                       '</div>';                            &mt("You need to reinitialize the community.");
         return $allresults;          } else {
               $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 3975  sub parm_setter { Line 4057  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 3991  sub parm_setter { Line 4074  sub parm_setter {
             }              }
         }          }
     } else {      } else {
         $allresults = '<div class="LC_warning">'           $allresults = '<div class="LC_warning">';
                      .&mt('Parameters not set for [_1] because the resource was not recognized'          if ($crstype eq 'Community') {
                          .' as part of the course.','<tt>'.$url.'</tt>')              $allresults .= &mt("Parameters not set for [_1] because the resource was not recognized as part of the community.",'<tt>'.$url.'</tt>');
                      .'</div>';          } else {
               $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  
changed lines
  Added in v.1.101.4.2


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