Diff for /loncom/interface/loncoursegroups.pm between versions 1.123 and 1.127.2.1

version 1.123, 2014/02/11 17:09:30 version 1.127.2.1, 2017/03/19 17:59:15
Line 37  use Apache::lonnavmaps(); Line 37  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 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';
Line 169  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 226  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 249  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 328  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';                          if ($link) {
                         if (exists($env{'form.refpage'})) {                              $link = '<a href="'.$link;
                             $link .= '&amp;refpage='.$env{'form.refpage'};                              $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 401  END Line 407  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 831  sub group_administration { Line 837  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 897  function changeSort(caller) { Line 903  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 1587  sub group_members { Line 1593  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 1702  sub groupsettings_options { Line 1708  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 3503  sub process_membership { Line 3509  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 3543  sub process_membership { Line 3549  sub process_membership {
             my $tmsg = "The following users were successfully $type";               my $tmsg = "The following users were successfully $type"; 
             if (!($type eq 'deleted' || $type eq 'expired')) {                 if (!($type eq 'deleted' || $type eq 'expired')) {   
                 $tmsg .= ' with the following privileges';                  $tmsg .= ' with the following privileges';
             } else {  
                 $tmsg .= ' with the following privileges';  
             }              }
             $message .= &mt($tmsg.':').'<br/>';              $message .= &mt($tmsg.':').'<br/>';
             foreach my $user (@{$added{$type}}) {              foreach my $user (@{$added{$type}}) {
Line 3758  sub modify_menu { Line 3762  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 4190  sub validate_groupname { Line 4194  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 $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 $gpterm which previously existed").              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("$ucgpterm name:").' '.$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.123  
changed lines
  Added in v.1.127.2.1


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