--- loncom/interface/loncoursegroups.pm 2006/07/02 17:08:42 1.36 +++ loncom/interface/loncoursegroups.pm 2006/07/07 17:11:04 1.41 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursegroups.pm,v 1.36 2006/07/02 17:08:42 raeburn Exp $ +# $Id: loncoursegroups.pm,v 1.41 2006/07/07 17:11:04 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"); - - - - - - - - - - - - - - - + + + + + + + + + + + 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(''); - $rowNum ++; + $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense'). + ''. + ''. + ''. + ''. + ''. + ''. + ''. + ''. + ''. + ''. + ''. + ''. + &Apache::loncommon::end_data_table_row()); } } - $r->print('
$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'}
'.$link.''.$group.''.$description.''.$creator.''. &Apache::lonnavmaps::timeToHumanString($creation).''. &Apache::lonnavmaps::timeToHumanString($modified).''.$functionality.''.$quota.''.$totalmembers.''.&mt('Files: ').$totalfiles.'
'.&mt('Folders: ').$totaldirs.'
'.$boards.''.$diskuse.'
'.$link.''.$group.''.$description.''.$creator.''. &Apache::lonnavmaps::timeToHumanString($creation).''. &Apache::lonnavmaps::timeToHumanString($modified).''.$functionality.''.$quota.''.$totalmembers.''.&mt('Files: ').$totalfiles.'
'.&mt('Folders: ').$totaldirs.'
'.$boards.''.$diskuse.'
'); - $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'}; @@ -727,11 +724,51 @@ sub group_administration { } } } - + + 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 @@ -855,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()); @@ -962,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') { @@ -1020,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
@@ -1146,24 +1182,12 @@ sub general_settings_form { $toolprivs,$fixedprivs,$sectioncount,$stored,$states,$navbuttons, $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype) = @_; my ($nexttext,$prevtext); - $r->print('
- -'); &groupsettings_options($r,$tabcol,$functions,$action,$formname,$stored,1, $gpterm,$ucgpterm,$crstype); - $r->print(' - - - '); - &access_date_settings($r,$tabcol,$action,$formname,$stored,2,$gpterm, - $ucgpterm); - $r->print(' - - - '); + &access_date_settings($r,$action,$formname,$stored,2,$gpterm,$ucgpterm); if ($action eq 'create') { - &membership_options($r,$action,$formname,$tabcol,$sectioncount,3, - $gpterm,$ucgpterm); + &membership_options($r,$action,$formname,$sectioncount,3,$gpterm, + $ucgpterm); $nexttext = $$navbuttons{'gtns'}; } else { my @available = (); @@ -1173,10 +1197,6 @@ sub general_settings_form { &privilege_specificity($r,$tabcol,$rowColor1,$rowColor2,$action, 3,$tools,$stored,$toolprivs,$fixedprivs, \@available,$formname,$gpterm,$ucgpterm); - $r->print(' - - - '); &mapping_options($r,$action,$formname,$page,$tabcol,$sectioncount, $states,$stored,$navbuttons,4,5,$rowColor1, $rowColor2,$gpterm,$ucgpterm,$crstype); @@ -1185,8 +1205,6 @@ sub general_settings_form { $prevtext = $$navbuttons{'gtpp'}; &display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext, $$states{$action}[$page+1],$nexttext); - $r->print(' -
 
 
 
'); return; } @@ -1204,17 +1222,9 @@ sub groupsettings_options { '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'}); + my ($crsquota,$freespace,$maxposs) = &get_quota_constraints($action,$stored); + &topic_bar($r,$image,$lt{'gnde'}); $r->print(' - -   - @@ -1304,14 +1314,28 @@ END
'.$lt{'gnam'}.':
- - '); return; } +sub get_quota_constraints { + my ($action,$stored) = @_; + my ($crsquota,$freespace,$maxposs); + $crsquota = $env{'course.'.$env{'request.course.id'}.'.internal.coursequota'}; + if ($crsquota eq '') { + $crsquota = 20; + } + $freespace = $crsquota - &Apache::longroup::sum_quotas(); + if ($action eq 'create') { + $maxposs = $freespace; + } else { + $maxposs = $$stored{'quota'} + $freespace; + } + return ($crsquota,$freespace,$maxposs); +} + sub membership_options { - my ($r,$action,$state,$tabcol,$sectioncount,$image,$gpterm,$ucgpterm) = @_; + my ($r,$action,$state,$sectioncount,$image,$gpterm,$ucgpterm) = @_; my $crstype = &Apache::loncommon::course_type(); my %lt = &Apache::lonlocal::texthash( 'pipa' => 'Pick parameters to generate membership list', @@ -1338,12 +1362,9 @@ sub membership_options { my @sections = keys(%{$sectioncount}); - &topic_bar($r,$tabcol,$image,$lt{'pipa'}); + &topic_bar($r,$image,$lt{'pipa'}); $r->print(' - -   - - '.$lt{'gmem'}.'
'.$lt{'picr'}); + '.$lt{'gmem'}.'
'.$lt{'picr'}); if ($action eq 'create') { $r->print($lt{'meof'}.'
'.$lt{'ifno'}.'
'.$lt{'asub'}); } else { @@ -1352,34 +1373,28 @@ sub membership_options { $r->print('

- +
- - - '); + + '); if (@sections >0) { $r->print(' - - - '); + '); } - $r->print(''); + $r->print(''); + $r->print(' - '); } $r->print(' -
'.$lt{'acty'}.' '.$lt{'coro'}.''.$lt{'acty'}.''.$lt{'coro'}.' '.$lt{'cose'}.' '.$lt{'cose'}.'
'); $r->print(&Apache::lonhtmlcommon::status_select_row(\%status_types)); - $r->print(' '); $r->print(&Apache::lonhtmlcommon::role_select_row(\@roles)); if (@sections > 0) { @sections = sort {$a cmp $b} @sections; unshift(@sections,'none'); # Put 'no sections' next unshift(@sections,'all'); # Put 'all' at the front of the list - $r->print(' '. + $r->print(''. §ions_selection(\@sections,'sectionpick').'
- - '); + '); return; } @@ -1407,7 +1422,7 @@ sub sections_selection { } sub access_date_settings { - my ($r,$tabcol,$action,$formname,$stored,$image,$gpterm,$ucgpterm) = @_; + my ($r,$action,$formname,$stored,$image,$gpterm,$ucgpterm) = @_; my %lt = &Apache::lonlocal::texthash( 'sten' => "Default start and end dates for $gpterm access", ); @@ -1419,21 +1434,11 @@ sub access_date_settings { $endtime = $$stored{'enddate'}; } } - my ($start_table,$end_table) = &date_setting_table - ($starttime,$endtime,$formname); - &topic_bar($r,$tabcol,$image,$lt{'sten'}); + my ($table) = &date_setting_table($starttime,$endtime,$formname); + &topic_bar($r,$image,$lt{'sten'}); $r->print(' - -   - '.$start_table.' - - -   - - -   - '.$end_table.' - '); + '.$table.' + '); return; } @@ -1450,17 +1455,9 @@ sub choose_members_form { \@regexps)); my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum,$gpterm, $ucgpterm,$crstype); - $r->print(' - - - - '); &display_navbuttons($r,$formname,$$states{$action}[$page-1], $$navbuttons{'gtps'}); - $r->print('
  -'); if ($earlyout) { - $r->print($earlyout.'
