--- loncom/interface/loncoursegroups.pm 2014/06/18 16:34:39 1.126
+++ loncom/interface/loncoursegroups.pm 2023/09/04 19:14:29 1.127.2.3.2.1
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: loncoursegroups.pm,v 1.126 2014/06/18 16:34:39 raeburn Exp $
+# $Id: loncoursegroups.pm,v 1.127.2.3.2.1 2023/09/04 19:14:29 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -36,7 +36,9 @@ use Apache::lonlocal;
use Apache::lonnavmaps();
use Apache::longroup();
use Apache::portfolio();
+use Apache::lonuserutils();
use Apache::Constants qw(:common :http);
+use HTML::Entities;
use LONCAPA::map();
use lib '/home/httpd/lib/perl/';
use LONCAPA;
@@ -135,7 +137,7 @@ function changeSort(caller) {
}
function openGroupRoster(group,status) {
var url = '/adm/grouproster?';
- url += 'group='+group+'&status='+status+'&ref=popup';
+ url += 'group='+group+'&status='+status+'&ref=popup';
var title = 'Group_Membership';
var options = 'scrollbars=1,resizable=1,menubar=0';
options += ',width=700,height=600';
@@ -169,13 +171,13 @@ sub display_groups {
my %curr_groups = ();
my %grp_info = ();
my %actionlinks = (
- modify => ' ' '/adm/coursegroups?action=modify&refpage='.
+ $env{'form.refpage'}.'&state=pick_task&groupname=',
+ view => '',
+ delete => '/adm/coursegroups?action=delete&refpage='.
+ $env{'form.refpage'}.'&state=verify&groupname=',
+ reenable => '/adm/coursegroups?action=reenable&refpage='.
+ $env{'form.refpage'}.'&state=verify&groupname=',
);
my %lt = &Apache::lonlocal::texthash(
modify => 'Modify',
@@ -226,7 +228,7 @@ sub display_groups {
if (!defined($navmap)) {
$r->print(''.
&mt('An error occurred retrieving information about resources in the course.').'
'.
- &mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','
','').
+ &mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','
','').
'
');
return;
}
@@ -249,7 +251,7 @@ sub display_groups {
$lt{'crea'} |
$lt{'crtd'} |
$lt{'last'} |
- $lt{'func'}
+ | $lt{'func'} |
$lt{'quot'} |
$lt{'memb'} |
$lt{'file'} |
@@ -328,25 +330,31 @@ END
if (!$functionality) {
$functionality = &mt('None available');
}
- my $link = $actionlinks{$action};
+ my $link;
if ($action eq 'modify' || $action eq 'delete' ||
$action eq 'reenable') {
- $link .= $group;
+ $link = ''.$lt{$action}.'';
} else {
- $link .=
- &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap);
- $link .= (($link=~/\?/)?'&':'?').'ref=grouplist';
- if (exists($env{'form.refpage'})) {
- $link .= '&refpage='.$env{'form.refpage'};
+ $link =
+ &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap,
+ $view_permission);
+ if ($link) {
+ $link = ''.$lt{$action}.'';
}
}
- $link .= '">'.$lt{$action}.'';
if ($action eq 'view') {
if ($manage_permission) {
- $link .= ' '.$actionlinks{'modify'}.
- $group.'">'.$lt{'modify'}.''.
- ' '.$actionlinks{'delete'}.
- $group.'">'.$lt{'delete'}.'';
+ $link .= ' '.$lt{'modify'}.' '.$lt{'delete'}.'';
}
}
$r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense').
@@ -394,6 +402,7 @@ END
} else {
my @coursegroups = split(/:/,$env{'request.course.groups'});
if (@coursegroups > 0) {
+ my $numlinks = 0;
$r->print('
');
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
if (%curr_groups) {
@@ -401,7 +410,7 @@ END
if (!defined($navmap)) {
$r->print(''.
&mt('An error occurred retrieving information about resources in the course.').'
'.
- &mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','
','').
+ &mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','
','').
'
');
return;
}
@@ -410,12 +419,36 @@ END
$curr_groups{$group});
my $description = &unescape(
$group_info{description});
- my $link =
- &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap).
- '&ref=grouplist';
- $r->print(''.$group,'
'.$description.'
');
+ my ($link,$hidden) =
+ &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap,
+ $view_permission);
+ if ($link) {
+ $link .= '&ref=grouplist';
+ $r->print(''.
+ $description.'
');
+ $numlinks ++;
+ } elsif ($hidden) {
+ my $numtools = 0;
+ my $refarg = '&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(''.$description.''.
+ '
'.$output.'
');
+ $numlinks ++;
+ }
+ }
}
}
+ if (!$numlinks) {
+ $r->print(
+ ''
+ .&mt('You do not currently have access to any '.$gpterm.'s'
+ .' in this '.lc($crstype).'.')
+ .'
'
+ );
+ }
} else {
$r->print(
''
@@ -897,7 +930,7 @@ function changeSort(caller) {
faq=>9,bug=>'Instructor Interface',});
if ($action eq 'modify' || $action eq 'delete') {
&Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"/adm/coursegroups?refpage=cusr&action=$action",
+ ({href=>"/adm/coursegroups?refpage=cusr&action=$action",
text=>"Groups",
faq=>9,bug=>'Instructor Interface',});
}
@@ -909,7 +942,8 @@ function changeSort(caller) {
if ($env{'form.refpage'} eq 'grouplist') {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"/adm/$cdom/$cnum/$env{'form.groupname'}/smppg?ref=grouplist",
- text=>"Group: $description",});
+ text=>&mt('Group').": $description",
+ no_mt=>1});
}
}
@@ -1587,7 +1621,7 @@ sub group_members {
future => 0,
);
my $totalmembers = 0;
- foreach my $member (keys %memberhash) {
+ foreach my $member (keys(%memberhash)) {
$totalmembers ++;
my ($end,$start) = split(/:/,$memberhash{$member});
unless ($start == -1) {
@@ -1702,7 +1736,7 @@ sub groupsettings_options {
if ($remnum) {
$halfnum ++;
}
- my @allfunctions = sort(keys (%{$functions}));
+ my @allfunctions = sort(keys(%{$functions}));
$r->print(&Apache::lonhtmlcommon::row_title($lt{'func'})
.'
'
@@ -1785,7 +1819,24 @@ sub get_quota_constraints {
my ($crsquota,$freespace,$maxposs);
$crsquota = $env{'course.'.$env{'request.course.id'}.'.internal.coursequota'};
if ($crsquota eq '') {
- $crsquota = 20;
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $crstype = &Apache::loncommon::course_type();
+ my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
+ my %coursehash = (
+ 'internal.coursecode' => $env{'course.'.$env{'request.course.id'}.'.internal.coursecode'},
+ 'internal.textbook' => $env{'course.'.$env{'request.course.id'}.'.internal.textbook'},
+ );
+ my %staticdefaults = (
+ coursequota => 20,
+ );
+ my $quotatype = &Apache::lonuserutils::get_extended_type($cdom,$cnum,$crstype,\%coursehash);
+ if ($crsquota eq '') {
+ $crsquota = $domdefs{$quotatype.'coursequota'};
+ if ($crsquota eq '') {
+ $crsquota = $staticdefaults{'coursequota'};
+ }
+ }
}
$freespace = $crsquota - &Apache::longroup::sum_quotas();
if ($action eq 'create') {
@@ -3756,21 +3807,21 @@ sub modify_menu {
items => [
{ 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&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',
},
{ 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&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',
},
{ 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&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state=add_members&branch=adds',
icon => 'grp_add.png',
alttext => "Add member(s) to the $gpterm",
permission => '1',