--- loncom/interface/loncoursegroups.pm 2006/07/02 12:46:06 1.35
+++ loncom/interface/loncoursegroups.pm 2006/07/07 15:54:15 1.39
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: loncoursegroups.pm,v 1.35 2006/07/02 12:46:06 raeburn Exp $
+# $Id: loncoursegroups.pm,v 1.39 2006/07/07 15:54:15 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -112,40 +112,37 @@ sub handler {
'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,$gpterm,$ucgpterm,$crstype);
+ &print_main_menu($r,$cdom,$cnum,\%functions,\%idx,$view_permission,
+ $manage_permission,$action,$state,$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,$gpterm,
- $ucgpterm,$crstype) = @_;
+ my ($r,$cdom,$cnum,$functions,$idx,$view_permission,$manage_permission,
+ $action,$state,$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($pagename,$jscript,$action,$state,
- undef,$function));
+ $r->print(&header($pagename,$jscript,$action,$state));
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"/adm/coursegroups",
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,$gpterm,$ucgpterm,$crstype);
+ &display_groups($r,$cdom,$cnum,$functions,$idx,$view_permission,
+ $manage_permission,$action,$state,$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,$gpterm,
- $ucgpterm,$crstype) = @_;
+ my ($r,$cdom,$cnum,$functions,$idx,$view_permission,
+ $manage_permission,$action,$state,$gpterm,$ucgpterm,$crstype) = @_;
my %curr_groups = ();
my %grp_info = ();
my %actionlinks = (
@@ -188,28 +185,24 @@ sub display_groups {
$r->print('
'.$lt{'crng'}.'');
}
$r->print('
');
- $r->print(&Apache::lonhtmlcommon::start_pick_box());
+ $r->print(&Apache::loncommon::start_data_table().
+ &Apache::loncommon::start_data_table_header_row());
+
$r->print(<<"END");
-
-
- $lt{'act'} |
- $lt{'gname'} |
- $lt{'desc'} |
- $lt{'crea'}
- |
- $lt{'crtd'}
- |
- $lt{'last'}
- |
- $lt{'func'}
- |
- $lt{'quot'} |
- $lt{'memb'} |
- $lt{'file'} |
- $lt{'dibd'} |
- $lt{'dius'} |
-
+ $lt{'act'} |
+ $lt{'gname'} |
+ $lt{'desc'} |
+ $lt{'crea'} |
+ $lt{'crtd'} |
+ $lt{'last'} |
+ $lt{'func'}
+ | $lt{'quot'} |
+ $lt{'memb'} |
+ $lt{'file'} |
+ $lt{'dibd'} |
+ $lt{'dius'} |
END
+ $r->print(&Apache::loncommon::end_data_table_header_row());
my %Sortby = ();
foreach my $group (sort(keys(%curr_groups))) {
%{$grp_info{$group}} =
@@ -259,17 +252,10 @@ END
push(@{$Sortby{$group}},$group);
}
}
- my $rowNum = 0;
- my $rowColor;
foreach my $key (sort(keys(%Sortby))) {
foreach my $group (@{$Sortby{$key}}) {
- if ($rowNum %2 == 1) {
- $rowColor = $rowColor1;
- } else {
- $rowColor = $rowColor2;
- }
my $description =
- &unescape($grp_info{$group}{'description'});
+ &unescape($grp_info{$group}{'description'});
my $creator = $grp_info{$group}{'creator'};
my $creation = $grp_info{$group}{'creation'};
my $modified = $grp_info{$group}{'modified'};
@@ -302,12 +288,23 @@ END
$group.'">'.$lt{'modify'}.'';
}
}
- $r->print(''.$link.' | '.$group.' | '.$description.' | '.$creator.' | '. &Apache::lonnavmaps::timeToHumanString($creation).' | '. &Apache::lonnavmaps::timeToHumanString($modified).' | '.$functionality.' | '.$quota.' | '.$totalmembers.' | '.&mt('Files: ').$totalfiles.' '.&mt('Folders: ').$totaldirs.' | '.$boards.' | '.$diskuse.' |
');
- $rowNum ++;
+ $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense').
+ ''.$link.' | '.
+ ''.$group.' | '.
+ ''.$description.' | '.
+ ''.$creator.' | '.
+ ''. &Apache::lonnavmaps::timeToHumanString($creation).' | '.
+ ''. &Apache::lonnavmaps::timeToHumanString($modified).' | '.
+ ''.$functionality.' | '.
+ ''.$quota.' | '.
+ ''.$totalmembers.' | '.
+ ''.&mt('Files: ').$totalfiles.' '.&mt('Folders: ').$totaldirs.' | '.
+ ''.$boards.' | '.
+ ''.$diskuse.' | '.
+ &Apache::loncommon::end_data_table_row());
}
}
- $r->print('
');
- $r->print(&Apache::lonhtmlcommon::end_pick_box());
+ $r->print(&Apache::loncommon::end_data_table());
$r->print('');
if ($action eq 'view') {
@@ -368,7 +365,7 @@ sub group_administration {
my @member_changes = ('deletion','expire','activate','reenable',
'changefunc','changepriv');
my ($groupname,$description,$startdate,$enddate,$granularity,$specificity,
- $quota);
+ $quota,$validate_script);
if (defined($env{'form.groupname'})) {
$groupname = $env{'form.groupname'};
@@ -438,47 +435,9 @@ sub group_administration {
}
}
- my %toolprivs =
- (
- email => {
- sgm => 'Send '.$gpterm.' mail',
- sgb => 'Broadcast mail',
- },
- discussion => {
- cgb => 'Create boards',
- pgd => 'Post',
- pag => 'Anon. posts',
- rgi => 'Get identities',
- vgb => 'View boards',
- },
- chat => {
- pgc => 'Chat',
- },
- files => {
- rgf => 'Retrieve',
- ugf => 'Upload',
- mgf => 'Modify',
- dgf => 'Delete',
- agf => 'Control Access',
- },
- roster => {
- vgm => 'View',
- },
- homepage => {
- vgh => 'View page',
- mgh => 'Modify page',
- },
- );
+ my $toolprivs = &Apache::longroup::get_tool_privs($gpterm);
- my %fixedprivs =
- (
- email => {sgm => 1},
- discussion => {vgb => 1},
- chat => {pgc => 1},
- files => {rgf => 1},
- roster => {vgm => 1},
- homepage => {vgh => 1},
- );
+ my $fixedprivs = &Apache::longroup::get_fixed_privs();
my %elements =
(
@@ -686,8 +645,8 @@ sub group_administration {
}
my @currtools = ();
if (@userprivs > 0) {
- foreach my $tool (sort(keys(%fixedprivs))) {
- foreach my $priv (keys(%{$fixedprivs{$tool}})) {
+ foreach my $tool (sort(keys(%{$fixedprivs}))) {
+ foreach my $priv (keys(%{$$fixedprivs{$tool}})) {
if (grep/^$priv$/,@userprivs) {
push(@currtools,$tool);
last;
@@ -757,19 +716,59 @@ sub group_administration {
&& ($specificity eq 'Yes')) {
foreach my $user (sort(keys(%usertools))) {
foreach my $tool (keys(%{$usertools{$user}})) {
- foreach my $priv (keys(%{$toolprivs{$tool}})) {
- unless (exists($fixedprivs{$tool}{$priv})) {
+ foreach my $priv (keys(%{$$toolprivs{$tool}})) {
+ unless (exists($$fixedprivs{$tool}{$priv})) {
$elements{$action}{$state}{'userpriv_'.$priv} = 'checkbox';
}
}
}
}
}
-
+
+ if (($action eq 'create' && $state eq 'pick_name') ||
+ ($action eq 'modify' && $state eq 'change_settings')) {
+ my ($crsquota,$freespace,$maxposs) = &get_quota_constraints($action,\%stored);
+ my $space_trim = '/^\s*|\s*\$/g,""';
+ my $float_check = '/^([0-9]*\.?[0-9]*)$/';
+ $validate_script = '
+ var newquota = document.'.$state.'.quota.value;
+ newquota.replace('.$space_trim.');
+ if (newquota == "" ) {
+ document.'.$state.'.quota.value = 0;
+ newquota = 0;
+ }
+ var maxposs = '.$maxposs.';
+ if (newquota > maxposs) {
+ alert("The file repository quota you entered for this group ("+newquota+" Mb) exceeds the maximum possible ("+maxposs+" Mb). Please enter a smaller number.");
+ return;
+ }
+ var re_quota = '.$float_check.';
+ var check_quota = newquota.match(re_quota);
+ if (check_quota == null) {
+ alert("The quota you entered contains invalid characters, the quota should only include numbers, with or without a decimal point.");
+ return;
+ }
+ if (newquota == 0) {
+ var warn_zero = 0;
+ for (var i=0; iprint(&header("$crumbtitle Manager",
- $jscript,$action,$state,$page,$function,$loaditems));
+ $jscript,$action,$state,$page,$loaditems));
if ($env{'form.refpage'} eq 'enrl') {
&Apache::lonhtmlcommon::add_breadcrumb
@@ -868,7 +867,7 @@ function changeSort(caller) {
("$crumbtitle Manager"));
&display_control($r,$cdom,$cnum,$tabcol,$action,$state,$page,
\%sectioncount,$groupname,$description,$functions,
- \@tools,\%toolprivs,\%fixedprivs,$startdate,$enddate,
+ \@tools,$toolprivs,$fixedprivs,$startdate,$enddate,
\%users,\%userdata,$idx,\%memchg,\%usertools,
$function,$view_permission,$manage_permission,
\%stored,$granularity,$quota,$specificity,\@types,\@roles,
@@ -893,9 +892,9 @@ function changeSort(caller) {
my $crumbtitle = "$crstype $ucgpterm".'s Manager';
$r->print(&Apache::lonhtmlcommon::breadcrumbs
(&mt($crumbtitle)));
- &display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,
- $view_permission,$manage_permission,$action,$state,
- $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype);
+ &display_groups($r,$cdom,$cnum,$functions,$idx,$view_permission,
+ $manage_permission,$action,$state,$gpterm,$ucgpterm,
+ $crstype);
}
$r->print(&footer());
@@ -1000,9 +999,9 @@ sub display_control {
} 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,$gpterm,$ucgpterm,$crstype);
+ &display_groups($r,$cdom,$cnum,$functions,$idx,$view_permission,
+ $manage_permission,$action,$state,$gpterm,
+ $ucgpterm,$crstype);
} elsif ($state eq 'pick_task') {
&modify_menu($r,$groupname,$page,$gpterm);
} elsif ($state eq 'change_settings') {
@@ -1058,13 +1057,12 @@ sub display_control {
}
sub header {
- my ($bodytitle,$jscript,$action,$state,$page,$function,$loaditems) = @_;
+ my ($bodytitle,$jscript,$action,$state,$page,$loaditems) = @_;
my $start_page=
&Apache::loncommon::start_page($bodytitle,
'',
- {'function' => $function,
- 'add_entries' => $loaditems,});
+ {'add_entries' => $loaditems,});
my $output = <<"END";
$start_page