'); return; } my ($specimg,$memimg); @@ -1468,10 +1465,9 @@ sub choose_members_form { my @unavailable = (); &check_tools($functions,$tools,\@available,\@unavailable); if ($action eq 'create') { - &print_current_settings($r,$action,$tabcol,$rowColor1,$rowColor2, - $functions,$startdate,$enddate,$groupname, - $description,$granularity,$quota,\@available, - \@unavailable,$gpterm,$ucgpterm); + &print_current_settings($r,$action,$functions,$startdate,$enddate, + $groupname,$description,$granularity,$quota, + \@available,\@unavailable,$gpterm,$ucgpterm); $specimg = 4; $memimg = 5; } else { @@ -1506,19 +1502,11 @@ sub choose_members_form { &display_navbuttons($r,$formname,$$states{$action}[$page-1], $$navbuttons{'gtps'}); } - $r->print(''); return; } sub display_navbuttons { my ($r,$formname,$prev,$prevtext,$next,$nexttext) = @_; - $r->print(' - -   - - -   - '); if ($prev) { $r->print(' '); } - $r->print(' - - -'); } sub check_tools { @@ -1549,9 +1533,8 @@ sub check_tools { } sub print_current_settings { - my ($r,$action,$tabcol,$rowColor1,$rowColor2,$functions,$startdate,$enddate, - $groupname,$description,$granularity,$quota,$available,$unavailable, - $gpterm,$ucgpterm) = @_; + my ($r,$action,$functions,$startdate,$enddate,$groupname,$description, + $granularity,$quota,$available,$unavailable,$gpterm,$ucgpterm) = @_; my %lt = &Apache::lonlocal::texthash( grna => "$ucgpterm Name", @@ -1573,36 +1556,31 @@ sub print_current_settings { } else { $showend = &Apache::lonlocal::locallocaltime($enddate); } - $r->print(''); if ($action eq 'create') { $r->print(' - - -'); +'); } - $r->print(' - @@ -1870,12 +1843,7 @@ sub privilege_specificity { } } } - &topic_bar($r,$tabcol,$img,$lt{'uprv'}); - $r->print(' - - - - - - - '); +

+
+'); } else { $r->print(''); } if ($totaloptionalprivs) { - $r->print(' - - - - - - - - - - - - -'); return; } @@ -1982,12 +1930,9 @@ sub default_privileges { 'oppr' => 'Optional privileges', 'func' => 'Function', ); - $r->print(&Apache::lonhtmlcommon::start_pick_box()); - $r->print(' - '."\n". + "
'.$lt{'ygrs'}.' +
'.$lt{'ygrs'}.'
'.$lt{'tfwa'}.' -
'); - $r->print(&Apache::lonhtmlcommon::start_pick_box()); + $r->print(&Apache::loncommon::start_data_table('LC_course_group_status'). + &Apache::loncommon::start_data_table_header_row()); $r->print(' -
- - - - - - - - - - - - + + + + + + +'); + $r->print(&Apache::loncommon::end_data_table_header_row(). + &Apache::loncommon::start_data_table_row('LC_data_table_dense')); + $r->print(' + + - END - $r->print(&Apache::lonhtmlcommon::end_pick_box()); - $r->print('
'.$lt{'grna'}.''.$lt{'desc'}.''.$lt{'grfn'}.''.$lt{'gran'}.''.$lt{'quot'}.''.$lt{'dfac'}.'
'.$groupname.''.$description.''.$lt{'grna'}.''.$lt{'desc'}.''.$lt{'grfn'}.''.$lt{'gran'}.''.$lt{'quot'}.''.$lt{'dfac'}.''.$groupname.''.$description.' '); if (@{$available} > 0) { - $r->print('Available: + $r->print('Available: '); my $rowcell = int(@{$available}/2) + @{$available}%2; for (my $i=0; $i<@{$available}; $i++) { @@ -1611,8 +1589,8 @@ sub print_current_settings { $r->print(''); } } - $r->print(''); + $r->print(''); } if ((@{$available} > 3) && (@{$available}%2)) { $r->print(''); @@ -1620,7 +1598,7 @@ sub print_current_settings { $r->print('
'.$$functions{$$available[$i]}. - ' '.$$functions{$$available[$i]}. + '   

'); } if (@{$unavailable} > 0) { - $r->print('Unavailable: + $r->print('Unavailable: '); my $rowcell = int(@{$unavailable}/2) + @{$unavailable}%2; for (my $j=0; $j<@{$unavailable}; $j++) { @@ -1629,8 +1607,8 @@ sub print_current_settings { $r->print(''); } } - $r->print(''); + $r->print(''); } if ((@{$unavailable} > 3) && (@{$unavailable}%2)) { $r->print(''); @@ -1639,19 +1617,14 @@ sub print_current_settings { } $r->print(<<"END"); - - - + + - -
'.$$functions{$$unavailable[$j]}. - ' '.$$functions{$$unavailable[$j]}. + '   $lt{'difn'} - $granularity$quota Mb$lt{'stda'} $showstart
- $lt{'enda'} $showend
+
$lt{'difn'} $granularity$quota Mb$lt{'stda'} $showstart
+ $lt{'enda'} $showend
-

'); + $r->print(&Apache::loncommon::end_data_table_row(). + &Apache::loncommon::end_data_table()); return; } @@ -1694,7 +1667,7 @@ sub pick_new_members { $r->print(&check_uncheck_tools($r,$available)); } } - &topic_bar($r,$tabcol,$img,$lt{'gpme'}); + &topic_bar($r,$img,$lt{'gpme'}); if (keys(%members) > 0) { $r->print('
  - '); + &topic_bar($r,$img,$lt{'uprv'}); if ((($action eq 'create') && (@{$available} > 0)) || (($action eq 'modify') && ($formname eq 'change_settings'))) { my %specific = ( @@ -1901,21 +1869,14 @@ sub privilege_specificity { } if ($totaloptionalprivs) { $r->print(' -


- -
 
 '.$lt{'plin'}); + $r->print($lt{'plin'}); if ($action eq 'create') { $r->print(' '.$lt{'thwi'}); } @@ -1926,24 +1887,15 @@ sub privilege_specificity { $r->print('('.&mt('if enabled below').').'); } $r->print('

-
 '); +
'); &check_uncheck_buttons($r,$formname,'defpriv',$lt{'oppr'}); $r->print('
-
 
 
'); } else { - $r->print('
 '.$lt{'algm'}.'

'); + $r->print($lt{'algm'}.'

'); } &default_privileges($r,$action,$tabcol,$rowColor1,$rowColor2, $tools,$toolprivs,$fixedprivs,$available); @@ -1966,10 +1918,6 @@ sub privilege_specificity { $toolprivs,\@defprivs); } } - $r->print(' -
- - - + $r->print(&Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row()); + $r->print(' @@ -2142,19 +2087,18 @@ sub change_members_form {
'.$lt{'func'}.''.$lt{'func'}.'
'.$lt{'fixp'}.'
'); - &topic_bar($r,$tabcol,1,$lt{'grse'}); + &topic_bar($r,1,$lt{'grse'}); $r->print(' '); - &topic_bar($r,$tabcol,2,$lt{'mogm'}); + &topic_bar($r,2,$lt{'mogm'}); $r->print(' @@ -2427,7 +2371,7 @@ sub change_privs_form { $nexttext = $$navbuttons{'mose'}; } $r->print('
  '); - &print_current_settings($r,$action,$tabcol,$rowColor1,$rowColor2, - $functions,$startdate,$enddate,$groupname, - $description,$granularity,$quota,\@available, - \@unavailable,$gpterm,$ucgpterm); + &print_current_settings($r,$action,$functions,$startdate,$enddate, + $groupname,$description,$granularity,$quota, + \@available,\@unavailable,$gpterm,$ucgpterm); $r->print('
 
 
'); - &topic_bar($r,$tabcol,3,&mt('Members to delete or expire')); + &topic_bar($r,3,&mt('Members to delete or expire')); my $exp_or_del = 0; if (ref($$memchg{'deletion'}) eq 'ARRAY') { if (@{$$memchg{'deletion'}} > 0) { @@ -2456,7 +2400,7 @@ sub change_privs_form { ''); } - &topic_bar($r,$tabcol,4,&mt('[_1] member privileges',$ucgpterm)); + &topic_bar($r,4,&mt('[_1] member privileges',$ucgpterm)); my $numchgs = &member_privileges_form($r,$tabcol,$action,$formname,$tools, $toolprivs,$fixedprivs,$userdata, @@ -2479,34 +2423,18 @@ sub add_members_form { my ($r,$tabcol,$action,$formname,$page,$startdate,$enddate,$groupname, $description,$granularity,$quota,$sectioncount,$tools,$functions, $stored,$states,$navbuttons,$rowColor1,$rowColor2,$gpterm,$ucgpterm)=@_; - $r->print('
-
 
- - - - - - - '); - - &membership_options($r,$action,$formname,$tabcol,$sectioncount,1,$gpterm, - $ucgpterm); + &print_current_settings($r,$action,$functions,$startdate,$enddate, + $groupname,$description,$granularity,$quota, + \@available,\@unavailable,$gpterm,$ucgpterm); + &membership_options($r,$action,$formname,$sectioncount,1,$gpterm,$ucgpterm); my $nexttext = $$navbuttons{'gtns'}; my $prevtext = $$navbuttons{'gtpp'}; &display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext, $$states{$action}[$page+1],$nexttext); - $r->print(' -
  -'); + $r->print('
'); my @available = (); my @unavailable = (); &check_tools($functions,$tools,\@available,\@unavailable); - &print_current_settings($r,$action,$tabcol,$rowColor1,$rowColor2, - $functions,$startdate,$enddate,$groupname, - $description,$granularity,$quota,\@available, - \@unavailable,$gpterm,$ucgpterm); - $r->print(' -
 
'); return; } @@ -2532,7 +2460,7 @@ sub choose_privs_form { } $r->print('
'); - &topic_bar($r,$tabcol,6,&mt('[_1] member privileges',$ucgpterm)); + &topic_bar($r,6,&mt('[_1] member privileges',$ucgpterm)); &member_privileges_form($r,$tabcol,$action,$formname,$tools,$toolprivs, $fixedprivs,$userdata,$usertools,$idx,undef, @@ -2875,6 +2803,22 @@ sub write_group_data { 'specificity','autoadd','autodrop','quota'); my @mult_attributes = ('roles','types','sectionpick','defpriv'); + my ($crsquota,$freespace,$maxposs) = &get_quota_constraints($action, + $stored); + my $quota = $env{'form.quota'}; + + $quota =~ s/^\s*([^\s]*)\s*$/$1/; + if ($quota eq '') { + $quota = 0; + } + if ($quota !~ /^\d*\.?\d*$/) { + $quota = 0; + $r->print(&mt('The value you entered for the quota for the file repository in this [_1] contained invalid characters, so it has been set to 0 Mb. You can change this by modifying the [_1] settings.
',$gpterm)); + } + if ($quota > $maxposs) { + $quota = $maxposs; + $r->print(&mt('The value you entered for the quota for the file repository in this [_1] exceeded the maximum possible value, so it has been set to [_2] Mb (the maximum possible value).
',$gpterm,$maxposs)); + } my %groupinfo = ( description => $esc_description, startdate => $startdate, @@ -2886,8 +2830,9 @@ sub write_group_data { specificity => $specificity, autoadd => $env{'form.autoadd'}, autodrop => $env{'form.autodrop'}, - quota => $env{'form.quota'}, + quota => $quota, ); + foreach my $func (keys(%{$functions})) { my $status; if (grep(/^$func$/,@{$tools})) { @@ -2938,7 +2883,7 @@ sub write_group_data { $description,$tools,\%groupinfo, $gpterm,$ucgpterm,$crstype); if ($result ne 'ok') { - $r->print(&mt('A problem occurred when creating folders for the new [_1]. [_2].',$gpterm,$result)); + $r->print(&mt('A problem occurred when creating folders for the new [_1]. [_2].
',$gpterm,$result)); } $r->print(&mt('[_1] [_2] was created.
',$ucgpterm,$groupname)); } else { @@ -2952,7 +2897,7 @@ sub write_group_data { &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]. '. + $r->print(&mt('An error occurred when [_1] the [_2]. '. 'Please try again.',$actiontype{$action},$gpterm)); } return $result; @@ -3072,17 +3017,6 @@ sub process_membership { my $start = $startdate; my $end = $enddate; if ($state eq 'memresult') { - if ($curr_privs{$user} eq $group_privs{$user}) { - push(@unchanged,$user); - next; - } - if (exists($curr_start{$user})) { - $start = $curr_start{$user}; - } - if (exists($curr_end{$user})) { - $end = $curr_end{$user}; - } - $type = 'modified'; if (@activate > 0) { if (grep/^$user$/,@activate) { $start = $now; @@ -3097,6 +3031,19 @@ sub process_membership { $type = 'reenabled'; } } + if ($type eq '') { + if ($curr_privs{$user} eq $group_privs{$user}) { + push(@unchanged,$user); + next; + } + if (exists($curr_start{$user})) { + $start = $curr_start{$user}; + } + if (exists($curr_end{$user})) { + $end = $curr_end{$user}; + } + $type = 'modified'; + } } else { $type = 'added'; } @@ -3205,7 +3152,7 @@ sub automapping { if (exists($$stored{'autodrop'})) { $drop = $$stored{'autodrop'}; } - &topic_bar($r,$tabcol,$image,$$lt{'endi'}); + &topic_bar($r,$image,$$lt{'endi'}); $r->print(' @@ -3259,7 +3206,7 @@ sub mapping_settings { unshift(@sections,'none'); # Put 'no sections' next unshift(@sections,'all'); # Put 'all' at the front of the list } - &topic_bar($r,$tabcol,$image,$$lt{'pirs'}); + &topic_bar($r,$image,$$lt{'pirs'}); $r->print(' @@ -3446,23 +3393,18 @@ sub date_setting_table { 'startdate',$starttime); my $endform = &Apache::lonhtmlcommon::date_setter($formname, 'enddate',$endtime); - my $perpetual = ''; - my $start_table = ''; - $start_table .= "
 
 
\n"; - $start_table .= ''. + my $perpetual = + ''; + my $table = "
Default starting date for - member access
\n". + ''. ''. - ''."\n"; - $start_table .= "
'.&mt('Start:').''.$startform.' 
"; - my $end_table = ''; - $end_table .= "\n"; - $end_table .= ''. + ''."\n". + ''. ''. - ''."\n"; - $end_table .= "
Default ending date for - member access 
'.&mt('End:').''.$endform.''.$perpetual.'
\n"; - return ($start_table, $end_table); + '
'.$perpetual.'
\n"; + return $table; } sub add_group_folder { @@ -3555,12 +3497,12 @@ sub map_updater { my $newmapurl=&Apache::lonnet::finishuserfileupload($cnum,$cdom,$itemname, $newfile); if ($newmapurl !~ m|^/uploaded|) { - $outcome = "Error uploading new folder ($newfile): $newmapurl"; + $outcome = &mt('Error uploading new folder.')." ($newfile): $newmapurl".'
'; return $outcome; } my ($errtext,$fatal)=&Apache::lonratedt::mapread($parentmap); if ($fatal) { - $outcome = "Error reading contents of parent folder ($parentmap): $errtext\n"; + $outcome = &mt('Error reading contents of parent folder')." ($parentmap): $errtext".'
'; return $outcome; } else { my $newidx=&Apache::lonratedt::getresidx($newmapurl); @@ -3569,7 +3511,7 @@ sub map_updater { $Apache::lonratedt::order[1+$#Apache::lonratedt::order]=$newidx; my ($outtext,$errtext) = &Apache::lonratedt::storemap($parentmap,1); if ($errtext) { - $outcome = "Error storing updated parent folder ($parentmap): $errtext\n"; + $outcome = &mt('Error storing updated parent folder')." ($parentmap): $errtext".'
'; return $outcome; } } @@ -3590,7 +3532,7 @@ sub new_map { sub parm_setter { my ($navmap,$cdom,$url,$groupname) = @_; - my %parmresult; + my $allresults; my %hide_settings = ( 'course' => { 'num' => 13, @@ -3605,15 +3547,18 @@ sub parm_setter { my $res = $navmap->getResourceByUrl($url); my $symb = $res->symb(); foreach my $level (keys(%hide_settings)) { - $parmresult{$level} = &Apache::lonparmset::storeparm_by_symb($symb, + my $parmresult = &Apache::lonparmset::storeparm_by_symb($symb, '0_hiddenresource', $hide_settings{$level}{'num'}, $hide_settings{$level}{'set'}, 'string_yesno',undef,$cdom, undef,undef, $hide_settings{$level}{'extra'}); + if ($parmresult) { + $allresults .= $level.': '.$parmresult; + } } - return %parmresult; + return $allresults; } sub create_homepage { @@ -3719,22 +3664,12 @@ sub validate_groupname { } sub topic_bar { - my ($r,$tabcol,$imgnum,$title) = @_; + my ($r,$imgnum,$title) = @_; $r->print(' - -   - - -   - - - '.$title.' - -   - - -   - +
+   + '.$title.' +
'); return; }