Diff for /loncom/interface/loncoursegroups.pm between versions 1.116 and 1.131

version 1.116, 2012/12/17 17:27:20 version 1.131, 2020/09/08 23:54:40
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();
 use Apache::portfolio();  use Apache::portfolio();
 use Apache::Constants qw(:common :http);  use Apache::Constants qw(:common :http);
   use HTML::Entities;
 use LONCAPA::map();  use LONCAPA::map();
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA;  use LONCAPA;
Line 134  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';
Line 168  sub display_groups { Line 170  sub display_groups {
     my %curr_groups = ();      my %curr_groups = ();
     my %grp_info = ();      my %grp_info = ();
     my %actionlinks = (      my %actionlinks = (
       modify => '<a href="/adm/coursegroups?action=modify&refpage='.        modify   => '/adm/coursegroups?action=modify&refpage='.
                          $env{'form.refpage'}.'&state=pick_task&groupname=',                    $env{'form.refpage'}.'&state=pick_task&groupname=',
       view => '<a href="',        view     => '',
       delete => '<a href="/adm/coursegroups?action=delete&refpage='.        delete   => '/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 => '/adm/coursegroups?action=reenable&refpage='.
                          $env{'form.refpage'}.'&state=verify&groupname=',                    $env{'form.refpage'}.'&state=verify&groupname=',
     );      );
     my %lt = &Apache::lonlocal::texthash(       my %lt = &Apache::lonlocal::texthash( 
                           modify => 'Modify',                            modify => 'Modify',
Line 188  sub display_groups { Line 190  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 225  sub display_groups { Line 227  sub display_groups {
             if (!defined($navmap)) {              if (!defined($navmap)) {
                 $r->print('<div class="LC_error">'.                  $r->print('<div class="LC_error">'.
                           &mt('An error occurred retrieving information about resources in the course.').'<br />'.                            &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>').                            &mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','<a href="/adm/roles?selectrole=1&amp;newrole='.$env{'request.role'}.'&amp;orgurl=%2fadm%2fcoursegroups">','</a>').
                           '</div>');                            '</div>');
                 return;                  return;
             }              }
Line 248  sub display_groups { Line 250  sub display_groups {
         <th><a href="javascript:changeSort('creator')">$lt{'crea'}</a></th>          <th><a href="javascript:changeSort('creator')">$lt{'crea'}</a></th>
         <th><a href="javascript:changeSort('creation')">$lt{'crtd'}</a></th>          <th><a href="javascript:changeSort('creation')">$lt{'crtd'}</a></th>
         <th><a href="javascript:changeSort('modified')">$lt{'last'}</a></th>          <th><a href="javascript:changeSort('modified')">$lt{'last'}</a></th>
         <th>$lt{'func'}</b></td>          <th>$lt{'func'}</th>
         <th><a href="javascript:changeSort('quota')">$lt{'quot'}</a></th>          <th><a href="javascript:changeSort('quota')">$lt{'quot'}</a></th>
         <th><a href="javascript:changeSort('totalmembers')">$lt{'memb'}</a></th>          <th><a href="javascript:changeSort('totalmembers')">$lt{'memb'}</a></th>
         <th><a href="javascript:changeSort('totalfiles')">$lt{'file'}</a></th>          <th><a href="javascript:changeSort('totalfiles')">$lt{'file'}</a></th>
Line 327  END Line 329  END
                     if (!$functionality) {                      if (!$functionality) {
                         $functionality = &mt('None available');                          $functionality = &mt('None available');
                     }                      }
                     my $link = $actionlinks{$action};                      my $link;
                     if ($action eq 'modify' || $action eq 'delete' ||                       if ($action eq 'modify' || $action eq 'delete' || 
                         $action eq 'reenable') {                          $action eq 'reenable') {
                         $link .= $group;                          $link = '<a href="'.&HTML::Entities::encode($actionlinks{$action}.$group,'<>&"').
                                   '">'.$lt{$action}.'</a>';
                     } else {                      } else {
                         $link .=                           $link =
                             &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap);                              &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap,
                         $link .= (($link=~/\?/)?'&amp;':'?').'ref=grouplist';                                                                $view_permission);
                         if (exists($env{'form.refpage'})) {                          if ($link) {
                             $link .= '&amp;refpage='.$env{'form.refpage'};                              $link = '<a href="'.$link;
                               $link .= (($link=~/\?/)?'&amp;':'?').'ref=grouplist';
                               if (exists($env{'form.refpage'})) {
                                   $link .= '&amp;refpage='.$env{'form.refpage'};
                               }
                               $link .= '">'.$lt{$action}.'</a>';
                         }                          }
                     }                      }
                     $link .= '">'.$lt{$action}.'</a>';  
                     if ($action eq 'view') {                       if ($action eq 'view') { 
                         if ($manage_permission) {                           if ($manage_permission) { 
                             $link .= '&nbsp;&nbsp;'.$actionlinks{'modify'}.                              $link .= '&nbsp;&nbsp;<a href="'.
                                       $group.'">'.$lt{'modify'}.'</a>'.                                        &HTML::Entities::encode($actionlinks{'modify'}.$group,'<>&"').
                                      '&nbsp;&nbsp;'.$actionlinks{'delete'}.                                        '">'.$lt{'modify'}.'</a>&nbsp;&nbsp;<a href="'.
                                       $group.'">'.$lt{'delete'}.'</a>';                                        &HTML::Entities::encode($actionlinks{'delete'}.$group,'<>&"').
                                         '">'.$lt{'delete'}.'</a>';
                         }                          }
                     }                      }
                     $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense').                      $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense').
Line 393  END Line 401  END
     } else {      } else {
         my @coursegroups = split(/:/,$env{'request.course.groups'});          my @coursegroups = split(/:/,$env{'request.course.groups'});
         if (@coursegroups > 0) {          if (@coursegroups > 0) {
               my $numlinks = 0;
             $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) {
Line 400  END Line 409  END
                 if (!defined($navmap)) {                  if (!defined($navmap)) {
                     $r->print('<div class="LC_error">'.                      $r->print('<div class="LC_error">'.
                               &mt('An error occurred retrieving information about resources in the course.').'<br />'.                                &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>').                                &mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','<a href="/adm/roles?selectrole=1&amp;newrole='.$env{'request.role'}.'&amp;orgurl=%2fadm%2fcoursegroups">','</a>').
                               '</div>');                                '</div>');
                     return;                      return;
                 }                  }
Line 409  END Line 418  END
                                         $curr_groups{$group});                                          $curr_groups{$group});
                     my $description = &unescape(                      my $description = &unescape(
                                         $group_info{description});                                          $group_info{description});
                     my $link =                       my ($link,$hidden) = 
                         &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap).                          &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap,
                         '&amp;ref=grouplist';                                                            $view_permission);
                     $r->print('<span style="font-size: larger"><a href="'.$link.'">'.$group,'</a></span><br /><small>'.$description.'</small><br /><br />');                      if ($link) {
                           $link .= '&amp;ref=grouplist';
                           $r->print('<span style="font-size: larger"><a href="'.$link.'">'.
                                     $description.'</a></span><br /><br />');
                           $numlinks ++;
                       } elsif ($hidden) {
                           my $numtools = 0;
                           my $refarg = '&amp;ref=grouplist'; 
                           my $output =
                               &Apache::longroup::display_group_links($r,$env{'form.grade_target'},$group,'view',
                                                                      $refarg,\$numtools,$hidden,%group_info);
                           if ($numtools) {
                               $r->print('<span style="font-size: larger">'.$description.'</a></span>'.
                                         '<br />'.$output.'<br /><br />');
                               $numlinks ++;
                           }
                       }
                 }                  }
             }              }
               if (!$numlinks) {
                   $r->print(
                       '<p class="LC_info">'
                      .&mt('You do not currently have access to any '.$gpterm.'s'
                      .' in this '.lc($crstype).'.')
                      .'</p>'
                   );
               }
         } else {          } else {
             $r->print(              $r->print(
                 '<p class="LC_info">'                  '<p class="LC_info">'
Line 811  sub group_administration { Line 844  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 830  sub group_administration { Line 863  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 896  function changeSort(caller) { Line 929  function changeSort(caller) {
           faq=>9,bug=>'Instructor Interface',});            faq=>9,bug=>'Instructor Interface',});
         if ($action eq 'modify' || $action eq 'delete') {          if ($action eq 'modify' || $action eq 'delete') {
             &Apache::lonhtmlcommon::add_breadcrumb              &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>"/adm/coursegroups?refpage=cusr&action=$action",              ({href=>"/adm/coursegroups?refpage=cusr&amp;action=$action",
               text=>"Groups",                text=>"Groups",
               faq=>9,bug=>'Instructor Interface',});                faq=>9,bug=>'Instructor Interface',});
         }          }
Line 908  function changeSort(caller) { Line 941  function changeSort(caller) {
         if ($env{'form.refpage'} eq 'grouplist') {          if ($env{'form.refpage'} eq 'grouplist') {
             &Apache::lonhtmlcommon::add_breadcrumb              &Apache::lonhtmlcommon::add_breadcrumb
              ({href=>"/adm/$cdom/$cnum/$env{'form.groupname'}/smppg?ref=grouplist",               ({href=>"/adm/$cdom/$cnum/$env{'form.groupname'}/smppg?ref=grouplist",
                text=>"Group: $description",});                 text=>&mt('Group').": $description",
                  no_mt=>1});
         }          }
     }      }
   
Line 1492  sub header { Line 1526  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 1586  sub group_members { Line 1620  sub group_members {
                          future => 0,                           future => 0,
                        );                         );
     my $totalmembers = 0;      my $totalmembers = 0;
     foreach my $member (keys %memberhash) {      foreach my $member (keys(%memberhash)) {
         $totalmembers ++;          $totalmembers ++;
         my ($end,$start) = split(/:/,$memberhash{$member});          my ($end,$start) = split(/:/,$memberhash{$member});
         unless ($start == -1) {          unless ($start == -1) {
Line 1701  sub groupsettings_options { Line 1735  sub groupsettings_options {
     if ($remnum) {      if ($remnum) {
         $halfnum ++;          $halfnum ++;
     }      }
     my @allfunctions = sort(keys (%{$functions}));      my @allfunctions = sort(keys(%{$functions}));
   
     $r->print(&Apache::lonhtmlcommon::row_title($lt{'func'})      $r->print(&Apache::lonhtmlcommon::row_title($lt{'func'})
              .'<div>'               .'<div>'
Line 1756  sub groupsettings_options { Line 1790  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 2016  sub print_current_settings { Line 2050  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 2069  sub print_current_settings { Line 2103  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 2548  sub current_membership { Line 2582  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 2609  END Line 2644  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 2733  END Line 2768  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 2801  sub change_privs_form { Line 2839  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 3197  sub write_group_data { Line 3235  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 3205  sub write_group_data { Line 3243  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 3364  sub write_group_data { Line 3402  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 3498  sub process_membership { Line 3536  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 3534  sub process_membership { Line 3572  sub process_membership {
     if ($num_ok) {      if ($num_ok) {
         my $msgall ='';          my $msgall ='';
         foreach my $type (sort(keys(%added))) {          foreach my $type (sort(keys(%added))) {
             my $message = &mt('The following users were successfully [_1]',$type);               my $message;
               my $tmsg = "The following users were successfully $type"; 
             if (!($type eq 'deleted' || $type eq 'expired')) {                 if (!($type eq 'deleted' || $type eq 'expired')) {   
                 $message .= &mt(' with the following privileges');                  $tmsg .= ' with the following privileges';
             }              }
             $message .= ':<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 3750  sub modify_menu { Line 3789  sub modify_menu {
  items => [   items => [
   
           { linktext => "Modify default $gpterm settings",            { linktext => "Modify default $gpterm settings",
             url => '/adm/coursegroups?action=modify&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state=change_settings&branch=settings',              url => '/adm/coursegroups?action=modify&amp;refpage='.$env{'form.refpage'}.'&amp;groupname='.$groupname.'&amp;state=change_settings&amp;branch=settings',
             icon => 'grp_settings.png',              icon => 'grp_settings.png',
             alttext => "Modify default $gpterm settings",              alttext => "Modify default $gpterm settings",
             permission => '1',              permission => '1',
             help => 'Course_Modify_Group',                          help => 'Course_Modify_Group',            
             },              },
           { linktext => 'Modify access, tools and privileges for members',            { linktext => 'Modify access, tools and privileges for members',
             url => '/adm/coursegroups?action=modify&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state=change_members&branch=members',              url => '/adm/coursegroups?action=modify&amp;refpage='.$env{'form.refpage'}.'&amp;groupname='.$groupname.'&amp;state=change_members&amp;branch=members',
             icon => 'grp_tools.png',              icon => 'grp_tools.png',
             alttext => 'Modify access, tools and privileges for members',              alttext => 'Modify access, tools and privileges for members',
             permission => '1',              permission => '1',
             help => 'Course_Modify_Group_Membership',              help => 'Course_Modify_Group_Membership',
             },              },
           { linktext => "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',              url => '/adm/coursegroups?action=modify&amp;refpage='.$env{'form.refpage'}.'&amp;groupname='.$groupname.'&amp;state=add_members&amp;branch=adds',
             icon => 'grp_add.png',              icon => 'grp_add.png',
             alttext =>  "Add member(s) to the $gpterm",              alttext =>  "Add member(s) to the $gpterm",
             permission => '1',              permission => '1',
Line 4120  sub create_homepage { Line 4159  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 4183  sub validate_groupname { Line 4221  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;

Removed from v.1.116  
changed lines
  Added in v.1.131


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