[LON-CAPA-cvs] cvs: loncom /interface loncommon.pm loncoursegroups.pm longroup.pm portfolio.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Wed, 28 Jun 2006 23:38:11 -0000
This is a MIME encoded message
--raeburn1151537891
Content-Type: text/plain
raeburn Wed Jun 28 19:38:11 2006 EDT
Modified files:
/loncom/interface portfolio.pm loncoursegroups.pm longroup.pm
loncommon.pm
Log:
File sizes for uploads to course group portfolios may not exceed quota set for group's file repository. When creating a course, a quota can be specified. The sum of quotas assigned to all groups in a course can not exceed the total quota defined for the course (when the course was created). - client side and server side enforcement still needed here. Portfolio permissions modified to allow any user with group creation rights in a course access to all course group portfolio functions. All uses of words: group, Group, course and Course in "Course Groups Manager" now replaced with context-sensitive terminology provided by loncommon::course_type() and loncommon::group_term() which will supply appropriate text once a decision is made on Group vs Group. Currently "ANGEL-like Discussion Groups" are called Groups, regular courses are called Courses; and within regular courses sectionesque units are called groups, and within Groups they are called teams.
--raeburn1151537891
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20060628193811.txt"
Index: loncom/interface/portfolio.pm
diff -u loncom/interface/portfolio.pm:1.125 loncom/interface/portfolio.pm:1.126
--- loncom/interface/portfolio.pm:1.125 Wed Jun 28 15:56:59 2006
+++ loncom/interface/portfolio.pm Wed Jun 28 19:38:09 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network
# portfolio browser
#
-# $Id: portfolio.pm,v 1.125 2006/06/28 19:56:59 albertel Exp $
+# $Id: portfolio.pm,v 1.126 2006/06/28 23:38:09 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1433,6 +1433,14 @@
my $fname=$env{'form.uploaddoc.filename'};
my $filesize = (length($env{'form.uploaddoc'})) / 1000; #express in k (1024?)
my $disk_quota = 20000; # expressed in k
+ if (defined($group)) {
+ my $grp_quota = &get_group_quota($group); # quota expressed in k
+ if ($grp_quota ne '') {
+ $disk_quota = $grp_quota;
+ } else {
+ $disk_quota = 0;
+ }
+ }
$fname=&Apache::lonnet::clean_filename($fname);
my $portfolio_root=&get_portfolio_root($group);
@@ -1484,6 +1492,7 @@
}
}
}
+
sub lock_info {
my ($r,$url,$group) = @_;
my ($uname,$udom) = &get_name_dom($group);
@@ -1566,6 +1575,23 @@
return (&Apache::loncommon::propath($udom,$uname).$path);
}
+sub get_group_quota {
+ my ($group) = @_;
+ my $group_quota;
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,$group);
+ if (%curr_groups) {
+ my %group_info = &Apache::longroup::get_group_settings(
+ $curr_groups{$group});
+ $group_quota = $group_info{'quota'}; #expressed in Mb
+ if ($group_quota) {
+ $group_quota = 1000 * $group_quota; #expressed in k
+ }
+ }
+ return $group_quota;
+}
+
sub get_dir_list {
my ($portfolio_root,$group) = @_;
my ($uname,$udom) = &get_name_dom($group);
@@ -1694,17 +1720,24 @@
$earlyout = 1;
}
if ($earlyout) { return OK; }
- if (&Apache::lonnet::allowed('agf',$env{'request.course.id'}.'/'.$group)) {
- $can_setacl = 1;
- }
- if (&Apache::lonnet::allowed('ugf',$env{'request.course.id'}.'/'.$group)) {
- $can_upload = 1;
- }
- if (&Apache::lonnet::allowed('mgf',$env{'request.course.id'}.'/'.$group)) {
+ if (&Apache::lonnet::allowed('mdg',$env{'request.course.id'})) {
$can_modify = 1;
- }
- if (&Apache::lonnet::allowed('dgf',$env{'request.course.id'}.'/'.$group)) {
$can_delete = 1;
+ $can_upload = 1;
+ $can_setacl = 1;
+ } else {
+ if (&Apache::lonnet::allowed('agf',$env{'request.course.id'}.'/'.$group)) {
+ $can_setacl = 1;
+ }
+ if (&Apache::lonnet::allowed('ugf',$env{'request.course.id'}.'/'.$group)) {
+ $can_upload = 1;
+ }
+ if (&Apache::lonnet::allowed('mgf',$env{'request.course.id'}.'/'.$group)) {
+ $can_modify = 1;
+ }
+ if (&Apache::lonnet::allowed('dgf',$env{'request.course.id'}.'/'.$group)) {
+ $can_delete = 1;
+ }
}
} else {
($uname,$udom) = &get_name_dom();
Index: loncom/interface/loncoursegroups.pm
diff -u loncom/interface/loncoursegroups.pm:1.28 loncom/interface/loncoursegroups.pm:1.29
--- loncom/interface/loncoursegroups.pm:1.28 Wed Jun 28 12:01:01 2006
+++ loncom/interface/loncoursegroups.pm Wed Jun 28 19:38:09 2006
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: loncoursegroups.pm,v 1.28 2006/06/28 16:01:01 albertel Exp $
+# $Id: loncoursegroups.pm,v 1.29 2006/06/28 23:38:09 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -34,6 +34,7 @@
use Apache::lonlocal;
use Apache::lonnavmaps;
use Apache::longroup;
+use Apache::portfolio;
use Apache::Constants qw(:common :http);
use lib '/home/httpd/lib/perl/';
use LONCAPA;
@@ -69,13 +70,18 @@
&Apache::lonnet::allowed('mdg',$env{'request.course.id'});
&Apache::lonhtmlcommon::clear_breadcrumbs();
+ my $gpterm = &Apache::loncommon::group_term();
+ my $ucgpterm = $gpterm;
+ $ucgpterm =~ s/^(\w)/uc($1)/e;
+ my $crstype = &Apache::loncommon::course_type();
+
my %functions = (
email => 'E-mail',
discussion => 'Discussion boards',
chat => 'Chat',
files => 'File repository',
roster => 'Membership roster',
- homepage => 'Group home page',
+ homepage => $ucgpterm.' home page',
);
my %idx = ();
@@ -98,43 +104,47 @@
if ($view_permission || $manage_permission) {
&group_administration($r,$action,$state,$cdom,$cnum,$function,
$tabcol,\%functions,\%idx,$view_permission,
- $manage_permission,$rowColor1,$rowColor2);
+ $manage_permission,$rowColor1,$rowColor2,
+ $gpterm,$ucgpterm,$crstype);
} else {
- $r->print(&mt('You do not have group administration '.
- 'privileges in this course'));
+ $r->print(&mt('You do not have [_1] administration '.
+ 'privileges in this [_2]',$gpterm,lc($crstype)));
}
} else {
&print_main_menu($r,$cdom,$cnum,$function,$tabcol,\%functions,\%idx,
$view_permission,$manage_permission,$action,$state,
- $rowColor1,$rowColor2);
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype);
}
return OK;
}
sub print_main_menu {
my ($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,$view_permission,
- $manage_permission,$action,$state,$rowColor1,$rowColor2) = @_;
+ $manage_permission,$action,$state,$rowColor1,$rowColor2,$gpterm,
+ $ucgpterm,$crstype) = @_;
+ my $pagename = "$crstype $ucgpterm".'s';
my $jscript = qq|
function changeSort(caller) {
document.$state.sortby.value = caller;
document.$state.submit();
}\n|;
- $r->print(&header('Course Groups',$jscript,$action,$state,
+ $r->print(&header($pagename,$jscript,$action,$state,
undef,$function));
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"/adm/coursegroups",
- text=>"Course Groups",});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Groups'));
+ text=>"$pagename"});
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs($pagename));
&display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,
$view_permission,$manage_permission,$action,$state,
- $rowColor1,$rowColor2);
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype);
$r->print(&footer());
return;
}
sub display_groups {
my ($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,$view_permission,
- $manage_permission,$action,$state,$rowColor1,$rowColor2) = @_;
+ $manage_permission,$action,$state,$rowColor1,$rowColor2,$gpterm,
+ $ucgpterm,$crstype) = @_;
my %curr_groups = ();
my %grp_info = ();
my %actionlinks = (
@@ -149,7 +159,7 @@
view => 'View',
delete => 'Delete',
act => 'Action',
- gname => 'Group Name',
+ gname => "$ucgpterm Name",
desc => 'Description',
crea => 'Creator',
crtd => 'Created',
@@ -159,13 +169,13 @@
memb => 'Members',
file => 'Files',
dibd => 'Discussion Boards',
- dius => 'Disk Use',
- nogr => 'No groups exist.',
- crng => 'Create a new group',
+ dius => 'Disk Use (%)',
+ nogr => 'No '.$gpterm.'s exist.',
+ crng => 'Create a new '.$gpterm,
alth => 'Although your current role has privileges'.
- ' to view any existing groups in this course,'.
- ' you do not have privileges to create new'.
- ' groups.',
+ ' to view any existing '.$gpterm.'s in this'.
+ lc($crstype).', you do not have privileges'.
+ 'to create new '.$gpterm.'s.',
);
if ($view_permission) {
if (!defined($action)) {
@@ -173,6 +183,9 @@
}
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
if (%curr_groups) {
+ if ($manage_permission) {
+ $r->print('<br /><a href="/adm/coursegroups?action=create&refpage='.$env{'form.refpage'}.'">'.$lt{'crng'}.'</a>');
+ }
$r->print('<br /><br />');
$r->print(&Apache::lonhtmlcommon::start_pick_box());
$r->print(<<"END");
@@ -203,12 +216,24 @@
$curr_groups{$group});
my $members_result = &group_members($cdom,$cnum,$group,
\%grp_info);
- my $files_result = &group_files($group,\%grp_info);
+ my $port_path = '/userfiles/groups/'.$group.'/portfolio';
+ my $port_dir = &Apache::loncommon::propath($cdom,$cnum).$port_path;
+ my $totaldirs = 0;
+ my $totalfiles = 0;
+ &group_files($group,$port_dir,\$totalfiles,\$totaldirs);
+ $grp_info{$group}{'totalfiles'} = $totalfiles;
+ $grp_info{$group}{'totaldirs'} = $totaldirs;
+ my $diskuse = &Apache::lonnet::diskusage($cdom,$cnum,$port_dir);
+ if ($grp_info{$group}{'quota'} > 0) {
+ my $pct_use = 0.1 * $diskuse/$grp_info{$group}{'quota'};
+ $grp_info{$group}{'diskuse'} = sprintf("%.0f",$pct_use);
+ } else {
+ $grp_info{$group}{'diskuse'} = 'N/A';
+ }
if ($env{'form.sortby'} eq 'groupname') {
push(@{$Sortby{$group}},$group);
} elsif ($env{'form.sortby'} eq 'description') {
- push(@{$Sortby{$grp_info{$group}{'description'}}},
- $group);
+ push(@{$Sortby{$grp_info{$group}{'description'}}},$group);
} elsif ($env{'form.sortby'} eq 'creator') {
push(@{$Sortby{$grp_info{$group}{'creator'}}},$group);
} elsif ($env{'form.sortby'} eq 'creation') {
@@ -247,6 +272,7 @@
my $quota = $grp_info{$group}{'quota'};
my $totalmembers = $grp_info{$group}{'totalmembers'};
my $totalfiles = $grp_info{$group}{'totalfiles'};
+ my $totaldirs = $grp_info{$group}{'totaldirs'};
my $boards = $grp_info{$group}{'boards'};
my $diskuse = $grp_info{$group}{'diskuse'};
my $functionality;
@@ -272,7 +298,7 @@
$group.'">'.$lt{'modify'}.'</a>';
}
}
- $r->print('<tr bgcolor="'.$rowColor.'"><td><small>'.$link.'</small></td><td><small>'.$group.'</small></td><td><small>'.$description.'</small></td><td><small>'.$creator.'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($creation).'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($modified).'</small></td><td><small>'.$functionality.'</small></td><td><small>'.$quota.'</small></td><td><small>'.$totalmembers.'</small></td><td><small>'.$totalfiles.'</small></td><td><small>'.$boards.'</small></td><td><small>'.$diskuse.'</small></td></tr>');
+ $r->print('<tr bgcolor="'.$rowColor.'"><td><small>'.$link.'</small></td><td><small>'.$group.'</small></td><td><small>'.$description.'</small></td><td><small>'.$creator.'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($creation).'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($modified).'</small></td><td><small>'.$functionality.'</small></td><td><small>'.$quota.'</small></td><td><small>'.$totalmembers.'</small></td><td><small><nobr>'.&mt('Files: ').$totalfiles.'</nobr><br /><nobr>'.&mt('Folders: ').$totaldirs.'</nobr></small></td><td><small>'.$boards.'</small></td><td><small>'.$diskuse.'</small></td></tr>');
$rowNum ++;
}
}
@@ -292,7 +318,7 @@
if ($manage_permission) {
$r->print('<br /><br /><a href="/adm/coursegroups?action=create&refpage='.$env{'form.refpage'}.'">'.$lt{'crng'}.'</a>');
} else {
- $r->print('<br /><br />'.$lt{'crng'});
+ $r->print('<br /><br />'.$lt{'alth'});
}
}
@@ -313,7 +339,8 @@
}
} else {
$r->print(&mt('You are not currently a member of any '.
- 'active groups in this course'));
+ 'active [_1]s in this [_2]',$gpterm,
+ lc($crstype)));
}
}
return;
@@ -321,7 +348,8 @@
sub group_administration {
my ($r,$action,$state,$cdom,$cnum,$function,$tabcol,$functions,$idx,
- $view_permission,$manage_permission,$rowColor1,$rowColor2) = @_;
+ $view_permission,$manage_permission,$rowColor1,$rowColor2,$gpterm,
+ $ucgpterm,$crstype) = @_;
my %sectioncount = ();
my @tools = ();
my @types = ();
@@ -335,7 +363,8 @@
my %memchg;
my @member_changes = ('deletion','expire','activate','reenable',
'changefunc','changepriv');
- my ($groupname,$description,$startdate,$enddate,$granularity,$specificity);
+ my ($groupname,$description,$startdate,$enddate,$granularity,$specificity,
+ $quota);
if (defined($env{'form.groupname'})) {
$groupname = $env{'form.groupname'};
@@ -359,7 +388,9 @@
if (defined($env{'form.specificity'})) {
$specificity=$env{'form.specificity'};
}
-
+ if (defined($env{'form.quota'})) {
+ $quota=$env{'form.quota'};
+ }
}
if (($action eq 'create') || (($action eq 'modify')
&& (($state eq 'pick_privs') || ($state eq 'addresult')))) {
@@ -398,6 +429,7 @@
$description = $stored{'description'};
$granularity = $stored{'granularity'};
$specificity = $stored{'specificity'};
+ $quota = $stored{'quota'};
}
}
}
@@ -405,7 +437,7 @@
my %toolprivs =
(
email => {
- sgm => 'Send group mail',
+ sgm => 'Send '.$gpterm.' mail',
sgb => 'Broadcast mail',
},
discussion => {
@@ -462,6 +494,7 @@
enddate_second => 'text',
groupname => 'text',
description => 'text',
+ quota => 'text',
tool => 'checkbox',
granularity => 'radio',
no_end_date => 'checkbox',
@@ -776,7 +809,8 @@
}
my $loaditems = &onload_action($action,$state);
- $r->print(&header('Course Groups Manager',
+ my $crumbtitle = "$crstype $ucgpterm".'s';
+ $r->print(&header("$crumbtitle Manager",
$jscript,$action,$state,$page,$function,$loaditems));
if ($env{'form.refpage'} eq 'enrl') {
@@ -787,21 +821,21 @@
} else {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"/adm/coursegroups",
- text=>"Course Groups",
+ text=>"$crumbtitle",
faq=>9,bug=>'Instructor Interface',});
}
my %trail = ();
%{$trail{'create'}} = &Apache::lonlocal::texthash (
- pick_name => 'Group Settings',
+ pick_name => $ucgpterm.' Settings',
pick_members => 'Select Members',
pick_privs => 'Choose Privileges',
result => 'Creation Complete',
);
%{$trail{'modify'}} = &Apache::lonlocal::texthash(
- pick_group => 'Groups',
+ pick_group => $ucgpterm.'s',
pick_task => 'Choose Task',
- change_settings => 'Group Settings',
+ change_settings => "$ucgpterm Settings",
change_members => 'Modify/Delete Members',
change_privs => 'Change Privileges',
change_mapping => 'Membership Mapping',
@@ -815,7 +849,7 @@
my %navbuttons = &Apache::lonlocal::texthash(
gtns => 'Go to next step',
gtps => 'Go to previous step',
- crgr => 'Create group',
+ crgr => 'Create '.$gpterm,
mose => 'Modify settings',
gtpp => 'Go to previous page',
adme => 'Add members',
@@ -827,14 +861,15 @@
&Apache::lonhtmlcommon::add_breadcrumb(
{text=>"$trail{$action}{$state}"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- ('Course Groups Manager'));
+ ("$crumbtitle Manager"));
&display_control($r,$cdom,$cnum,$tabcol,$action,$state,$page,
\%sectioncount,$groupname,$description,$functions,
\@tools,\%toolprivs,\%fixedprivs,$startdate,$enddate,
\%users,\%userdata,$idx,\%memchg,\%usertools,
$function,$view_permission,$manage_permission,
- \%stored,$granularity,$specificity,\@types,\@roles,
- \@sections,\%states,\%navbuttons,$rowColor1,$rowColor2);
+ \%stored,$granularity,$quota,$specificity,\@types,\@roles,
+ \@sections,\%states,\%navbuttons,$rowColor1,$rowColor2,
+ $gpterm,$ucgpterm,$crstype);
last;
} else {
if (($state eq 'result') && ($i > 0)) {
@@ -850,12 +885,13 @@
}
} elsif (($action eq 'view') && ($view_permission)) {
&Apache::lonhtmlcommon::add_breadcrumb(
- {text=>"View groups"});
+ {text=>"View $gpterm".'s'});
+ my $crumbtitle = "$crstype $ucgpterm".'s Manager';
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- ('Course Groups Manager'));
+ (&mt($crumbtitle)));
&display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,
$view_permission,$manage_permission,$action,$state,
- $rowColor1,$rowColor2);
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype);
}
$r->print(&footer());
@@ -884,6 +920,7 @@
$stored{'specificity'} = $groupinfo{'specificity'};
$stored{'creation'} = $groupinfo{'creation'};
$stored{'creator'} = $groupinfo{'creator'};
+ $stored{'quota'} = $groupinfo{'quota'};
foreach my $tool (sort(keys(%{$groupinfo{'functions'}}))) {
if ($groupinfo{functions}{$tool} eq 'on') {
@@ -923,78 +960,86 @@
my ($r,$cdom,$cnum,$tabcol,$action,$state,$page,$sectioncount,$groupname,
$description,$functions,$tools,$toolprivs,$fixedprivs,$startdate,
$enddate,$users,$userdata,$idx,$memchg,$usertools,$function,
- $view_permission,$manage_permission,$stored,$granularity,$specificity,
- $types,$roles,$sections,$states,$navbuttons,$rowColor1,$rowColor2)=@_;
+ $view_permission,$manage_permission,$stored,$granularity,$quota,
+ $specificity,$types,$roles,$sections,$states,$navbuttons,$rowColor1,
+ $rowColor2,$gpterm,$ucgpterm,$crstype) = @_;
if ($action eq 'create') {
if ($state eq 'pick_name') {
&general_settings_form($r,$cdom,$cnum,$action,$tabcol,$state,$page,
$functions,$tools,$toolprivs,$fixedprivs,
$sectioncount,$stored,$states,$navbuttons,
- $rowColor1,$rowColor2);
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,
+ $crstype);
} elsif ($state eq 'pick_members') {
&choose_members_form($r,$cdom,$cnum,$tabcol,$action,$state,$page,
- $groupname,$description,$granularity,
+ $groupname,$description,$granularity,$quota,
$startdate,$enddate,$tools,$fixedprivs,
$toolprivs,$functions,$users,$userdata,$idx,
$stored,$states,$navbuttons,$rowColor1,
- $rowColor2);
+ $rowColor2,$gpterm,$ucgpterm,$crstype);
} elsif ($state eq 'pick_privs') {
&choose_privs_form($r,$cdom,$cnum,$tabcol,$action,$state,$page,
$startdate,$enddate,$tools,$functions,
$toolprivs,$fixedprivs,$userdata,$usertools,
$idx,$states,$stored,$sectioncount,$navbuttons,
- $rowColor1,$rowColor2);
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,
+ $crstype);
} elsif ($state eq 'result') {
&process_request($r,$cdom,$cnum,$tabcol,$action,$state,$page,
$groupname,$description,$specificity,$userdata,
$startdate,$enddate,$tools,$functions,
$toolprivs,$usertools,$idx,$types,$roles,
$sections,$states,$navbuttons,$memchg,
- $sectioncount,$stored,$rowColor1,$rowColor2);
+ $sectioncount,$stored,$rowColor1,$rowColor2,
+ $gpterm,$ucgpterm,$crstype);
}
} elsif ($action eq 'modify') {
my $groupname = $env{'form.groupname'};
if ($state eq 'pick_group') {
&display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,
$view_permission,$manage_permission,$action,$state,
- $rowColor1,$rowColor2);
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype);
} elsif ($state eq 'pick_task') {
- &modify_menu($r,$groupname,$page);
+ &modify_menu($r,$groupname,$page,$gpterm);
} elsif ($state eq 'change_settings') {
&general_settings_form($r,$cdom,$cnum,$action,$tabcol,$state,$page,
$functions,$tools,$toolprivs,$fixedprivs,
$sectioncount,$stored,$states,$navbuttons,
- $rowColor1,$rowColor2);
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,
+ $crstype);
} elsif ($state eq 'change_members') {
&change_members_form($r,$cdom,$cnum,$tabcol,$action,$state,$page,
$groupname,$description,$startdate,$enddate,
$tools,$fixedprivs,$functions,$users,
- $userdata,$granularity,$specificity,$idx,
- $states,$navbuttons,$rowColor1,$rowColor2);
+ $userdata,$granularity,$quota,$specificity,
+ $idx,$states,$navbuttons,$rowColor1,$rowColor2,
+ $gpterm,$ucgpterm);
} elsif ($state eq 'add_members') {
&add_members_form($r,$tabcol,$action,$state,$page,$startdate,
$enddate,$groupname,$description,$granularity,
- $sectioncount,$tools,$functions,$stored,$states,
- $navbuttons,$rowColor1,$rowColor2);
+ $quota,$sectioncount,$tools,$functions,$stored,
+ $states,$navbuttons,$rowColor1,$rowColor2,$gpterm,
+ $ucgpterm);
} elsif ($state eq 'pick_members') {
&choose_members_form($r,$cdom,$cnum,$tabcol,$action,$state,$page,
- $groupname,$description,$granularity,
+ $groupname,$description,$granularity,$quota,
$startdate,$enddate,$tools,$fixedprivs,
$toolprivs,$functions,$users,$userdata,$idx,
$stored,$states,$navbuttons,$rowColor1,
- $rowColor2);
+ $rowColor2,$gpterm,$ucgpterm,$crstype);
} elsif ($state eq 'pick_privs') {
&choose_privs_form($r,$cdom,$cnum,$tabcol,$action,$state,$page,
$startdate,$enddate,$tools,$functions,
$toolprivs,$fixedprivs,$userdata,$usertools,
$idx,$states,$stored,$sectioncount,$navbuttons,
- $rowColor1,$rowColor2);
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype);
} elsif ($state eq 'change_privs') {
&change_privs_form($r,$cdom,$cnum,$tabcol,$action,$state,$page,
$startdate,$enddate,$tools,$functions,
$toolprivs,$fixedprivs,$userdata,$usertools,
$memchg,$idx,$states,$stored,$sectioncount,
- $navbuttons,$rowColor1,$rowColor2);
+ $navbuttons,$rowColor1,$rowColor2,$gpterm,
+ $ucgpterm);
} elsif ($state eq 'chgresult' || $state eq 'memresult' ||
$state eq 'addresult') {
&process_request($r,$cdom,$cnum,$tabcol,$action,$state,$page,
@@ -1002,7 +1047,8 @@
$startdate,$enddate,$tools,$functions,
$toolprivs,$usertools,$idx,$types,$roles,
$sections,$states,$navbuttons,$memchg,
- $sectioncount,$stored,$rowColor1,$rowColor2);
+ $sectioncount,$stored,$rowColor1,$rowColor2,
+ $gpterm,$ucgpterm,$crstype);
}
}
}
@@ -1076,6 +1122,21 @@
}
sub group_files {
+ my ($group,$currdir,$numfiles,$numdirs) = @_;
+ my $dirptr=16384;
+ my @dir_list=&Apache::portfolio::get_dir_list($currdir,$group);
+ foreach my $line (@dir_list) {
+ my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);
+ if (($filename !~ /^\.\.?$/) && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/) && ($filename ne 'no_such_dir')) {
+ if ($dirptr&$testdir) {
+ $currdir .= '/'.$filename;
+ $$numdirs ++;
+ &group_files($numfiles,$numdirs)
+ } else {
+ $$numfiles ++;
+ }
+ }
+ }
return;
}
@@ -1117,23 +1178,26 @@
sub general_settings_form {
my ($r,$cdom,$cnum,$action,$tabcol,$formname,$page,$functions,$tools,
$toolprivs,$fixedprivs,$sectioncount,$stored,$states,$navbuttons,
- $rowColor1,$rowColor2) = @_;
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype) = @_;
my ($nexttext,$prevtext);
$r->print(' <br />
<table width="100%" cellpadding="0" cellspacing="0" border="0">
');
- &groupsettings_options($r,$tabcol,$functions,$action,$formname,$stored,1);
+ &groupsettings_options($r,$tabcol,$functions,$action,$formname,$stored,1,
+ $gpterm,$ucgpterm,$crstype);
$r->print('
<tr>
<td colspan="4"> </td>
</tr>');
- &access_date_settings($r,$tabcol,$action,$formname,$stored,2);
+ &access_date_settings($r,$tabcol,$action,$formname,$stored,2,$gpterm,
+ $ucgpterm);
$r->print('
<tr>
<td colspan="4"> </td>
</tr>');
if ($action eq 'create') {
- &membership_options($r,$action,$formname,$tabcol,$sectioncount,3);
+ &membership_options($r,$action,$formname,$tabcol,$sectioncount,3,
+ $gpterm,$ucgpterm);
$nexttext = $$navbuttons{'gtns'};
} else {
my @available = ();
@@ -1142,14 +1206,14 @@
@{$tools} = sort(keys(%{$functions}));
&privilege_specificity($r,$tabcol,$rowColor1,$rowColor2,$action,
3,$tools,$stored,$toolprivs,$fixedprivs,
- \@available,$formname);
+ \@available,$formname,$gpterm,$ucgpterm);
$r->print('
<tr>
<td colspan="4"> </td>
</tr>');
&mapping_options($r,$action,$formname,$page,$tabcol,$sectioncount,
$states,$stored,$navbuttons,4,5,$rowColor1,
- $rowColor2);
+ $rowColor2,$gpterm,$ucgpterm,$crstype);
$nexttext = $$navbuttons{'mose'};
}
$prevtext = $$navbuttons{'gtpp'};
@@ -1161,18 +1225,25 @@
}
sub groupsettings_options {
- my ($r,$tabcol,$functions,$action,$formname,$stored,$image) = @_;
+ my ($r,$tabcol,$functions,$action,$formname,$stored,$image,$gpterm,
+ $ucgpterm,$crstype) = @_;
my %lt = &Apache::lonlocal::texthash(
- 'gdat' => 'Group open and close dates',
- 'sten' => 'Set a start date/time and end date/time for the group',
- 'gfun' => 'Group functionality',
- 'gnde' => 'Group name, description and available functionality',
+ 'gdat' => "$ucgpterm open and close dates",
+ 'sten' => "Set a start date/time and end date/time for the $gpterm",
+ 'gfun' => "$ucgpterm functionality",
+ 'gnde' => "$ucgpterm name, description and available functionality",
'desc' => 'Description',
'func' => 'Functionality',
- 'gnam' => 'Group Name',
- 'doyo' => 'Do you want to assign different functionality '.
- 'to different group members?',
+ 'gnam' => "$ucgpterm Name",
+ 'doyo' => "Do you want to assign different functionality ".
+ "to different $gpterm members?",
);
+ my $crsquota = $env{'course.'.$env{'request.course.id'}.'.internal.coursequota'};
+ if ($crsquota eq '') {
+ $crsquota = 20;
+ }
+ my $freespace = $crsquota - &Apache::longroup::sum_quotas();
+ my $maxposs = $$stored{'quota'} + $freespace;
&topic_bar($r,$tabcol,$image,$lt{'gnde'});
$r->print('
<tr>
@@ -1233,8 +1304,8 @@
</td>
</tr>
<tr>
- <td><b>Granularity:</b></td>
- <td colspan="9">'.$lt{'doyo'}.' <label><input type="radio" name="granularity" value="Yes" />'.&mt('Yes').'</label> <label><input type="radio" name="granularity" value="No" checked="checked" />'.&mt('No').'</label>');
+ <td><b>'.&mt('Granularity:').'</b></td>
+ <td colspan="10">'.$lt{'doyo'}.' <label><input type="radio" name="granularity" value="Yes" />'.&mt('Yes').'</label> <label><input type="radio" name="granularity" value="No" checked="checked" />'.&mt('No').'</label>');
if ($action eq 'modify') {
$r->print(' ('.&mt('Currently set to "[_1]"',
$$stored{'granularity'}).')');
@@ -1242,6 +1313,30 @@
$r->print('
</td>
</tr>
+ <tr>
+ <td valign="top">'.&mt('<b>Disk quota:</b> ').'</td><td colspan="10">');
+ if ($action eq 'create') {
+ $r->print(&mt('If you enable the file repository for the [_1], allocate a disk quota.',$gpterm));
+ } else {
+ $r->print(&mt('Quota allocated to file repository:'));
+ }
+ $r->print(' <input type="text" name="quota" size="4" />Mb');
+ if ($action eq 'create') {
+ $r->print('<br />'.
+ &mt('A total of [_1] Mb is shared between all [_2]s in the '.
+ '[_3], and [_4] Mb are currently unallocated.',$crsquota,
+ $gpterm,lc($crstype),$freespace));
+ } else {
+ $r->print(' ('.&mt('The quota is currently [_1] Mb',
+ $$stored{'quota'}).').');
+
+ $r->print('<br />'.&mt('The quota can be increased to [_1] Mb, '.
+ 'by adding all unallocated space for [_2]s in the [_3].',
+ $maxposs,$gpterm,lc($crstype)));
+ }
+ $r->print('
+ </td>
+ </tr>
</table>
</td>
</tr>
@@ -1250,20 +1345,21 @@
}
sub membership_options {
- my ($r,$action,$state,$tabcol,$sectioncount,$image) = @_;
+ my ($r,$action,$state,$tabcol,$sectioncount,$image,$gpterm,$ucgpterm) = @_;
+ my $crstype = &Apache::loncommon::course_type();
my %lt = &Apache::lonlocal::texthash(
'pipa' => 'Pick parameters to generate membership list',
- 'gmem' => 'Group membership options',
+ 'gmem' => "$ucgpterm membership options",
'picr' => 'Pick the criteria to use to build a list of '.
- 'course users from which you will select ',
- 'meof' => 'members of the new group.',
- 'admg' => 'additional members of the group.',
- 'ifno' => 'If you do not wish to add members when you first '.
- 'create the group, do not make any selections.',
- 'asub' => 'A subsequent step will also allow you to specify automatic adding/dropping of group members triggered by specified role and section changes.',
+ lc($crstype).' users from which you will select ',
+ 'meof' => "members of the new $gpterm.",
+ 'admg' => "additional members of the $gpterm.",
+ 'ifno' => "If you do not wish to add members when you first ".
+ "create the $gpterm, do not make any selections.",
+ 'asub' => "A subsequent step will also allow you to specify automatic adding/dropping of $gpterm members triggered by specified role and section changes.",
'acty' => 'Access types',
- 'coro' => 'Course roles',
- 'cose' => 'Course sections',
+ 'coro' => $crstype.' roles',
+ 'cose' => $crstype.' sections',
);
my %status_types = (
active => &mt('Currently has access'),
@@ -1344,9 +1440,9 @@
}
sub access_date_settings {
- my ($r,$tabcol,$action,$formname,$stored,$image) = @_;
+ my ($r,$tabcol,$action,$formname,$stored,$image,$gpterm,$ucgpterm) = @_;
my %lt = &Apache::lonlocal::texthash(
- 'sten' => 'Default start and end dates for group access',
+ 'sten' => "Default start and end dates for $gpterm access",
);
my $starttime = time;
my $endtime = time+(6*30*24*60*60); # 6 months from now, approx
@@ -1376,16 +1472,17 @@
sub choose_members_form {
my ($r,$cdom,$cnum,$tabcol,$action,$formname,$page,$groupname,$description,
- $granularity,$startdate,$enddate,$tools,$fixedprivs,$toolprivs,
+ $granularity,$quota,$startdate,$enddate,$tools,$fixedprivs,$toolprivs,
$functions,$users,$userdata,$idx,$stored,$states,$navbuttons,
- $rowColor1,$rowColor2) = @_;
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype) = @_;
my @regexps = ('user_','userpriv_','sec_');
my %origmembers;
$r->print(&Apache::lonhtmlcommon::echo_form_input(
['origin','action','state','page','member','specificity','branch',
'defpriv','autorole','autoadd','autodrop','sortby','togglefunc'],
\@regexps));
- my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum);
+ my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum,$gpterm,
+ $ucgpterm,$crstype);
$r->print('
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
@@ -1406,8 +1503,8 @@
if ($action eq 'create') {
&print_current_settings($r,$action,$tabcol,$rowColor1,$rowColor2,
$functions,$startdate,$enddate,$groupname,
- $description,$granularity,\@available,
- \@unavailable);
+ $description,$granularity,$quota,\@available,
+ \@unavailable,$gpterm,$ucgpterm);
$specimg = 4;
$memimg = 5;
} else {
@@ -1429,11 +1526,11 @@
}
&privilege_specificity($r,$tabcol,$rowColor1,$rowColor2,$action,
$specimg,$tools,$stored,$toolprivs,
- $fixedprivs,\@available,$formname);
+ $fixedprivs,\@available,$formname,$gpterm,$ucgpterm);
my $newusers = &pick_new_members($r,$action,$formname,$tabcol,$rowColor1,
$rowColor2,\@available,$idx,$stored,
$memimg,$users,$userdata,$granularity,
- \%origmembers);
+ \%origmembers,$gpterm,$ucgpterm);
if ($newusers || $action eq 'create') {
&display_navbuttons($r,$formname,$$states{$action}[$page-1],
$$navbuttons{'gtps'},$$states{$action}[$page+1],
@@ -1486,17 +1583,19 @@
sub print_current_settings {
my ($r,$action,$tabcol,$rowColor1,$rowColor2,$functions,$startdate,$enddate,
- $groupname,$description,$granularity,$available,$unavailable) =@_;
+ $groupname,$description,$granularity,$quota,$available,$unavailable,
+ $gpterm,$ucgpterm) = @_;
my %lt = &Apache::lonlocal::texthash(
- grna => 'Group Name',
+ grna => "$ucgpterm Name",
desc => 'Description',
- grfn => 'Group Functions',
+ grfn => "$ucgpterm Functions",
gran => 'Granularity',
+ quot => 'File quota',
dfac => 'Default access dates',
- ygrs => 'Your group selections',
- tfwa => 'The following settings will apply to the group:',
- difn => 'Different functionality<br />for different users:',
+ ygrs => "Your $gpterm selections",
+ tfwa => "The following settings will apply to the $gpterm:",
+ difn => 'Different functionality<br />for different members:',
stda => 'Start date',
enda => 'End date:',
);
@@ -1527,6 +1626,7 @@
<td><b>'.$lt{'desc'}.'</b></td>
<td><b>'.$lt{'grfn'}.'</b></td>
<td><b>'.$lt{'gran'}.'</b></td>
+ <td><b>'.$lt{'quot'}.'</b></td>
<td><b>'.$lt{'dfac'}.'</b></td>
</tr>
<tr bgcolor="'.$rowColor2.'">
@@ -1573,7 +1673,8 @@
$r->print(<<"END");
</td>
<td valign="top"><small><b>$lt{'difn'}
- </b> $granularity</small>
+ </b> $granularity</small></td>
+ <td valign="top"><small>$quota Mb</small></td>
<td valign="top"><small><b>$lt{'stda'}</b> $showstart<br />
<b>$lt{'enda'}</b> $showend</small>
</td>
@@ -1589,16 +1690,17 @@
sub pick_new_members {
my ($r,$action,$formname,$tabcol,$rowColor1,$rowColor2,$available,$idx,
- $stored,$img,$users,$userdata,$granularity,$origmembers) = @_;
+ $stored,$img,$users,$userdata,$granularity,$origmembers,$gpterm,
+ $ucgpterm) = @_;
my %lt = &Apache::lonlocal::texthash(
- 'gpme' => 'Group membership',
+ 'gpme' => "$ucgpterm membership",
'addm' => 'Add members',
'setf' => 'Set functionality',
'func' => 'Functionality',
'nome' => 'No members to add at this time.',
- 'nnew' => 'There are no users to add as new members, as all users'.
- ' matching the specified type(s), role(s), and/or '.
- 'section(s) are already affiliated with this group.',
+ 'nnew' => "There are no users to add as new members, as all users".
+ " matching the specified type(s), role(s), and/or ".
+ "section(s) are already affiliated with this $gpterm.",
'yoma' => 'You may need to use the '."'".'modify existing, past or '.
'future members'."'".' page if you need to re-enable '.
'or activate access for previous or future members.',
@@ -1755,7 +1857,7 @@
sub privilege_specificity {
my ($r,$tabcol,$rowColor1,$rowColor2,$action,$img,$tools,$stored,
- $toolprivs,$fixedprivs,$available,$formname) = @_;
+ $toolprivs,$fixedprivs,$available,$formname,$gpterm,$ucgpterm) = @_;
my %lt = &Apache::lonlocal::texthash (
'uprv' => 'User privileges',
'frty' => 'For each type of functionality you have chosen to include, '.
@@ -1770,19 +1872,19 @@
'privileges which apply to members with access to that '.
'functionality, and may also include additional privileges '.
'which can be set for specific members.',
- 'cutg' => 'Currently the group is configured ',
- 'sdif' => 'so different group members can receive different privileges.',
- 'sall' => 'so all group members will receive the same privileges.',
- 'algm' => 'All group members will receive the same privileges.',
- 'smgp' => 'Some group members will receive different privileges from '.
- 'others.',
- 'thwi' => 'These will be the privileges all group members receive, '.
- 'if you selected the first option above.',
- 'thes' => 'These will be the privileges given to members assigned '.
- 'in the future, including via automatic group assignment '.
- 'for specific sections/roles ',
- 'asyo' => 'As you have chosen not to include any functionality in the '.
- 'group, no default user privileges settings need to be set.',
+ 'cutg' => "Currently the $gpterm is configured ",
+ 'sdif' => "so different $gpterm members can receive different privileges.",
+ 'sall' => "so all $gpterm members will receive the same privileges.",
+ 'algm' => "All $gpterm members will receive the same privileges.",
+ 'smgp' => "Some $gpterm members will receive different privileges from ".
+ "others.",
+ 'thwi' => "These will be the privileges all $gpterm members receive, ".
+ "if you selected the first option above.",
+ 'thes' => "These will be the privileges given to members assigned ".
+ "in the future, including via automatic $gpterm assignment ".
+ "for specific sections/roles ",
+ 'asyo' => "As you have chosen not to include any functionality in the ".
+ "$gpterm, no default user privileges settings need to be set.",
'plin' => 'Please indicate which <b>optional</b> privileges members '.
'will receive by default.',
'oppr' => 'Optional privileges',
@@ -2047,11 +2149,11 @@
sub change_members_form {
my ($r,$cdom,$cnum,$tabcol,$action,$formname,$page,$groupname,$description,
$startdate,$enddate,$tools,$fixedprivs,$functions,$users,$userdata,
- $granularity,$specificity,$idx,$states,$navbuttons,$rowColor1,
- $rowColor2) = @_;
+ $granularity,$quota,$specificity,$idx,$states,$navbuttons,$rowColor1,
+ $rowColor2,$gpterm,$ucgpterm) = @_;
my %lt = &Apache::lonlocal::texthash(
- grse => 'Group settings',
- mogm => 'Modify group membership',
+ grse => "$ucgpterm settings",
+ mogm => "Modify $gpterm membership",
);
my @regexps = ('user_','userpriv_');
$r->print(&Apache::lonhtmlcommon::echo_form_input(
@@ -2076,7 +2178,8 @@
');
&print_current_settings($r,$action,$tabcol,$rowColor1,$rowColor2,
$functions,$startdate,$enddate,$groupname,
- $description,$granularity,\@available,\@unavailable);
+ $description,$granularity,$quota,\@available,
+ \@unavailable,$gpterm,$ucgpterm);
$r->print('
</td></tr><tr><td colspan="4"> </td></tr>');
&topic_bar($r,$tabcol,2,$lt{'mogm'});
@@ -2418,13 +2521,13 @@
my ($r,$cdom,$cnum,$tabcol,$action,$formname,$page,$startdate,$enddate,
$tools,$functions,$toolprivs,$fixedprivs,$userdata,$usertools,
$memchg,$idx,$states,$stored,$sectioncount,$navbuttons,$rowColor1,
- $rowColor2) = @_;
+ $rowColor2,$gpterm,$ucgpterm) = @_;
my @regexps = ('userpriv_');
my $nexttext;
my %lt = &Apache::lonlocal::texthash(
'tode' => 'To be deleted',
'toex' => 'To be expired',
- 'nome' => 'No members to be deleted or expired from the group.',
+ 'nome' => "No members to be deleted or expired from the $gpterm.",
);
$r->print(&Apache::lonhtmlcommon::echo_form_input(
['origin','action','state','page','sortby'],\@regexps));
@@ -2463,12 +2566,13 @@
'</td></tr><tr><td colspan="4"> </td></tr>');
}
- &topic_bar($r,$tabcol,4,&mt('Group member privileges'));
+ &topic_bar($r,$tabcol,4,&mt('[_1] member privileges',$ucgpterm));
my $numchgs = &member_privileges_form($r,$tabcol,$action,$formname,$tools,
$toolprivs,$fixedprivs,$userdata,
$usertools,$idx,$memchg,$states,
- $stored,$rowColor1,$rowColor2);
+ $stored,$rowColor1,$rowColor2,
+ $gpterm);
$r->print('</td></tr><tr><td colspan="4"> </td></tr>');
my $prevtext = $$navbuttons{'gtps'};
if ($numchgs || $exp_or_del) {
@@ -2483,8 +2587,8 @@
sub add_members_form {
my ($r,$tabcol,$action,$formname,$page,$startdate,$enddate,$groupname,
- $description,$granularity,$sectioncount,$tools,$functions,$stored,
- $states,$navbuttons,$rowColor1,$rowColor2) = @_;
+ $description,$granularity,$quota,$sectioncount,$tools,$functions,
+ $stored,$states,$navbuttons,$rowColor1,$rowColor2,$gpterm,$ucgpterm)=@_;
$r->print(' <br />
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
@@ -2496,7 +2600,8 @@
&check_tools($functions,$tools,\@available,\@unavailable);
&print_current_settings($r,$action,$tabcol,$rowColor1,$rowColor2,
$functions,$startdate,$enddate,$groupname,
- $description,$granularity,\@available,\@unavailable);
+ $description,$granularity,$quota,\@available,
+ \@unavailable,$gpterm,$ucgpterm);
$r->print('
</td>
</tr>
@@ -2504,7 +2609,8 @@
<td colspan="4"> </td>
</tr>');
- &membership_options($r,$action,$formname,$tabcol,$sectioncount,1);
+ &membership_options($r,$action,$formname,$tabcol,$sectioncount,1,$gpterm,
+ $ucgpterm);
my $nexttext = $$navbuttons{'gtns'};
my $prevtext = $$navbuttons{'gtpp'};
&display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext,
@@ -2517,7 +2623,8 @@
sub choose_privs_form {
my ($r,$cdom,$cnum,$tabcol,$action,$formname,$page,$startdate,$enddate,
$tools,$functions,$toolprivs,$fixedprivs,$userdata,$usertools,$idx,
- $states,$stored,$sectioncount,$navbuttons,$rowColor1,$rowColor2) = @_;
+ $states,$stored,$sectioncount,$navbuttons,$rowColor1,$rowColor2,
+ $gpterm,$ucgpterm,$crstype) = @_;
my @regexps = ('userpriv_');
my $nexttext;
@@ -2535,11 +2642,11 @@
}
$r->print('<br /><table width="100%" cellpadding="0" cellspacing="0" border="0">');
- &topic_bar($r,$tabcol,6,&mt('Group member privileges'));
+ &topic_bar($r,$tabcol,6,&mt('[_1] member privileges',$ucgpterm));
&member_privileges_form($r,$tabcol,$action,$formname,$tools,$toolprivs,
$fixedprivs,$userdata,$usertools,$idx,undef,
- $states,$stored,$rowColor1,$rowColor2);
+ $states,$stored,$rowColor1,$rowColor2,$gpterm);
$r->print('</td></tr><tr><td colspan="4"> </td></tr>');
if ($action eq 'create') {
@@ -2548,7 +2655,7 @@
my $img2 = 8;
&mapping_options($r,$action,$formname,$page,$tabcol,$sectioncount,
$states,$stored,$navbuttons,$img1,$img2,
- $rowColor1,$rowColor2);
+ $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype);
}
}
my $prevtext = $$navbuttons{'gtps'};
@@ -2618,7 +2725,8 @@
sub member_privileges_form {
my ($r,$tabcol,$action,$formname,$tools,$toolprivs,$fixedprivs,$userdata,
- $usertools,$idx,$memchg,$states,$stored,$rowColor1,$rowColor2) = @_;
+ $usertools,$idx,$memchg,$states,$stored,$rowColor1,$rowColor2,
+ $gpterm) = @_;
my %lt = &Apache::lonlocal::texthash(
'addp' => 'Additional privileges',
'fixp' => 'Fixed privileges',
@@ -2627,15 +2735,15 @@
'forf' => 'For the functionality you have chosen to include '.
'there are no optional privileges to set besides '.
'the standard privileges.',
- 'algr' => 'All group members will receive the same privileges.',
- 'asno' => 'As no group members are being added, '.
- 'there are no specific user privileges to set.',
- 'asng' => 'As no group tools will be made available to users, '.
- 'there are no specific user privileges to set.',
- 'nogm' => 'No group member privileges to display or set, '.
- 'as you have not indicated that you will be activating,'.
- ' re-enabling, changing privileges, or adding/removing '.
- 'functionality for any current members ',
+ 'algr' => "All $gpterm members will receive the same privileges.",
+ 'asno' => "As no $gpterm members are being added, ".
+ "there are no specific user privileges to set.",
+ 'asng' => "As no $gpterm tools will be made available to users, ".
+ "there are no specific user privileges to set.",
+ 'nogm' => "No $gpterm member privileges to display or set, ".
+ "as you have not indicated that you will be activating,".
+ " re-enabling, changing privileges, or adding/removing ".
+ "functionality for any current members ",
'full' => 'Fullname',
'user' => 'Username',
'doma' => 'Domain',
@@ -2794,12 +2902,14 @@
my ($r,$cdom,$cnum,$tabcol,$action,$state,$page,$groupname,$description,
$specificity,$userdata,$startdate,$enddate,$tools,$functions,$toolprivs,
$usertools,$idx,$types,$roles,$sections,$states,$navbuttons,$memchg,
- $sectioncount,$stored,$rowColor1,$rowColor2) = @_;
+ $sectioncount,$stored,$rowColor1,$rowColor2,$gpterm,$ucgpterm,
+ $crstype) = @_;
$r->print(&Apache::lonhtmlcommon::echo_form_input(
['origin','action','state','page','sortby']));
- my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum);
+ my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum,$gpterm,
+ $ucgpterm,$crstype);
if ($earlyout) {
$r->print('
<table width="100%" cellpadding="0" cellspacing="0" border="0">
@@ -2845,13 +2955,15 @@
$description,$startdate,$enddate,
$specificity,$functions,$tools,
$sectioncount,$roles,$types,$sections,
- \@defprivs,$stored);
+ \@defprivs,$stored,$gpterm,$ucgpterm,
+ $crstype);
}
if (($action eq 'create' && $outcome eq 'ok') || (($action eq 'modify') &&
(($state eq 'memresult') || ($state eq 'addresult')))) {
&process_membership($r,$cdom,$cnum,$action,$state,$groupname,$tools,
$enddate,$startdate,$userdata,$idx,$toolprivs,
- $usertools,$specificity,\@defprivs,$memchg);
+ $usertools,$specificity,\@defprivs,$memchg,$gpterm,
+ $ucgpterm);
}
return;
}
@@ -2859,7 +2971,7 @@
sub write_group_data {
my ($r,$cdom,$cnum,$action,$state,$groupname,$description,$startdate,
$enddate,$specificity,$functions,$tools,$sectioncount,$roles,$types,
- $sections,$defprivs,$stored) = @_;
+ $sections,$defprivs,$stored,$gpterm,$ucgpterm,$crstype) = @_;
my $now = time;
my $creation = $now;
my $creator = $env{'user.name'}.':'.$env{'user.domain'};
@@ -2870,7 +2982,7 @@
my $esc_description = &escape($description);
my @single_attributes = ('description','functions','startdate','enddate',
'creation','modified','creator','granularity',
- 'specificity','autoadd','autodrop');
+ 'specificity','autoadd','autodrop','quota');
my @mult_attributes = ('roles','types','sectionpick','defpriv');
my %groupinfo = (
@@ -2884,6 +2996,7 @@
specificity => $specificity,
autoadd => $env{'form.autoadd'},
autodrop => $env{'form.autodrop'},
+ quota => $env{'form.quota'},
);
foreach my $func (keys(%{$functions})) {
my $status;
@@ -2932,27 +3045,30 @@
if ($result eq 'ok') {
if ($action eq 'create') {
my $put_result = &create_homepage($cdom,$cnum,$groupname,
- \%groupinfo,$tools);
- $r->print('Group '.$groupname.' was created.<br />');
+ \%groupinfo,$tools,$gpterm,
+ $ucgpterm);
+ $r->print(&mt('[_1] [_2] was created.<br />',$ucgpterm,$groupname));
} else {
- $r->print('Group '.$groupname.' was updated.<br />');
+ $r->print(&mt('[_1] [_2] was updated.<br />',$ucgpterm,$groupname));
}
} else {
my %actiontype = (
'create' => 'creating',
'modify' => 'modifying',
);
- &Apache::lonnet::logthis('Failed to store group '.$groupname.
- 'in course: '.$cnum.' in domain: '.$cdom);
- $r->print(&mt('An error occurred when [_1] the new group. '.
- 'Please try again.',$actiontype{$action}));
+ &Apache::lonnet::logthis("Failed to store $gpterm $groupname ".
+ 'in '.lc($crstype).': '.$cnum.
+ ' in domain: '.$cdom);
+ $r->print(&mt('An error occurred when [_1] the new [_2]. '.
+ 'Please try again.',$actiontype{$action},$gpterm));
}
return $result;
}
sub process_membership {
my ($r,$cdom,$cnum,$action,$state,$groupname,$tools,$enddate,$startdate,
- $userdata,$idx,$toolprivs,$usertools,$specificity,$defprivs,$memchg)=@_;
+ $userdata,$idx,$toolprivs,$usertools,$specificity,$defprivs,$memchg,
+ $gpterm,$ucgpterm)=@_;
my %usersettings = ();
my %added= ();
my %failed = ();
@@ -3149,30 +3265,31 @@
$r->print('<br />');
}
if ($roster_result eq 'ok') {
- $r->print('<br />'.&mt('Group membership list updated.'));
+ $r->print('<br />'.&mt('[_1] membership list updated.',$ucgpterm));
} else {
- $r->print('<br />'.&mt('An error occurred while updating the group membership list -').$roster_result.'<br />');
+ $r->print('<br />'.&mt('An error occurred while updating the [_1] membership list -',$gpterm).$roster_result.'<br />');
}
return;
}
sub mapping_options {
my ($r,$action,$formname,$page,$tabcol,$sectioncount,$states,$stored,
- $navbuttons,$img1,$img2,$rowColor1,$rowColor2) = @_;
+ $navbuttons,$img1,$img2,$rowColor1,$rowColor2,$gpterm,$ucgpterm,
+ $crstype) = @_;
my %lt = &Apache::lonlocal::texthash(
- 'auto' => 'Settings for automatic group enrollment',
- 'gmma' => 'Group membership mapping to specific sections/roles',
- 'endi' => 'Enable/disable automatic group enrollment for '.
- 'users in specified roles and sections',
- 'adds' => 'If automatic group enrollment is enabled, when a user is assigned a course-wide or section-specific role, he/she will automatically be added as a member of the group, with start and end access dates defined by the default dates set for the group, unless he/she is already a group member, with access dates that permit either current or future group access.',
- 'drops' => "If automatic group disenrollment is enabled, when a user's role is expired, access to the group will be terminated unless the user continues to have other course-wide or section-specific active or future roles which receive automatic membership in the group.",
- 'pirs' => 'Pick roles and sections for automatic group enrollment',
+ 'auto' => "Settings for automatic $gpterm enrollment",
+ 'gmma' => "$ucgpterm membership mapping to specific sections/roles",
+ 'endi' => "Enable/disable automatic $gpterm enrollment for ".
+ "users in specified roles and sections",
+ 'adds' => "If automatic $gpterm enrollment is enabled, when a user is assigned a ".lc($crstype)."-wide or section-specific role, he/she will automatically be added as a member of the $gpterm, with start and end access dates defined by the default dates set for the $gpterm, unless he/she is already a $gpterm member, with access dates that permit either current or future $gpterm access.",
+ 'drops' => "If automatic $gpterm disenrollment is enabled, when a user's role is expired, access to the $gpterm will be terminated unless the user continues to have other ".lc($crstype)."-wide or section-specific active or future roles which receive automatic membership in the $gpterm.",
+ 'pirs' => "Pick roles and sections for automatic $gpterm enrollment",
'curr' => 'Currently set to',
'on' => 'on',
'off' => 'off',
- 'auad' => 'Automatically enable group membership when roles are added?',
- 'auex' => 'Automatically expire group membership when roles are removed?',
- 'mapr' => 'Mapping of roles and sections affected by automatic group enrollment/disenrollment follows scheme chosen below.',
+ 'auad' => "Automatically enable $gpterm membership when roles are added?",
+ 'auex' => "Automatically expire $gpterm membership when roles are removed?",
+ 'mapr' => "Mapping of roles and sections affected by automatic $gpterm enrollment/disenrollment follows scheme chosen below.",
);
&automapping($r,$action,$tabcol,$stored,\%lt,$img1);
$r->print('
@@ -3180,7 +3297,7 @@
<td colspan="4"> </td>
</tr>');
&mapping_settings($r,$tabcol,$rowColor1,$rowColor2,$sectioncount,\%lt,
- $stored,$img2);
+ $stored,$img2,$crstype);
return;
}
@@ -3240,7 +3357,8 @@
}
sub mapping_settings {
- my ($r,$tabcol,$rowColor1,$rowColor2,$sectioncount,$lt,$stored,$image) = @_;
+ my ($r,$tabcol,$rowColor1,$rowColor2,$sectioncount,$lt,$stored,$image,
+ $crstype) = @_;
my @sections = keys(%{$sectioncount});
if (@sections > 0) {
@sections = sort {$a cmp $b} @sections;
@@ -3266,7 +3384,7 @@
my $rowNum = 0;
my $rowColor;
foreach my $role (@roles) {
- my $plrole=&Apache::lonnet::plaintext($role);
+ my $plrole=&Apache::lonnet::plaintext($role,$crstype);
my $sections_sel;
if (@sections > 0) {
if ($role eq 'cc') {
@@ -3326,10 +3444,10 @@
}
sub modify_menu {
- my ($r,$groupname,$page) = @_;
+ my ($r,$groupname,$page,$gpterm) = @_;
my @menu =
(
- { text => 'Modify default group settings',
+ { text => "Modify default $gpterm settings",
help => 'Course_Modify_Group',
state => 'change_settings',
branch => 'settings',
@@ -3340,7 +3458,7 @@
state => 'change_members',
branch => 'members',
},
- { text => 'Add member(s) to the group',
+ { text => "Add member(s) to the $gpterm",
help => 'Course_Group_Add_Members',
state => 'add_members',
branch => 'adds',
@@ -3454,7 +3572,7 @@
}
sub create_homepage {
- my ($cdom,$cnum,$name,$groupinfo,$tools) = @_;
+ my ($cdom,$cnum,$name,$groupinfo,$tools,$gpterm,$ucgpterm) = @_;
my $functionality = join(',',@{$tools});
my $content = &unescape($$groupinfo{description});
$content=~s/\s+$//s;
@@ -3463,7 +3581,7 @@
$content=&Apache::lonfeedback::clear_out_html($content,1);
my %pageinfo = (
- 'aaa_title' => 'Group: '.$name,
+ 'aaa_title' => "$ucgpterm: $name",
'abb_links' => $functionality,
'bbb_content' => $content,
'ccc_webreferences' => '',
@@ -3509,22 +3627,22 @@
}
sub validate_groupname {
- my ($groupname,$action,$cdom,$cnum) = @_;
+ my ($groupname,$action,$cdom,$cnum,$gpterm,$ucgpterm,$crstype) = @_;
my %sectioncount = &Apache::loncommon::get_sections($cdom,$cnum);
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
my %lt = &Apache::lonlocal::texthash (
- igna => 'Invalid group name',
- tgne => 'The group name entered ',
- grna => 'Group names and section names used in a course '.
- 'must be unique.',
- isno => 'is not a valid name.',
- gnmo => 'Group names may only contain letters, numbers '.
- 'or underscores.',
- cnnb => 'can not be used as it is the name of ',
- inth => ' in this course.',
- thgr => '- does not correspond to the name of an existing'.
- ' group ',
+ igna => "Invalid $gpterm name",
+ tgne => "The $gpterm name entered ",
+ grna => "$ucgpterm names and section names used in a ".
+ "$crstype must be unique.",
+ isno => "is not a valid name.",
+ gnmo => "$ucgpterm names may only contain letters, ".
+ "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 = '<b>'.$lt{'igna'}.'</b><br /><br />'.$lt{'tgne'}.' "'.
@@ -3542,12 +3660,13 @@
if ($action eq 'create'
&& exists($curr_groups{$groupname})) {
- return $exitmsg.$lt{'cnnb'}.&mt('an existing group').
+ return $exitmsg.$lt{'cnnb'}.&mt('an existing [_1]',$gpterm).
$lt{'inth'}.'<br />'.$lt{'grna'};
} elsif ($action eq 'modify') {
unless(exists($curr_groups{$groupname})) {
- $earlyout = &mt('Group name:').' '.$groupname.$lt{'thgr'}.$lt{'inth'};
+ $earlyout = &mt('[_1] name:',$ucgpterm).' '.$groupname.$lt{'thgr'}.
+ $lt{'inth'};
return $earlyout;
}
}
Index: loncom/interface/longroup.pm
diff -u loncom/interface/longroup.pm:1.5 loncom/interface/longroup.pm:1.6
--- loncom/interface/longroup.pm:1.5 Mon Jun 26 18:20:57 2006
+++ loncom/interface/longroup.pm Wed Jun 28 19:38:10 2006
@@ -92,11 +92,11 @@
hash of hashes for (b)
Keys (in two categories):
-(a) groupname, creator, creation, modified, startdate,enddate.
+(a) groupname, creator, creation, modified, startdate, enddate, quota.
Corresponding values are name of the group, creator of the group
(username:domain), UNIX time for date group was created, and
-settings were last modified, and default start and end access
-times for group members.
+settings were last modified, file quota, and default start and end
+access times for group members.
(b) functions returned in hash of hashes.
Outer hash key is functions.
@@ -415,5 +415,42 @@
###############################################
+sub sum_quotas {
+ my ($courseid) = @_;
+ my $totalquotas = 0;
+ my ($cdom,$cnum);
+ if (!defined($courseid)) {
+ if (defined($env{'request.course.id'})) {
+ $courseid = $env{'request.course.id'};
+ $cdom = $env{'course.'.$courseid.'.domain'};
+ $cnum = $env{'course.'.$courseid.'.num'};
+ } else {
+ return '';
+ }
+ } else {
+ ($cdom,$cnum) = split(/_/,$courseid);
+ }
+ if ($cdom && $cnum) {
+ my %curr_groups = &coursegroups($cdom,$cnum);
+ if (%curr_groups) {
+ foreach my $group (keys(%curr_groups)) {
+ my %settings=&get_group_settings($curr_groups{$group});
+ my $quota = $settings{'quota'};
+ if ($quota eq '') {
+ $quota = 0;
+ }
+ $totalquotas += $quota;
+ }
+ } else {
+ return 0;
+ }
+ } else {
+ return '';
+ }
+ return $totalquotas;
+}
+
+###############################################
+
1;
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.405 loncom/interface/loncommon.pm:1.406
--- loncom/interface/loncommon.pm:1.405 Wed Jun 28 16:15:37 2006
+++ loncom/interface/loncommon.pm Wed Jun 28 19:38:10 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.405 2006/06/28 20:15:37 albertel Exp $
+# $Id: loncommon.pm,v 1.406 2006/06/28 23:38:10 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -5179,6 +5179,15 @@
}
}
+sub group_term {
+ my $crstype = &course_type();
+ my %names = (
+ 'Course' => 'group',
+ 'Group' => 'team',
+ );
+ return $names{$crstype};
+}
+
sub icon {
my ($file)=@_;
my $curfext = (split(/\./,$file))[-1];
--raeburn1151537891--