Diff for /loncom/interface/loncoursegroups.pm between versions 1.105 and 1.126

version 1.105, 2009/11/16 14:07:57 version 1.126, 2014/06/18 16:34:39
Line 31  use strict; Line 31  use strict;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
   use Apache::lonhtmlgateway;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnavmaps();  use Apache::lonnavmaps();
 use Apache::longroup();  use Apache::longroup();
Line 135  function changeSort(caller) { Line 136  function changeSort(caller) {
 function openGroupRoster(group,status) {  function openGroupRoster(group,status) {
     var url = '/adm/grouproster?';      var url = '/adm/grouproster?';
     url += 'group='+group+'&status='+status+'&ref=popup';      url += 'group='+group+'&status='+status+'&ref=popup';
     var title = 'Group Membership';      var title = 'Group_Membership';
     var options = 'scrollbars=1,resizable=1,menubar=0';      var options = 'scrollbars=1,resizable=1,menubar=0';
     options += ',width=700,height=600';      options += ',width=700,height=600';
     rosterbrowser = open(url,title,options,'1');      rosterbrowser = open(url,title,options,'1');
Line 170  sub display_groups { Line 171  sub display_groups {
     my %actionlinks = (      my %actionlinks = (
       modify => '<a href="/adm/coursegroups?action=modify&refpage='.        modify => '<a href="/adm/coursegroups?action=modify&refpage='.
                          $env{'form.refpage'}.'&state=pick_task&groupname=',                           $env{'form.refpage'}.'&state=pick_task&groupname=',
       view => '<a href="/adm/'.$cdom.'/'.$cnum.'/',        view => '<a href="',
       delete => '<a href="/adm/coursegroups?action=delete&refpage='.        delete => '<a href="/adm/coursegroups?action=delete&refpage='.
                          $env{'form.refpage'}.'&state=verify&groupname=',                           $env{'form.refpage'}.'&state=verify&groupname=',
       reenable => '<a href="/adm/coursegroups?action=reenable&refpage='.        reenable => '<a href="/adm/coursegroups?action=reenable&refpage='.
Line 188  sub display_groups { Line 189  sub display_groups {
                           crtd   => 'Created',                            crtd   => 'Created',
                           last   => 'Last Modified',                            last   => 'Last Modified',
                           func   => 'Collaborative Tools',                            func   => 'Collaborative Tools',
                           quot   => 'Quota (Mb)',                            quot   => 'Quota (MB)',
                           memb   => 'Members',                            memb   => 'Members',
                           file   => 'Files',                            file   => 'Files',
                           dibd   => 'Discussion Boards',                            dibd   => 'Discussion Boards',
Line 221  sub display_groups { Line 222  sub display_groups {
                                                           $status);                                                            $status);
   
         if (%curr_groups) {          if (%curr_groups) {
               my $navmap=Apache::lonnavmaps::navmap->new();
               if (!defined($navmap)) {
                   $r->print('<div class="LC_error">'.
                             &mt('An error occurred retrieving information about resources in the course.').'<br />'.
                             &mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','<a href="/adm/roles?selectrole=1&newrole='.$env{'request.role'}.'&orgurl=%2fadm%2fcoursegroups">','</a>').
                             '</div>');
                   return;
               }
             if ($manage_permission) {              if ($manage_permission) {
                 if ($action ne 'reenable') {                  if ($action ne 'reenable') {
                     $r->print('<br /><a href="/adm/coursegroups?action=create&amp;refpage='.$env{'form.refpage'}.'">'.$lt{'crng'}.'</a>');                      $r->print('<br /><a href="/adm/coursegroups?action=create&amp;refpage='.$env{'form.refpage'}.'">'.$lt{'crng'}.'</a>');
Line 324  END Line 333  END
                         $action eq 'reenable') {                          $action eq 'reenable') {
                         $link .= $group;                          $link .= $group;
                     } else {                      } else {
                         $link .= $group.'/smppg?ref=grouplist';                          $link .= 
                               &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap);
                           $link .= (($link=~/\?/)?'&amp;':'?').'ref=grouplist';
                         if (exists($env{'form.refpage'})) {                          if (exists($env{'form.refpage'})) {
                             $link .= '&amp;refpage='.$env{'form.refpage'};                              $link .= '&amp;refpage='.$env{'form.refpage'};
                         }                          }
Line 386  END Line 397  END
             $r->print('<br /><br />');              $r->print('<br /><br />');
             my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);              my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
             if (%curr_groups) {              if (%curr_groups) {
                   my $navmap=Apache::lonnavmaps::navmap->new();
                   if (!defined($navmap)) {
                       $r->print('<div class="LC_error">'.
                                 &mt('An error occurred retrieving information about resources in the course.').'<br />'.
                                 &mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','<a href="/adm/roles?selectrole=1&newrole='.$env{'request.role'}.'&orgurl=%2fadm%2fcoursegroups">','</a>').
                                 '</div>');
                       return;
                   }
                 foreach my $group (@coursegroups) {                  foreach my $group (@coursegroups) {
                     my %group_info =  &Apache::longroup::get_group_settings(                      my %group_info =  &Apache::longroup::get_group_settings(
                                         $curr_groups{$group});                                          $curr_groups{$group});
                     my $description = &unescape(                      my $description = &unescape(
                                         $group_info{description});                                          $group_info{description});
                     $r->print('<font size="+1"><a href="/adm/'.$cdom.'/'.$cnum.'/'.$group.'/smppg?ref=grouplist">'.$group,'</a><font><br /><small>'.$description.'</small><br /><br />');                      my $link = 
                           &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap).
                           '&amp;ref=grouplist';
                       $r->print('<span style="font-size: larger"><a href="'.$link.'">'.$group,'</a></span><br /><small>'.$description.'</small><br /><br />');
                 }                  }
             }              }
         } else {          } else {
             $r->print(&mt('You are not currently a member of any active '.$gpterm.'s in this '.lc($crstype).'.'));              $r->print(
                   '<p class="LC_info">'
                  .&mt('You are not currently a member of any active '.$gpterm.'s'
                      .' in this '.lc($crstype).'.')
                  .'</p>'
               );
         }          }
     }      }
     return;      return;
Line 785  sub group_administration { Line 812  sub group_administration {
     }      }
     var maxposs = '.sprintf("%.2f",$maxposs).';      var maxposs = '.sprintf("%.2f",$maxposs).';
     if (newquota > maxposs) {      if (newquota > maxposs) {
         alert("The group portfolio quota you entered for this group ("+newquota+" Mb) exceeds the maximum possible ("+maxposs+" Mb). Please enter a smaller number.");          alert("The group portfolio quota you entered for this group ("+newquota+" MB) exceeds the maximum possible ("+maxposs+" MB). Please enter a smaller number.");
         return;          return;
     }      }
     var re_quota = '.$float_check.';      var re_quota = '.$float_check.';
Line 804  sub group_administration { Line 831  sub group_administration {
             }              }
         }          }
         if (warn_zero == 1) {          if (warn_zero == 1) {
             alert("You have indicated that the group portfolio should be enabled, but you have set the respository quota to 0 Mb.\nThis will prevent any upload of files.\nPlease set a value or disable the repository feature.");              alert("You have indicated that the group portfolio should be enabled, but you have set the repository quota to 0 MB.\nThis will prevent any upload of files.\nPlease set a value or disable the repository feature.");
             return;              return;
         }          }
     }       } 
Line 1210  sub delete_group { Line 1237  sub delete_group {
         if ($result eq 'ok') {          if ($result eq 'ok') {
             my $outcome = &modify_folders($cdom,$cnum,$groupname,$crstype);              my $outcome = &modify_folders($cdom,$cnum,$groupname,$crstype);
             if ($outcome eq '') {              if ($outcome eq '') {
                 $r->print('<div class="LC_success">'                  my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Group successfully deleted.'));
                          .&mt('Group successfully deleted.')                  $message = &Apache::loncommon::confirmwrapper($message);
                          .'</div>');                  $r->print($message);
             } else {              } else {
                 $r->print('<div class="LC_error">');                  $r->print('<div class="LC_error">');
                 if ($crstype eq 'Community') {                  if ($crstype eq 'Community') {
Line 1223  sub delete_group { Line 1250  sub delete_group {
                 $r->print('</div>');                  $r->print('</div>');
             }              }
         } else {          } else {
             $r->print('<div class="LC_error">'              my $msg = &Apache::lonhtmlcommon::confirm_success(&mt('Group deletion failed.'),1);
                      .&mt('Group deletion failed.')              $msg = &Apache::loncommon::confirmwrapper($msg);
                      .'</div>');              $r->print($msg);
         }          }
     }      }
     return;      return;
Line 1255  sub reenable_folder { Line 1282  sub reenable_folder {
         $LONCAPA::map::resources[$idx] = $foldertitle.':'.$mapurl.          $LONCAPA::map::resources[$idx] = $foldertitle.':'.$mapurl.
                                          ':false:normal:res';                                           ':false:normal:res';
         $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,1);
         if ($errtext) {          if ($errtext) {
             $outcome='<div class="LC_error">'              $outcome='<div class="LC_error">'
                     .&mt('An error occurred when saving updated parent folder to group:'                      .&mt('An error occurred when saving updated parent folder to group:'
Line 1320  sub modify_folders { Line 1347  sub modify_folders {
                     $LONCAPA::map::order[$i] = $LONCAPA::map::order[$i+1];                      $LONCAPA::map::order[$i] = $LONCAPA::map::order[$i+1];
                 }                  }
                 $#LONCAPA::map::order--;                  $#LONCAPA::map::order--;
                 my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1);                  my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1,1);
                 if ($errtext) {                  if ($errtext) {
                     $outcome='<div class="LC_error">'                      $outcome='<div class="LC_error">'
                             .&mt('An error occurred when saving updated parent folder to group:')                              .&mt('An error occurred when saving updated parent folder to group:')
Line 1437  $context) eq 'ok') { Line 1464  $context) eq 'ok') {
         }          }
         my $outcome = &reenable_folder($cdom,$cnum,$groupname,$description,$crstype);          my $outcome = &reenable_folder($cdom,$cnum,$groupname,$description,$crstype);
         if ($outcome eq '') {          if ($outcome eq '') {
             $r->print('<div class="LC_success">'              my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Group successfully re-enabled.'));
                      .&mt('Group successfully re-enabled.')              $message = &Apache::loncommon::confirmwrapper($message);
                      .'</div>');              $r->print($message);
         } else {          } else {
             $r->print('<div class="LC_error">');              $r->print('<div class="LC_error">');
             if ($crstype eq 'Community') {              if ($crstype eq 'Community') {
Line 1450  $context) eq 'ok') { Line 1477  $context) eq 'ok') {
             $r->print('</div>');              $r->print('</div>');
         }          }
     } else {      } else {
         $r->print('<div class="LC_error">'          my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Re-enabling group failed.'),1);
                  .&mt('Re-enabling group failed.')          $message = &Apache::loncommon::confirmwrapper($message);
                  .'</div>');          $r->print($message);
     }      }
     return;      return;
 }  }
Line 1466  sub header { Line 1493  sub header {
        {'add_entries' => $loaditems,});         {'add_entries' => $loaditems,});
     my $output = <<"END";      my $output = <<"END";
 $start_page  $start_page
 <form method="post" name="$state">  <form method="post" name="$state" action="">
   
 END  END
     if ($action eq 'create' || $action eq 'modify') {      if ($action eq 'create' || $action eq 'modify') {
Line 1526  sub build_members_list { Line 1553  sub build_members_list {
 sub group_files {  sub group_files {
     my ($group,$portpath,$numfiles,$numdirs) = @_;      my ($group,$portpath,$numfiles,$numdirs) = @_;
     my $dirptr=16384;      my $dirptr=16384;
     my @dir_list=&Apache::portfolio::get_dir_list($portpath,undef,$group);      my ($dirlistref,$listerror) = 
     foreach my $line (@dir_list) {          &Apache::portfolio::get_dir_list($portpath,undef,$group);
         my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);      if (ref($dirlistref) eq 'ARRAY') {
         if (($filename !~ /^\.\.?$/) && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/) && ($filename ne 'no_such_dir')) {           foreach my $line (@{$dirlistref}) {
             if ($dirptr&$testdir) {              my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);
                 $portpath .= '/'.$filename;              if (($filename !~ /^\.\.?$/) && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/) && ($filename ne 'no_such_dir')) { 
                 $$numdirs ++;                  if ($dirptr&$testdir) {
                 &group_files($group,$portpath,$numfiles,$numdirs)                      $portpath .= '/'.$filename;
             } else {                      $$numdirs ++;
                 $$numfiles ++;                      &group_files($group,$portpath,$numfiles,$numdirs)
                   } else {
                       $$numfiles ++;
                   }
             }              }
         }          }
     }      }
Line 1727  sub groupsettings_options { Line 1757  sub groupsettings_options {
     } else {      } else {
         $r->print(&mt('Quota allocated to group portfolio:'));          $r->print(&mt('Quota allocated to group portfolio:'));
     }       } 
     $r->print(' '.&mt('[_1] Mb','<input type="text" name="quota" size="4" />'));      $r->print(' '.&mt('[_1] MB','<input type="text" name="quota" size="4" />'));
     if ($action eq 'create') {      if ($action eq 'create') {
         $r->print('<br />'          $r->print('<br />'
                  .&mt('A total of [_1] Mb can be divided amongst all '.$gpterm.'s in the '                   .&mt('A total of [_1] MB can be divided amongst all '.$gpterm.'s in the '
                      .lc($crstype).', and [_2] Mb are currently unallocated.'                       .lc($crstype).', and [_2] MB are currently unallocated.'
                      ,$crsquota,sprintf("%.2f",$freespace))                       ,$crsquota,sprintf("%.2f",$freespace))
                  );                   );
     } else {      } else {
         $r->print('&nbsp;&nbsp;('.&mt('The quota is currently [_1] Mb',          $r->print('&nbsp;&nbsp;('.&mt('The quota is currently [_1] MB',
                                       $$stored{'quota'}).').');                                        $$stored{'quota'}).').');
   
         $r->print('<br />'          $r->print('<br />'
                  .&mt('The quota can be increased to [_1] Mb, '                   .&mt('The quota can be increased to [_1] MB, '
                  .'by adding all unallocated space for '.$gpterm.'s in the '.lc($crstype).'.'                   .'by adding all unallocated space for '.$gpterm.'s in the '.lc($crstype).'.'
                   ,sprintf("%.2f",$maxposs)));                    ,sprintf("%.2f",$maxposs)));
     }      }
Line 1774  sub membership_options { Line 1804  sub membership_options {
                 '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 course users from which you will select members of the new group.',
                 'pica' => 'Pick the criteria to use to build a list of course users from which you will select additional members of the group.',                  'pica' => 'Pick the criteria to use to build a list of course users from which you will select 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.',                   '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' => 'Course roles',
                 'cose' => 'Course sections',                  'cose' => 'Course sections',
Line 1988  sub print_current_settings { Line 2017  sub print_current_settings {
         dfac => 'Default access dates',          dfac => 'Default access dates',
         ygrs => "Your group selections - ",          ygrs => "Your group selections - ",
         tfwa => "The following settings will apply to the group:",          tfwa => "The following settings will apply to the group:",
         difn => 'Different collaborative tools<br />for different members:',  
         stda => 'Start date:',          stda => 'Start date:',
         enda => 'End date:',          enda => 'End date:',
     );      );
       $lt{'difn'} = &mt('Different collaborative tools[_1]for different members:','<br />');
     my $showstart = &Apache::lonlocal::locallocaltime($startdate);      my $showstart = &Apache::lonlocal::locallocaltime($startdate);
     my $showend;      my $showend;
     if ($enddate == 0) {      if ($enddate == 0) {
Line 2041  sub print_current_settings { Line 2070  sub print_current_settings {
         $r->print('</ul>');          $r->print('</ul>');
     }      }
   
     my $quota_text=&mt('[_1] Mb',$quota);      my $quota_text=&mt('[_1] MB',$quota);
     my $granu_text=&mt($granularity);      my $granu_text=&mt($granularity);
     $r->print(<<"END");      $r->print(<<"END");
   </td>    </td>
Line 2231  sub privilege_specificity { Line 2260  sub privilege_specificity {
                 "for users who receive specific sections/roles in the course ",                  "for users who receive specific sections/roles in the course ",
       'asyo' => "As you have chosen not to include any collaborative tools ".        'asyo' => "As you have chosen not to include any collaborative tools ".
                 "in the group, no default optional privileges need to be set.",                  "in the group, no default optional privileges need to be set.",
       'plin' => 'Indicate which <b>optional</b> privileges members '.  
                 'will receive by default for a specific tool.',                  'will receive by default for a specific tool.',
       'oppr' => 'Optional privileges',        'oppr' => 'Optional privileges',
       'defp' => 'The default privileges new members will receive are:',         'defp' => 'The default privileges new members will receive are:', 
     );      );
       $lt{'plin'} = &mt('Indicate which [_1]optional[_2] privileges members '.
                         'will receive by default for a specific tool.','<b>','</b>');
     if ($crstype eq 'Community') {      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 ');           $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 '); 
     }      }
Line 2337  sub default_privileges { Line 2367  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 2519  sub current_membership { Line 2549  sub current_membership {
                                           'actn' => 'Action?',                                            'actn' => 'Action?',
                                           'name' => 'Name',                                            'name' => 'Name',
                                           'usnm' => 'Username',                                            'usnm' => 'Username',
                                             'stid' => 'ID',
                                           'doma' => 'Domain',                                            'doma' => 'Domain',
                                           'stda' => 'Start Date',                                            'stda' => 'Start Date',
                                           'enda' => 'End Date',                                            'enda' => 'End Date',
Line 2580  END Line 2611  END
      <th><a href="javascript:changeSort('fullname')">$lt{'name'}</a></th>       <th><a href="javascript:changeSort('fullname')">$lt{'name'}</a></th>
      <th><a href="javascript:changeSort('username')">$lt{'usnm'}</a></th>       <th><a href="javascript:changeSort('username')">$lt{'usnm'}</a></th>
      <th><a href="javascript:changeSort('domain')">$lt{'doma'}</a></th>       <th><a href="javascript:changeSort('domain')">$lt{'doma'}</a></th>
      <th><a href="javascript:changeSort('id')">ID</a></th>       <th><a href="javascript:changeSort('id')">$lt{'ID'}</a></th>
      <th><a href="javascript:changeSort('start')">$lt{'stda'}</a></th>       <th><a href="javascript:changeSort('start')">$lt{'stda'}</a></th>
      <th><a href="javascript:changeSort('end')">$lt{'enda'}</a></th>       <th><a href="javascript:changeSort('end')">$lt{'enda'}</a></th>
 END  END
Line 2704  END Line 2735  END
         }          }
         $r->print(&Apache::loncommon::end_data_table());          $r->print(&Apache::loncommon::end_data_table());
     } else {      } else {
         $r->print(&mt('There are no active, future or previous group members to modify.'));          $r->print(
               '<p class="LC_info">'
              .&mt('There are no active, future or previous group members to modify.')
              .'</p>');
     }      }
     return $numcurrent;      return $numcurrent;
 }  }
Line 2772  sub change_privs_form { Line 2806  sub change_privs_form {
         }          }
     }      }
     if (!$exp_or_del) {      if (!$exp_or_del) {
         $r->print($lt{'nome'}.'<br />');          $r->print('<p class="LC_info">'.$lt{'nome'}.'</p>');
     }      }
           
     $r->print(&Apache::lonhtmlcommon::topic_bar(4,&mt('Setting optional privileges for specific group members')));      $r->print(&Apache::lonhtmlcommon::topic_bar(4,&mt('Setting optional privileges for specific group members')));
Line 3168  sub write_group_data { Line 3202  sub write_group_data {
         $quota = 0;          $quota = 0;
         $r->print('<div class="LC_warning">'          $r->print('<div class="LC_warning">'
                  .&mt('The value you entered for the quota for the group portfolio in this '.$gpterm                   .&mt('The value you entered for the quota for the group portfolio in this '.$gpterm
                  .' contained invalid characters, so it has been set to 0 Mb. You can change this by'                   .' contained invalid characters, so it has been set to 0 MB. You can change this by'
                  .' modifying the '.$gpterm.' settings.')                   .' modifying the '.$gpterm.' settings.')
                  .'</div>');                   .'</div>');
     }      }
Line 3176  sub write_group_data { Line 3210  sub write_group_data {
         $quota = $maxposs;          $quota = $maxposs;
         $r->print('<div class="LC_warning">'          $r->print('<div class="LC_warning">'
                  .&mt('The value you entered for the quota for the group portfolio in this '.$gpterm                   .&mt('The value you entered for the quota for the group portfolio in this '.$gpterm
                  .' exceeded the maximum possible value, so it has been set to [_1] Mb '                   .' exceeded the maximum possible value, so it has been set to [_1] MB '
                  .'(the maximum possible value).',sprintf("%.2f",$maxposs))                   .'(the maximum possible value).',sprintf("%.2f",$maxposs))
                  .'</div>');                   .'</div>');
     }      }
Line 3244  sub write_group_data { Line 3278  sub write_group_data {
                                            $description,$tools,\%groupinfo,                                             $description,$tools,\%groupinfo,
                                            $gpterm,$ucgpterm,$crstype);                                             $gpterm,$ucgpterm,$crstype);
             if ($result eq 'ok') {              if ($result eq 'ok') {
                 $r->print('<div class="LC_success">'                  my $msg = &Apache::lonhtmlcommon::confirm_success(&mt($ucgpterm.' [_1] was created.','<i>'.$groupname.'</i>'));
                          .&mt($ucgpterm.' [_1] was created.','<i>'.$groupname.'</i>')                  $msg = &Apache::loncommon::confirmwrapper($msg);
                          .'</div>');                  $r->print($msg);
             } else {              } else {
                 $r->print('<div class="LC_error">'                  my $msg = &Apache::lonhtmlcommon::confirm_success(&mt('A problem occurred when creating folders for the new '.$gpterm.' [_1]:'
                          .&mt('A problem occurred when creating folders for the new '.$gpterm.' [_1]:'                                                                       ,'<i>'.$groupname.'</i>')
                              ,'<i>'.$groupname.'</i>')                                                                       .'<br />'.$result,1);
                          .'<br />'.$result                  $msg = &Apache::loncommon::confirmwrapper($msg);
                          .'</div>');                  $r->print($msg);
             }              }
         } elsif ($action eq 'modify') {          } elsif ($action eq 'modify') {
             my (@oldtools,@newtools);               my (@oldtools,@newtools); 
Line 3323  sub write_group_data { Line 3357  sub write_group_data {
                     $r->print('<div class="LC_error">'.$error.'</div>');                      $r->print('<div class="LC_error">'.$error.'</div>');
                 }                  }
             }              }
             $r->print('<div class="LC_success">'              my $message = &Apache::lonhtmlcommon::confirm_success(&mt($ucgpterm.' [_1] was updated.','<i>'.$groupname.'</i>'));
                      .&mt($ucgpterm.' [_1] was updated.','<i>'.$groupname.'</i>')              $message = &Apache::loncommon::confirmwrapper($message);
                      .'</div>');              $r->print($message);
         }          }
     } else {      } else {
         my %actiontype = (          my %actiontype = (
Line 3335  sub write_group_data { Line 3369  sub write_group_data {
         &Apache::lonnet::logthis("Failed to store $gpterm $groupname ".          &Apache::lonnet::logthis("Failed to store $gpterm $groupname ".
                                  'in '.lc($crstype).': '.$cnum.                                   'in '.lc($crstype).': '.$cnum.
                                  ' in domain: '.$cdom);                                   ' in domain: '.$cdom);
         $r->print('<div class="LC_error">'          $r->print('<p class="LC_error">'
                  .&mt('An error occurred when [_1] the '.$gpterm.'. '                   .&mt('An error occurred when '.$actiontype{$action}.' the '.$gpterm.'. '
                  .'Please try again.',$actiontype{$action})                   .'Please try again.')
                  .'</div>');                   .'</p');
     }      }
     return $result;      return $result;
 }  }
Line 3469  sub process_membership { Line 3503  sub process_membership {
                 if (grep/^$user$/,@reenable) {                  if (grep/^$user$/,@reenable) {
                     $start = $startdate;                      $start = $startdate;
                     $end = $enddate;                      $end = $enddate;
                     $type = 'reenabled';                      $type = 're-enabled';
                 }                  }
             }              }
             if ($type eq '') {              if ($type eq '') {
Line 3503  sub process_membership { Line 3537  sub process_membership {
     my $roster_result = &Apache::lonnet::modify_coursegroup_membership($cdom,      my $roster_result = &Apache::lonnet::modify_coursegroup_membership($cdom,
                                                        $cnum,\%usersettings);                                                         $cnum,\%usersettings);
     if ($num_ok) {      if ($num_ok) {
         foreach my $type (sort(keys(%added))) {           my $msgall ='';
             $r->print(&mt('The following users were successfully [_1]',$type));          foreach my $type (sort(keys(%added))) {
               my $message;
               my $tmsg = "The following users were successfully $type"; 
             if (!($type eq 'deleted' || $type eq 'expired')) {                 if (!($type eq 'deleted' || $type eq 'expired')) {   
                 $r->print(&mt(' with the following privileges'));                  $tmsg .= ' with the following privileges';
             }              }
             $r->print(':<br />');              $message .= &mt($tmsg.':').'<br/>';
             foreach my $user (@{$added{$type}}) {              foreach my $user (@{$added{$type}}) {
                 my $privlist = '';                  my $privlist = '';
                 if (!($type eq 'deleted' ||  $type eq 'expired')) {                  if (!($type eq 'deleted' ||  $type eq 'expired')) {
Line 3524  sub process_membership { Line 3560  sub process_membership {
                     }                      }
                     $privlist =~ s/, $//;                      $privlist =~ s/, $//;
                 }                  }
                 $r->print($$userdata{$user}[$$idx{fullname}].'&nbsp;-&nbsp;'.$user.$privlist.'<br />');                  $message .= $$userdata{$user}[$$idx{fullname}].'&nbsp;-&nbsp;'.$user.$privlist.'<br />';
             }              }
             $r->print('<br />');              $message .= '<br/>';
               $message = &Apache::lonhtmlcommon::confirm_success($message);
               $msgall .= $message;
         }          }
           $msgall = &Apache::loncommon::confirmwrapper($msgall);
           $r->print($msgall);
     }      }
     if ($num_fail) {      if ($num_fail) {
         foreach my $type (sort(keys(%failed))) {          foreach my $type (sort(keys(%failed))) {
Line 3540  sub process_membership { Line 3580  sub process_membership {
         }          }
         $r->print('<br />');          $r->print('<br />');
     }      }
     if (@unchanged > 0) {  # Is that really needed?
         $r->print(&mt('No change occurred for the following users:').'<br />');  #
         foreach my $user (sort(@unchanged)) {  #    if (@unchanged > 0) {
             $r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'<br />');  #        $r->print(&mt('No change occurred for the following users:').'<br />');
         }  #        foreach my $user (sort(@unchanged)) {
         $r->print('<br />');  #            $r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'<br />');
     }  #        }
   #        $r->print('<br />');
   #    }
     if ($roster_result eq 'ok') {      if ($roster_result eq 'ok') {
         $r->print('<div class="LC_success">'          $r->print('<div class="LC_success">'
                  .&mt($ucgpterm.' membership list updated.')                   .&mt($ucgpterm.' membership list updated.')
Line 3710  sub standard_roles { Line 3752  sub standard_roles {
 sub modify_menu {  sub modify_menu {
     my ($r,$groupname,$page,$gpterm) = @_;      my ($r,$groupname,$page,$gpterm) = @_;
     my @menu =      my @menu =
         (          ( { categorytitle =>'Group Actions',
           { text => "Modify default $gpterm settings",   items => [
             help => 'Course_Modify_Group',  
             state => 'change_settings',            { linktext => "Modify default $gpterm settings",
             branch => 'settings',              url => '/adm/coursegroups?action=modify&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state=change_settings&branch=settings',
               icon => 'grp_settings.png',
               alttext => "Modify default $gpterm settings",
               permission => '1',
               help => 'Course_Modify_Group',            
             },              },
           { text => 'Modify access, tools and/or privileges for previous, '.            { linktext => 'Modify access, tools and privileges for members',
                     'future, or current members',              url => '/adm/coursegroups?action=modify&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state=change_members&branch=members',
               icon => 'grp_tools.png',
               alttext => 'Modify access, tools and privileges for members',
               permission => '1',
             help => 'Course_Modify_Group_Membership',              help => 'Course_Modify_Group_Membership',
             state => 'change_members',  
             branch => 'members',  
             },              },
           { text => "Add member(s) to the $gpterm",            { linktext => "Add member(s) to the $gpterm",
               url => '/adm/coursegroups?action=modify&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state=add_members&branch=adds',
               icon => 'grp_add.png',
               alttext =>  "Add member(s) to the $gpterm",
               permission => '1',
             help => 'Course_Group_Add_Members',              help => 'Course_Group_Add_Members',
             state => 'add_members',              }]}
             branch => 'adds',            );   
             },      $r->print(&Apache::lonhtmlcommon::generate_menu(@menu));
           );  
     my $menu_html = '';  
     foreach my $menu_item (@menu) {  
         $menu_html .=  
         '<p><font size="+1"><a href="/adm/coursegroups?action=modify&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state='.$menu_item->{'state'}.'&branch='.$menu_item->{'branch'}.'">';  
         $menu_html.= &mt($menu_item->{'text'}).'</a></font>';  
         if (exists($menu_item->{'help'})) {  
             $menu_html.=  
                 &Apache::loncommon::help_open_topic($menu_item->{'help'});  
         }  
         $menu_html.='</p>'.$/;  
     }  
     $r->print($menu_html);  
     return;      return;
 }  }
   
Line 4007  sub map_updater { Line 4045  sub map_updater {
         $LONCAPA::map::resources[$newidx] = $itemtitle.':'.$newmapurl.          $LONCAPA::map::resources[$newidx] = $itemtitle.':'.$newmapurl.
                                                  ':false:normal:res';                                                   ':false:normal:res';
         $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,1);
         if ($errtext) {          if ($errtext) {
             $outcome = '<div class="LC_error">'              $outcome = '<div class="LC_error">'
                       .&mt('Error saving updated parent folder.')." ($parentmap):  $errtext"                        .&mt('Error saving updated parent folder.')." ($parentmap):  $errtext"
Line 4088  sub create_homepage { Line 4126  sub create_homepage {
     my ($cdom,$cnum,$name,$groupinfo,$tools,$gpterm,$ucgpterm,$now) = @_;      my ($cdom,$cnum,$name,$groupinfo,$tools,$gpterm,$ucgpterm,$now) = @_;
     my $functionality = join(',',@{$tools});      my $functionality = join(',',@{$tools});
     my $content = &unescape($$groupinfo{description});      my $content = &unescape($$groupinfo{description});
     $content=~s/\s+$//s;      chomp($content);
     $content=~s/^\s+//s;      my $gateway = Apache::lonhtmlgateway->new();
     $content=~s/\<br\s*\/*\>$//s;      $content = $gateway->process_incoming_html($content,1);
     $content=&Apache::lonfeedback::clear_out_html($content,1);  
   
     my %pageinfo = (      my %pageinfo = (
                      'aaa_title' => "$ucgpterm: $name",                       'aaa_title' => "$ucgpterm: $name",
Line 4151  sub validate_groupname { Line 4188  sub validate_groupname {
     }      }
     my %lt = &Apache::lonlocal::texthash (      my %lt = &Apache::lonlocal::texthash (
                       igna => "Invalid $gpterm name",                        igna => "Invalid $gpterm name",
                       tgne => "The $gpterm name entered ",  
                       grna => "$ucgpterm names and section names used in a ".                        grna => "$ucgpterm names and section names used in a ".
                                "$crstype must be unique.",                                 "$crstype must be unique.",
                       isno => "is not a valid name.",  
                       gnmo => "$ucgpterm names may only contain letters, ".                         gnmo => "$ucgpterm names may only contain letters, ". 
                               "numbers or underscores.",                                "numbers or underscores.",
                       cnnb => "can not be used as it is the name of ",  
                       inth => " in this $crstype",   
                       thgr => "- does not correspond to the name of an ".  
                               "existing $gpterm",      
     );      );
   
     my $exitmsg = '<span class="LC_error">'.$lt{'igna'}.'</span><br /><br />'.      my $exitmsg = '<span class="LC_error">'.$lt{'igna'}.'</span><br /><br />';
  $lt{'tgne'}.' "'.$groupname.'" ';      my $nameshown = &Apache::loncommon::cleanup_html($groupname);
     my $dupmsg = $lt{'grna'};  
     my $earlyout;  
     if (($groupname eq '') || ($groupname =~ /\W/)) {      if (($groupname eq '') || ($groupname =~ /\W/)) {
         $earlyout = $exitmsg.$lt{'isno'}.'<br />'.$lt{'gnmo'};          return $exitmsg.
         return $earlyout;                 &mt("The $gpterm name entered '[_1]' is not a valid name.",$nameshown).
                  '<br />'.$lt{'gnmo'};
       } elsif ($groupname eq 'syllabus') {
           return $exitmsg.
                  &mt("The $gpterm name entered '[_1]' is reserved for use by LON-CAPA.",$nameshown);
     }      }
     if (exists($sectioncount{$groupname})) {      if (exists($sectioncount{$groupname})) {
  return $exitmsg.$lt{'cnnb'}.&mt('a section').$lt{'inth'}.   return  $exitmsg.
     '<br />'.$lt{'grna'};                  &mt("The $gpterm name entered '[_1]' can not be used as it is the name of a section in this $crstype.",$nameshown).
           '<br />'.$lt{'grna'};
     }      }
     if ($action eq 'create') {       if ($action eq 'create') { 
  if (exists($curr_groups{$groupname})) {   if (exists($curr_groups{$groupname})) {
     return $exitmsg.$lt{'cnnb'}.&mt('an existing [_1]',$gpterm).      return $exitmsg.
            $lt{'inth'}.'.<br />'.$lt{'grna'};                     &mt("The $gpterm name entered '[_1]' can not be used as it is the name of an existing $gpterm in this $crstype.",$nameshown).
                     '<br />'.$lt{'grna'};
         } elsif (exists($deleted_groups{$groupname})) {          } elsif (exists($deleted_groups{$groupname})) {
             return $exitmsg.$lt{'cnnb'}.&mt('a [_1] which previously existed',$gpterm).              return $exitmsg.
                    $lt{'inth'}.'.<br />'.$lt{'grna'};                     &mt("The $gpterm name entered '[_1]' can not be used as it is the name of a $gpterm which previously existed in this $crstype.",$nameshown).
                      '<br />'.$lt{'grna'};
         }          }
     } elsif ($action eq 'modify') {      } elsif ($action eq 'modify') {
         unless(exists($curr_groups{$groupname})) {          unless(exists($curr_groups{$groupname})) {
             $earlyout = &mt('[_1] name:',$ucgpterm).' '.$groupname.$lt{'thgr'}.              return &mt("$ucgpterm name: [_1] does not correspond to the name of an existing $gpterm in this $crstype.",$nameshown);
                         $lt{'inth'};  
             return $earlyout;  
         }          }
     }      }
     return;      return;
Line 4232  sub check_changes { Line 4266  sub check_changes {
 }  }
   
 1;  1;
   

Removed from v.1.105  
changed lines
  Added in v.1.126


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