--- loncom/interface/loncoursegroups.pm 2006/07/02 12:46:06 1.35 +++ loncom/interface/loncoursegroups.pm 2006/07/07 20:53:40 1.46 @@ -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.46 2006/07/07 20:53:40 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -103,7 +103,7 @@ sub handler { } if ($action eq 'create' || $action eq 'modify' || $action eq 'view') { if ($view_permission || $manage_permission) { - &group_administration($r,$action,$state,$cdom,$cnum,$function, + &group_administration($r,$action,$state,$cdom,$cnum, $tabcol,\%functions,\%idx,$view_permission, $manage_permission,$rowColor1,$rowColor2, $gpterm,$ucgpterm,$crstype); @@ -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') { @@ -351,7 +348,7 @@ END } sub group_administration { - my ($r,$action,$state,$cdom,$cnum,$function,$tabcol,$functions,$idx, + my ($r,$action,$state,$cdom,$cnum,$tabcol,$functions,$idx, $view_permission,$manage_permission,$rowColor1,$rowColor2,$gpterm, $ucgpterm,$crstype) = @_; my %sectioncount = (); @@ -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,9 +867,9 @@ 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, + $view_permission,$manage_permission, \%stored,$granularity,$quota,$specificity,\@types,\@roles, \@sections,\%states,\%navbuttons,$rowColor1,$rowColor2, $gpterm,$ucgpterm,$crstype); @@ -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()); @@ -963,54 +962,50 @@ sub retrieve_settings { sub display_control { my ($r,$cdom,$cnum,$tabcol,$action,$state,$page,$sectioncount,$groupname, $description,$functions,$tools,$toolprivs,$fixedprivs,$startdate, - $enddate,$users,$userdata,$idx,$memchg,$usertools,$function, + $enddate,$users,$userdata,$idx,$memchg,$usertools, $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, + &general_settings_form($r,$cdom,$cnum,$action,$state,$page, $functions,$tools,$toolprivs,$fixedprivs, $sectioncount,$stored,$states,$navbuttons, - $rowColor1,$rowColor2,$gpterm,$ucgpterm, - $crstype); + $gpterm,$ucgpterm,$crstype); } elsif ($state eq 'pick_members') { - &choose_members_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, + &choose_members_form($r,$cdom,$cnum,$action,$state,$page, $groupname,$description,$granularity,$quota, $startdate,$enddate,$tools,$fixedprivs, $toolprivs,$functions,$users,$userdata,$idx, - $stored,$states,$navbuttons,$rowColor1, - $rowColor2,$gpterm,$ucgpterm,$crstype); + $stored,$states,$navbuttons,$gpterm,$ucgpterm, + $crstype); } elsif ($state eq 'pick_privs') { - &choose_privs_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, + &choose_privs_form($r,$cdom,$cnum,$action,$state,$page, $startdate,$enddate,$tools,$functions, $toolprivs,$fixedprivs,$userdata,$usertools, $idx,$states,$stored,$sectioncount,$navbuttons, - $rowColor1,$rowColor2,$gpterm,$ucgpterm, - $crstype); + $gpterm,$ucgpterm,$crstype); } elsif ($state eq 'result') { - &process_request($r,$cdom,$cnum,$tabcol,$action,$state,$page, + &process_request($r,$cdom,$cnum,$action,$state,$page, $groupname,$description,$specificity,$userdata, $startdate,$enddate,$tools,$functions, $toolprivs,$usertools,$idx,$types,$roles, $sections,$states,$navbuttons,$memchg, - $sectioncount,$stored,$rowColor1,$rowColor2, - $gpterm,$ucgpterm,$crstype); + $sectioncount,$stored,$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,$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') { - &general_settings_form($r,$cdom,$cnum,$action,$tabcol,$state,$page, + &general_settings_form($r,$cdom,$cnum,$action,$state,$page, $functions,$tools,$toolprivs,$fixedprivs, $sectioncount,$stored,$states,$navbuttons, - $rowColor1,$rowColor2,$gpterm,$ucgpterm, - $crstype); + $gpterm,$ucgpterm,$crstype); } elsif ($state eq 'change_members') { &change_members_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, $groupname,$description,$startdate,$enddate, @@ -1019,52 +1014,48 @@ sub display_control { $idx,$states,$navbuttons,$rowColor1,$rowColor2, $gpterm,$ucgpterm); } elsif ($state eq 'add_members') { - &add_members_form($r,$tabcol,$action,$state,$page,$startdate, + &add_members_form($r,$action,$state,$page,$startdate, $enddate,$groupname,$description,$granularity, $quota,$sectioncount,$tools,$functions,$stored, - $states,$navbuttons,$rowColor1,$rowColor2,$gpterm, - $ucgpterm); + $states,$navbuttons,$gpterm,$ucgpterm); } elsif ($state eq 'pick_members') { - &choose_members_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, + &choose_members_form($r,$cdom,$cnum,$action,$state,$page, $groupname,$description,$granularity,$quota, $startdate,$enddate,$tools,$fixedprivs, $toolprivs,$functions,$users,$userdata,$idx, - $stored,$states,$navbuttons,$rowColor1, - $rowColor2,$gpterm,$ucgpterm,$crstype); + $stored,$states,$navbuttons,$gpterm,$ucgpterm, + $crstype); } elsif ($state eq 'pick_privs') { - &choose_privs_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, + &choose_privs_form($r,$cdom,$cnum,$action,$state,$page, $startdate,$enddate,$tools,$functions, $toolprivs,$fixedprivs,$userdata,$usertools, $idx,$states,$stored,$sectioncount,$navbuttons, - $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype); + $gpterm,$ucgpterm,$crstype); } elsif ($state eq 'change_privs') { - &change_privs_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, + &change_privs_form($r,$cdom,$cnum,$action,$state,$page, $startdate,$enddate,$tools,$functions, $toolprivs,$fixedprivs,$userdata,$usertools, $memchg,$idx,$states,$stored,$sectioncount, - $navbuttons,$rowColor1,$rowColor2,$gpterm, - $ucgpterm); + $navbuttons,$gpterm,$ucgpterm); } elsif ($state eq 'chgresult' || $state eq 'memresult' || $state eq 'addresult') { - &process_request($r,$cdom,$cnum,$tabcol,$action,$state,$page, + &process_request($r,$cdom,$cnum,$action,$state,$page, $groupname,$description,$specificity,$userdata, $startdate,$enddate,$tools,$functions, $toolprivs,$usertools,$idx,$types,$roles, $sections,$states,$navbuttons,$memchg, - $sectioncount,$stored,$rowColor1,$rowColor2, - $gpterm,$ucgpterm,$crstype); + $sectioncount,$stored,$gpterm,$ucgpterm,$crstype); } } } 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
@@ -1180,56 +1171,38 @@ sub group_members { sub general_settings_form { - my ($r,$cdom,$cnum,$action,$tabcol,$formname,$page,$functions,$tools, + my ($r,$cdom,$cnum,$action,$formname,$page,$functions,$tools, $toolprivs,$fixedprivs,$sectioncount,$stored,$states,$navbuttons, - $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype) = @_; + $gpterm,$ucgpterm,$crstype) = @_; my ($nexttext,$prevtext); - $r->print('
- -'); - &groupsettings_options($r,$tabcol,$functions,$action,$formname,$stored,1, + &groupsettings_options($r,$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 = (); my @unavailable = (); &check_tools($functions,$tools,\@available,\@unavailable); @{$tools} = sort(keys(%{$functions})); - &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); + &privilege_specificity($r,$action,3,$tools,$stored,$toolprivs, + $fixedprivs,\@available,$formname, + $gpterm,$ucgpterm); + &mapping_options($r,$action,$formname,$page,$sectioncount, + $states,$stored,$navbuttons,4,5, + $gpterm,$ucgpterm,$crstype); $nexttext = $$navbuttons{'mose'}; } $prevtext = $$navbuttons{'gtpp'}; &display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext, $$states{$action}[$page+1],$nexttext); - $r->print(' -
 
 
 
'); return; } sub groupsettings_options { - my ($r,$tabcol,$functions,$action,$formname,$stored,$image,$gpterm, + my ($r,$functions,$action,$formname,$stored,$image,$gpterm, $ucgpterm,$crstype) = @_; my %lt = &Apache::lonlocal::texthash( 'gdat' => "$ucgpterm open and close dates", @@ -1242,20 +1215,12 @@ 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(' - -   - - +
- + - + - + END my $numitems = keys(%{$functions}); my $halfnum = int($numitems/2); @@ -1308,7 +1273,7 @@ END - + -
'.$lt{'gnam'}.':'.$lt{'gnam'}.': '); if ($action eq 'create') { @@ -1268,13 +1233,13 @@ sub groupsettings_options {
$lt{'desc'}:$lt{'desc'}:
$lt{'func'}:$lt{'func'}:
'.&mt('Granularity:').''.&mt('Granularity:').' '.$lt{'doyo'}.'  '); if ($action eq 'modify') { $r->print('  ('.&mt('Currently set to "[_1]"', @@ -1318,7 +1283,7 @@ END
'.&mt('Disk quota: ').''); + '.&mt('Disk quota: ').''); if ($action eq 'create') { $r->print(&mt('If you enable the file repository for the [_1], allocate a disk quota.',$gpterm)); } else { @@ -1342,14 +1307,28 @@ END
- - '); 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', @@ -1376,12 +1355,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 { @@ -1390,34 +1366,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; } @@ -1445,7 +1415,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", ); @@ -1457,29 +1427,19 @@ 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; } sub choose_members_form { - my ($r,$cdom,$cnum,$tabcol,$action,$formname,$page,$groupname,$description, + my ($r,$cdom,$cnum,$action,$formname,$page,$groupname,$description, $granularity,$quota,$startdate,$enddate,$tools,$fixedprivs,$toolprivs, $functions,$users,$userdata,$idx,$stored,$states,$navbuttons, - $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype) = @_; + $gpterm,$ucgpterm,$crstype) = @_; my @regexps = ('user_','userpriv_','sec_'); my %origmembers; $r->print(&Apache::lonhtmlcommon::echo_form_input( @@ -1488,17 +1448,10 @@ sub choose_members_form { \@regexps)); my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum,$gpterm, $ucgpterm,$crstype); - $r->print(' - - - - '); + $r->print($earlyout) &display_navbuttons($r,$formname,$$states{$action}[$page-1], $$navbuttons{'gtps'}); - $r->print('
  -'); if ($earlyout) { - $r->print($earlyout.'
'); return; } my ($specimg,$memimg); @@ -1506,10 +1459,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 { @@ -1529,13 +1481,12 @@ sub choose_members_form { } } } - &privilege_specificity($r,$tabcol,$rowColor1,$rowColor2,$action, - $specimg,$tools,$stored,$toolprivs, + &privilege_specificity($r,$action,$specimg,$tools,$stored,$toolprivs, $fixedprivs,\@available,$formname,$gpterm,$ucgpterm); - my $newusers = &pick_new_members($r,$action,$formname,$tabcol,$rowColor1, - $rowColor2,\@available,$idx,$stored, - $memimg,$users,$userdata,$granularity, - \%origmembers,$gpterm,$ucgpterm); + my $newusers = &pick_new_members($r,$action,$formname,\@available,$idx, + $stored,$memimg,$users,$userdata, + $granularity,\%origmembers,$gpterm, + $ucgpterm); if ($newusers || $action eq 'create') { &display_navbuttons($r,$formname,$$states{$action}[$page-1], $$navbuttons{'gtps'},$$states{$action}[$page+1], @@ -1544,19 +1495,12 @@ 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(' - -   - - -   - '); + $r->print('
'); if ($prev) { $r->print(' '); } - $r->print(' - - -'); + $r->print('
'); } sub check_tools { @@ -1587,9 +1528,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", @@ -1611,36 +1551,31 @@ sub print_current_settings { } else { $showend = &Apache::lonlocal::locallocaltime($enddate); } - $r->print(''); if ($action eq 'create') { $r->print(' - - -'); +'); } - $r->print(' - - - - - - - - - - @@ -2362,8 +2133,8 @@ sub current_membership { - - - - + + - END - &member_privs_entries($r,$tabcol,$rowColor1,$rowColor2, - $usertools,$toolprivs,$fixedprivs, + $r->print(&Apache::loncommon::end_data_table_header_row()); + &member_privs_entries($r,$usertools,$toolprivs,$fixedprivs, $userdata,$idx,\@showtools,\@defprivs, \@excluded); - $r->print(''); - $r->print(&Apache::lonhtmlcommon::end_pick_box()); - $r->print(' - - - -'); + $r->print(&Apache::loncommon::end_data_table()); } else { - $r->print(' - - '); - &mapping_settings($r,$tabcol,$rowColor1,$rowColor2,$sectioncount,\%lt, - $stored,$img2,$crstype); + &automapping($r,$action,$stored,\%lt,$img1); + &mapping_settings($r,$sectioncount,\%lt,$stored,$img2,$crstype); return; } sub automapping { - my ($r,$action,$tabcol,$stored,$lt,$image) = @_; + my ($r,$action,$stored,$lt,$image) = @_; my $add = 'off'; my $drop = 'off'; if (exists($$stored{'autoadd'})) { @@ -3325,78 +3065,44 @@ sub automapping { if (exists($$stored{'autodrop'})) { $drop = $$stored{'autodrop'}; } - &topic_bar($r,$tabcol,$image,$$lt{'endi'}); + &topic_bar($r,$image,$$lt{'endi'}); $r->print(' - - - - - - - - - - - - - - - - - - - - - - -'); + $r->print('

'.$$lt{'mapr'}); } sub mapping_settings { - my ($r,$tabcol,$rowColor1,$rowColor2,$sectioncount,$lt,$stored,$image, - $crstype) = @_; + my ($r,$sectioncount,$lt,$stored,$image,$crstype) = @_; my @sections = keys(%{$sectioncount}); 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 } - &topic_bar($r,$tabcol,$image,$$lt{'pirs'}); - $r->print(' - - - '); if (@sections > 0) { - $r->print(''."\n"); + $r->print(''); } - my $rowNum = 0; - my $rowColor; + $r->print(&Apache::loncommon::end_data_table_header_row()."\n"); foreach my $role (@roles) { my $plrole=&Apache::lonnet::plaintext($role,$crstype); my $sections_sel; @@ -3411,33 +3117,25 @@ sub mapping_settings { ''; } } - if ($rowNum %2 == 1) { - $rowColor = $rowColor1; - } else { - $rowColor = $rowColor2; - } - $r->print(''.$sections_sel.''); - $rowNum ++; + $r->print(&Apache::loncommon::start_data_table_row(). + ''.$sections_sel. + &Apache::loncommon::end_data_table_row()); } foreach my $role (sort(keys(%customroles))) { my $sections_sel; if (@sections > 0) { - $sections_sel = ''; + $sections_sel = + ''; } - if ($rowNum %2 == 1) { - $rowColor = $rowColor1; - } else { - $rowColor = $rowColor2; - } - $r->print(''. - $sections_sel.''); - $rowNum ++; + $r->print(&Apache::loncommon::start_data_table_row(). + ''. + $sections_sel. + &Apache::loncommon::end_data_table_row()); } - $r->print(&Apache::lonhtmlcommon::end_pick_box()); + $r->print(&Apache::loncommon::end_data_table()); return; } @@ -3494,10 +3192,8 @@ sub modify_menu { } sub member_privs_entries { - my ($r,$tabcol,$rowColor1,$rowColor2,$usertools,$toolprivs, - $fixedprivs,$userdata,$idx,$showtools,$defprivs,$excluded) = @_; - my $rowColor; - my $rowNum = 0; + my ($r,$usertools,$toolprivs,$fixedprivs,$userdata,$idx,$showtools, + $defprivs,$excluded) = @_; foreach my $user (sort(keys(%{$usertools}))) { if (defined($excluded)) { if (ref($excluded) eq 'ARRAY') { @@ -3507,19 +3203,14 @@ sub member_privs_entries { } } my ($uname,$udom) = split(/:/,$user); - if ($rowNum %2 == 1) { - $rowColor = $rowColor1; - } else { - $rowColor = $rowColor2; - } - $r->print(' + $r->print(&Apache::loncommon::start_data_table_row().' '); foreach my $tool (@{$showtools}) { if (exists($$usertools{$user}{$tool})) { - $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++) { @@ -1649,8 +1584,8 @@ sub print_current_settings { $r->print(''); } } - $r->print(''); + $r->print(''); } if ((@{$available} > 3) && (@{$available}%2)) { $r->print(''); @@ -1658,7 +1593,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++) { @@ -1667,8 +1602,8 @@ sub print_current_settings { $r->print(''); } } - $r->print(''); + $r->print(''); } if ((@{$unavailable} > 3) && (@{$unavailable}%2)) { $r->print(''); @@ -1677,26 +1612,20 @@ 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; } sub pick_new_members { - my ($r,$action,$formname,$tabcol,$rowColor1,$rowColor2,$available,$idx, - $stored,$img,$users,$userdata,$granularity,$origmembers,$gpterm, - $ucgpterm) = @_; + my ($r,$action,$formname,$available,$idx,$stored,$img,$users,$userdata, + $granularity,$origmembers,$gpterm,$ucgpterm) = @_; my %lt = &Apache::lonlocal::texthash( 'gpme' => "$ucgpterm membership", 'addm' => 'Add members', @@ -1732,12 +1661,9 @@ 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(' -
  '); &check_uncheck_buttons($r,$formname,'member',$lt{'addm'}); @@ -1752,42 +1678,32 @@ sub pick_new_members { '); } $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(' - - - - - - - - + '); + $r->print(''); } - $r->print(''); + $r->print(&Apache::loncommon::end_data_table_header_row()); if (@{$available} > 0) { if ($granularity eq 'Yes') { - $r->print(' + $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense LC_data_table_highlight').' - '); + $r->print(''); } } my %Sortby = (); @@ -1806,27 +1722,22 @@ sub pick_new_members { push(@{$Sortby{$members{$user}[$$idx{fullname}]}},$user); } } - my $rowNum = 0; - my $rowColor; foreach my $key (sort(keys(%Sortby))) { foreach my $user (@{$Sortby{$key}}) { - if ($rowNum %2 == 1) { - $rowColor = $rowColor1; - } else { - $rowColor = $rowColor2; - } my $id = $members{$user}[$$idx{id}]; my $fullname = $members{$user}[$$idx{fullname}]; my $udom = $members{$user}[$$idx{udom}]; my $uname = $members{$user}[$$idx{uname}]; my $section = $members{$user}[$$idx{section}]; - $r->print(''. - ''); + $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense'). + ''. + ''. + ''. + ''. + ''. + ''); if (@{$available} > 0) { - $r->print(''); + $r->print(''); } - $r->print(''."\n"); - $rowNum ++; + $r->print(&Apache::loncommon::end_data_table_row()."\n"); } } - $r->print(&Apache::lonhtmlcommon::end_pick_box()); - $r->print(' - - '); + $r->print(&Apache::loncommon::end_data_table()); } else { - $r->print(' - - - - '); } return $newusers; } sub privilege_specificity { - my ($r,$tabcol,$rowColor1,$rowColor2,$action,$img,$tools,$stored, - $toolprivs,$fixedprivs,$available,$formname,$gpterm,$ucgpterm) = @_; + my ($r,$action,$img,$tools,$stored,$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, '. @@ -1908,12 +1807,7 @@ sub privilege_specificity { } } } - &topic_bar($r,$tabcol,$img,$lt{'uprv'}); - $r->print(' - - - - - - - '); +

+
+'); } else { $r->print(''); } if ($totaloptionalprivs) { - $r->print(' - - - - - - - - - - - - -'); return; } sub default_privileges { - my ($r,$action,$tabcol,$rowColor1,$rowColor2,$tools,$toolprivs, - $fixedprivs,$available) = @_; + my ($r,$action,$tools,$toolprivs,$fixedprivs,$available) = @_; my %lt = &Apache::lonlocal::texthash( 'addp' => 'Additional privileges', 'fixp' => 'Fixed privileges', 'oppr' => 'Optional privileges', 'func' => 'Function', ); - $r->print(&Apache::lonhtmlcommon::start_pick_box()); - $r->print(' - - '); + $r->print(&Apache::lonhtmlcommon::start_pick_box('LC_group_priv_box'). + &Apache::lonhtmlcommon::row_title($lt{'func'},undef, + 'LC_groups_functionality')); + $r->print(join(''."\n"); - $r->print(&Apache::lonhtmlcommon::end_pick_box()); + $r->print(&Apache::lonhtmlcommon::row_title($lt{'fixp'},undef, + 'LC_groups_fixed'). + $fixed. + &Apache::lonhtmlcommon::row_closure(1)); + $r->print(&Apache::lonhtmlcommon::row_title($lt{'oppr'},undef, + 'LC_groups_optional'). + $dynamic. + &Apache::lonhtmlcommon::end_pick_box()); $r->print('
'); return; + } sub display_defprivs { - my ($r,$tabcol,$rowColor1,$rowColor2,$tools,$toolprivs,$defprivs) = @_; + my ($r,$tools,$toolprivs,$defprivs) = @_; + my $function = &Apache::loncommon::get_users_function(); + my $tabcol = &Apache::loncommon::designparm($function.'.tabbg'); + my $rowColor1 = "#dddddd"; + my $rowColor2 = "#eeeeee"; my %lt = &Apache::lonlocal::texthash( 'priv' => 'Privileges', 'func' => 'Function', @@ -2101,7 +1969,7 @@ sub display_defprivs { @{$currprivs{$tool}} = (); foreach my $priv (sort(keys(%{$$toolprivs{$tool}}))) { if (ref($defprivs) eq 'ARRAY') { - if (grep/^\Q$priv\E$/,@{$defprivs}) { + if (grep(/^\Q$priv\E$/,@{$defprivs})) { push(@{$currprivs{$tool}},$priv); } } @@ -2178,33 +2046,17 @@ sub change_members_form { my $prevtext = $$navbuttons{'gtpp'}; $r->print('
-
'.&mt('Add?').''.&mt('Name').''.&mt('Username').' - '.&mt('Domain').'IDSection'.&mt('Add?').' + '.&mt('Name').' + '.&mt('Username').' + '.&mt('Domain').' + '.&mt('ID').' + '.&mt('Section').' '); if (@{$available} > 0) { - $r->print(''.$lt{'func'}.''.$lt{'func'}.'
 '.&mt('All:').' '); + '.&mt('All:').' '); foreach my $tool (@{$available}) { $r->print('   '); } - $r->print('
- '. - $fullname.''.$uname.''. - $udom.''.$id.''.$section.''.$fullname.''.$uname.''.$udom.''.$id.''.$section.''. + $r->print(''. '       '); foreach my $tool (@{$available}) { if ($granularity eq 'Yes') { @@ -1837,37 +1748,25 @@ sub pick_new_members { $tool.'" value="'.$user.'" />'.$tool.'   '); } } - $r->print('
  -'); if ($totalusers > 0) { $r->print($lt{'nnew'}.'

'.$lt{'yoma'}); } else { $r->print($lt{'nome'}); } - $r->print(' -
  - '); + &topic_bar($r,$img,$lt{'uprv'}); if ((($action eq 'create') && (@{$available} > 0)) || (($action eq 'modify') && ($formname eq 'change_settings'))) { my %specific = ( @@ -1939,21 +1833,14 @@ sub privilege_specificity { } if ($totaloptionalprivs) { $r->print(' -


- -
 
 '.$lt{'plin'}); + $r->print($lt{'plin'}); if ($action eq 'create') { $r->print(' '.$lt{'thwi'}); } @@ -1964,27 +1851,18 @@ 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); + &default_privileges($r,$action,$tools,$toolprivs,$fixedprivs, + $available); } else { if ($action eq 'create') { $r->print($lt{'asyo'}); @@ -2000,95 +1878,85 @@ sub privilege_specificity { $r->print($lt{'sall'}); } $r->print(' '.$lt{'defp'}.'

'); - &display_defprivs($r,$tabcol,$rowColor1,$rowColor2,$tools, - $toolprivs,\@defprivs); + &display_defprivs($r,$tools,$toolprivs,\@defprivs); } } - $r->print(' -
- - - - - - - - - - -
'.$lt{'func'}.'
'.$lt{'fixp'}.'
'.$lt{'oppr'}.'
-
',@{$tools})); + $r->print(&Apache::lonhtmlcommon::row_closure(1)); + my $fixed = ''; + my $dynamic = ''; foreach my $tool (@{$tools}) { - $r->print(' - - - - - '); my $privcount = 0; - my $fixed = ''; - my $dynamic = ''; + if ($dynamic ne '') { + $dynamic .= ' - '); + $dynamic .= '
'.$tool.'
'; + } + $dynamic .= ''; foreach my $priv (sort(keys(%{$$toolprivs{$tool}}))) { if (exists($$fixedprivs{$tool}{$priv})) { + if ($fixed ne '') { + $fixed .= ' - '."\n"; + '."\n"; } $dynamic .= ''."\n"; } } - if ($dynamic eq '') { - $dynamic = ''."\n"; + if ($privcount == 0) { + $dynamic .= ''."\n"; } if ($privcount < 3) { - $dynamic .= ' - - '."\n"; + $dynamic .= ' + '."\n"; } elsif ($privcount%2) { $dynamic = ''."\n"; } - $r->print(' - - - '."\n".$dynamic.''."\n".'
'; + } $fixed .= ''.$$toolprivs{$tool}{$priv}.' '; if ($action eq 'modify') { - if (grep/^$tool$/,@{$available}) { + if (grep(/^$tool$/,@{$available})) { $fixed .= ''.&mt('(on)').' '; } else { $fixed .= ''.&mt('(off)').' '; } } } else { - $privcount ++; + $privcount++; if ($privcount == 3) { $dynamic .= '
NoneNone
   
'.$fixed.'
'."\n".'
'; } - $r->print('
-'); - &topic_bar($r,$tabcol,1,$lt{'grse'}); - $r->print(' - - - '); - &topic_bar($r,$tabcol,2,$lt{'mogm'}); - $r->print(' - - - '); &display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext, $$states{$action}[$page+1],$nexttext); - $r->print('
  -'); - &print_current_settings($r,$action,$tabcol,$rowColor1,$rowColor2, - $functions,$startdate,$enddate,$groupname, - $description,$granularity,$quota,\@available, - \@unavailable,$gpterm,$ucgpterm); -$r->print(' -
 
  '); + &topic_bar($r,1,$lt{'grse'}); + &print_current_settings($r,$action,$functions,$startdate,$enddate, + $groupname,$description,$granularity,$quota, + \@available,\@unavailable,$gpterm,$ucgpterm); + &topic_bar($r,2,$lt{'mogm'}); ¤t_membership($r,$cdom,$cnum,$formname,$tabcol,$rowColor1, $rowColor2,$groupname,\@available,\@unavailable, $fixedprivs,$granularity,$specificity); - $r->print('
'); return; } @@ -2227,114 +2079,33 @@ sub current_membership { 'curf' => 'Current Functionality', 'chpr' => 'Change Privileges' ); - if (keys(%membership) > 0) { - my %current = (); - my %allnames = (); - my $hastools = 0; - my $addtools = 0; - my $num_reenable = 0; - my $num_activate = 0; - my $num_expire = 0; - foreach my $key (sort(keys(%membership))) { - if ($key =~ /^\Q$groupname\E:([^:]+):([^:]+)$/) { - my $uname = $1; - my $udom = $2; - my $user = $uname.':'.$udom; - my($end,$start,@userprivs) = split(/:/,$membership{$key}); - unless ($start == -1) { - $allnames{$udom}{$uname} = 1; - $current{$user} = { - uname => $uname, - udom => $udom, - start => &Apache::lonlocal::locallocaltime($start), - currtools => [], - newtools => [], - }; - - if ($end == 0) { - $current{$user}{end} = 'No end date'; - } else { - $current{$user}{end} = - &Apache::lonlocal::locallocaltime($end); - } - my $now = time; - if (($end > 0) && ($end < $now)) { - $current{$user}{changestate} = 'reenable'; - $num_reenable++; - } elsif (($start > $now)) { - $current{$user}{changestate} = 'activate'; - $num_activate ++; - } else { - $current{$user}{changestate} = 'expire'; - $num_expire ++; - } - if (@userprivs > 0) { - foreach my $tool (sort(keys(%{$fixedprivs}))) { - foreach my $priv (keys(%{$$fixedprivs{$tool}})) { - if (grep/^$priv$/,@userprivs) { - push(@{$current{$user}{currtools}},$tool); - last; - } - } - } - $hastools = 1; - } - if (@{$available} > 0) { - if (@{$current{$user}{currtools}} > 0) { - if ("@{$available}" ne "@{$current{$user}{currtools}}") { - foreach my $tool (@{$available}) { - unless (grep/^$tool$/,@{$current{$user}{currtools}}) { - push(@{$current{$user}{newtools}},$tool); - } - } - } - } else { - @{$current{$user}{newtools}} = @{$available}; - } - if (@{$current{$user}{newtools}} > 0) { - $addtools = 1; - } - } - } - } - } - if (keys(%current) > 0) { - my %idhash; - foreach my $udom (keys(%allnames)) { - %{$idhash{$udom}} = &Apache::lonnet::idrget($udom, - keys(%{$allnames{$udom}})); - foreach my $uname (keys(%{$idhash{$udom}})) { - $current{$uname.':'.$udom}{'id'} = $idhash{$udom}{$uname}; - } - foreach my $uname (keys(%{$allnames{$udom}})) { - $current{$uname.':'.$udom}{'fullname'} = - &Apache::loncommon::plainname($uname,$udom, - 'lastname'); - } - } - $r->print(' + my ($current,$hastools,$addtools,$num_reenable,$num_activate,$num_expire) = + &Apache::longroup::group_memberlist($cdom,$cnum,$groupname,$fixedprivs, + $available); + if (keys(%{$current}) > 0) { + $r->print('
  '); - if ($num_expire) { - &check_uncheck_buttons($r,$formname,'expire',$lt{'expi'}); - } - if ($num_reenable) { - &check_uncheck_buttons($r,$formname,'reenable',$lt{'reen'}); - } - if ($num_activate) { - &check_uncheck_buttons($r,$formname,'activate',$lt{'acti'}); + if ($num_expire) { + &check_uncheck_buttons($r,$formname,'expire',$lt{'expi'}); + } + if ($num_reenable) { + &check_uncheck_buttons($r,$formname,'reenable',$lt{'reen'}); + } + if ($num_activate) { + &check_uncheck_buttons($r,$formname,'activate',$lt{'acti'}); + } + &check_uncheck_buttons($r,$formname,'deletion',$lt{'dele'}); + if (@{$available} > 0) { + if ($specificity eq 'Yes') { + &check_uncheck_buttons($r,$formname,'changepriv',$lt{'chpr'}); } - &check_uncheck_buttons($r,$formname,'deletion',$lt{'dele'}); - if (@{$available} > 0) { - if ($specificity eq 'Yes') { - &check_uncheck_buttons($r,$formname,'changepriv',$lt{'chpr'}); - } - if ($granularity eq 'Yes') { - $r->print(&check_uncheck_tools($r,$available)); - $r->print(' + if ($granularity eq 'Yes') { + $r->print(&check_uncheck_tools($r,$available)); + $r->print(' '); - } } - $r->print(<<"END"); + } + $r->print(<<"END");
'.$lt{'curf'}.' @@ -2347,9 +2118,9 @@ sub current_membership {
  END - $r->print(&Apache::lonhtmlcommon::start_pick_box()); - $r->print(<<"END"); + $r->print(&Apache::lonhtmlcommon::start_pick_box()); + $r->print(<<"END"); @@ -2375,135 +2146,134 @@ END END - my $colspan = 0; - if ($hastools) { - $r->print(''); - $colspan ++; - } - if ($addtools) { - $r->print(''); - $colspan ++; - } - $r->print(''); - if ($colspan) { - if ($granularity eq 'Yes') { - $r->print(' + my $colspan = 0; + if ($hastools) { + $r->print(''); + $colspan ++; + } + if ($addtools) { + $r->print(''); + $colspan ++; + } + $r->print(''); + if ($colspan) { + if ($granularity eq 'Yes') { + $r->print(''); } + $r->print(''); } - my %Sortby = (); - foreach my $user (sort(keys(%current))) { - if ($env{'form.sortby'} eq 'fullname') { - push(@{$Sortby{$current{$user}{fullname}}},$user); - } elsif ($env{'form.sortby'} eq 'username') { - push(@{$Sortby{$current{$user}{uname}}},$user); - } elsif ($env{'form.sortby'} eq 'domain') { - push(@{$Sortby{$current{$user}{udom}}},$user); - } elsif ($env{'form.sortby'} eq 'id') { - push(@{$Sortby{$current{$user}{id}}},$user); + } + my %Sortby = (); + foreach my $user (sort(keys(%{$current}))) { + if ($env{'form.sortby'} eq 'fullname') { + push(@{$Sortby{$$current{$user}{fullname}}},$user); + } elsif ($env{'form.sortby'} eq 'username') { + push(@{$Sortby{$$current{$user}{uname}}},$user); + } elsif ($env{'form.sortby'} eq 'domain') { + push(@{$Sortby{$$current{$user}{udom}}},$user); + } elsif ($env{'form.sortby'} eq 'id') { + push(@{$Sortby{$$current{$user}{id}}},$user); + } else { + push(@{$Sortby{$$current{$user}{fullname}}},$user); + } + } + my $rowNum = 0; + my $rowColor; + foreach my $key (sort(keys(%Sortby))) { + foreach my $user (@{$Sortby{$key}}) { + if ($rowNum %2 == 1) { + $rowColor = $rowColor1; } else { - push(@{$Sortby{$current{$user}{fullname}}},$user); + $rowColor = $rowColor2; } - } - my $rowNum = 0; - my $rowColor; - foreach my $key (sort(keys(%Sortby))) { - foreach my $user (@{$Sortby{$key}}) { - if ($rowNum %2 == 1) { - $rowColor = $rowColor1; - } else { - $rowColor = $rowColor2; - } - my $id = $current{$user}{id}; - my $fullname = $current{$user}{fullname}; - my $udom = $current{$user}{udom}; - my $uname = $current{$user}{uname}; - my $start = $current{$user}{start}; - my $end = $current{$user}{end}; - $r->print(' - + '); - if ($hastools) { - $r->print(''); + } + $r->print('   '); } - if ($addtools) { - $r->print(''); + } + if ($addtools) { + $r->print(''); } - $r->print(''."\n"); - $rowNum ++; + $r->print(''); } + $r->print(''."\n"); + $rowNum ++; } - $r->print(&Apache::lonhtmlcommon::end_pick_box()); - $r->print(' + } + $r->print(&Apache::lonhtmlcommon::end_pick_box()); + $r->print(' '); - } } return; } @@ -2528,10 +2298,10 @@ sub check_uncheck_buttons { sub change_privs_form { - my ($r,$cdom,$cnum,$tabcol,$action,$formname,$page,$startdate,$enddate, - $tools,$functions,$toolprivs,$fixedprivs,$userdata,$usertools, - $memchg,$idx,$states,$stored,$sectioncount,$navbuttons,$rowColor1, - $rowColor2,$gpterm,$ucgpterm) = @_; + my ($r,$cdom,$cnum,$action,$formname,$page,$startdate,$enddate, + $tools,$functions,$toolprivs,$fixedprivs,$userdata,$usertools, + $memchg,$idx,$states,$stored,$sectioncount,$navbuttons,$gpterm, + $ucgpterm) = @_; my @regexps = ('userpriv_'); my $nexttext; my %lt = &Apache::lonlocal::texthash( @@ -2546,8 +2316,7 @@ sub change_privs_form { } else { $nexttext = $$navbuttons{'mose'}; } - $r->print('
$lt{'actn'}$lt{'stda'} $lt{'enda'}'.$lt{'curf'}.'Additional Functionality
'.$lt{'curf'}.'Additional Functionality
  '.&mt('All:'). ' '); - foreach my $tool (@{$available}) { - $r->print('
'); - if ($current{$user}{changestate} eq 'reenable') { - $r->print('
'); + if ($$current{$user}{changestate} eq 'reenable') { + $r->print('
'); - } elsif ($current{$user}{changestate} eq 'expire') { - $r->print('
'); - } elsif ($current{$user}{changestate} eq 'activate') { - $r->print('
'); - } - $r->print(''); - if ($specificity eq 'Yes') { - $r->print('
'); - } - $r->print(' + } + $r->print('
'. $fullname.''.$uname.''. $udom.''.$id.''.$start. ''.$end.''. + if ($hastools) { + $r->print(''. '      '); - foreach my $tool (@{$current{$user}{currtools}}) { - if ($granularity eq 'Yes') { - $r->print(''); - if ($granularity eq 'Yes') { - foreach my $tool (@{$current{$user}{newtools}}) { - $r->print(''); + if ($granularity eq 'Yes') { + foreach my $tool (@{$$current{$user}{newtools}}) { + $r->print('   '); - } - } else { - foreach my $tool (@{$current{$user}{newtools}}) { - $r->print('print(''.$tool. '   '); - } } - $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) { @@ -2556,7 +2325,7 @@ sub change_privs_form { $r->print('
  • '.$$userdata{$user}[$$idx{fullname}]. ' ('.$user.')
  • '); } - $r->print(''); + $r->print(''); $exp_or_del += @{$$memchg{'deletion'}}; } } @@ -2567,23 +2336,20 @@ sub change_privs_form { $r->print('
  • '.$$userdata{$user}[$$idx{fullname}]. ' ('.$user.')
  • '); } - $r->print(''); + $r->print(''); $exp_or_del += @{$$memchg{'expire'}}; } } if (!$exp_or_del) { - $r->print(''); + $r->print($lt{'nome'}.'
    '); } - &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, + my $numchgs = &member_privileges_form($r,$action,$formname,$tools, $toolprivs,$fixedprivs,$userdata, $usertools,$idx,$memchg,$states, - $stored,$rowColor1,$rowColor2, - $gpterm); - $r->print(''); + $stored,$gpterm); my $prevtext = $$navbuttons{'gtps'}; if ($numchgs || $exp_or_del) { &display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext, @@ -2591,50 +2357,33 @@ sub change_privs_form { } else { &display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext); } - $r->print('
     
     
     '.$lt{'nome'}. - '
     
     
    '); return; } sub add_members_form { - my ($r,$tabcol,$action,$formname,$page,$startdate,$enddate,$groupname, + my ($r,$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(' -
      -'); + $stored,$states,$navbuttons,$gpterm,$ucgpterm)=@_; + $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; } 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, - $gpterm,$ucgpterm,$crstype) = @_; + my ($r,$cdom,$cnum,$action,$formname,$page,$startdate,$enddate, + $tools,$functions,$toolprivs,$fixedprivs,$userdata,$usertools,$idx, + $states,$stored,$sectioncount,$navbuttons,$gpterm,$ucgpterm, + $crstype) = @_; my @regexps = ('userpriv_'); my $nexttext; @@ -2651,27 +2400,24 @@ sub choose_privs_form { $nexttext = $$navbuttons{'adme'}; } - $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, + &member_privileges_form($r,$action,$formname,$tools,$toolprivs, $fixedprivs,$userdata,$usertools,$idx,undef, - $states,$stored,$rowColor1,$rowColor2,$gpterm); + $states,$stored,$gpterm); - $r->print(''); if ($action eq 'create') { if (keys(%{$sectioncount}) > 0) { my $img1 = 7; my $img2 = 8; - &mapping_options($r,$action,$formname,$page,$tabcol,$sectioncount, + &mapping_options($r,$action,$formname,$page,$sectioncount, $states,$stored,$navbuttons,$img1,$img2, - $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype); + $gpterm,$ucgpterm,$crstype); } } my $prevtext = $$navbuttons{'gtps'}; &display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext, $$states{$action}[$page+1],$nexttext); - $r->print('
     
    '); return; } @@ -2734,9 +2480,8 @@ function uncheckAllTools(formname) { } sub member_privileges_form { - my ($r,$tabcol,$action,$formname,$tools,$toolprivs,$fixedprivs,$userdata, - $usertools,$idx,$memchg,$states,$stored,$rowColor1,$rowColor2, - $gpterm) = @_; + my ($r,$action,$formname,$tools,$toolprivs,$fixedprivs,$userdata, + $usertools,$idx,$memchg,$states,$stored,$gpterm) = @_; my %lt = &Apache::lonlocal::texthash( 'addp' => 'Additional privileges', 'fixp' => 'Fixed privileges', @@ -2797,7 +2542,7 @@ sub member_privileges_form { } $numchgs = @currmembers; if (!$numchgs) { - $r->print('
     '.$lt{'nogm'}); + $r->print($lt{'nogm'}); return $numchgs; } } @@ -2813,17 +2558,14 @@ sub member_privileges_form { my %total; if (keys(%{$usertools}) > 1) { $r->print(' -
      - +
    '); foreach my $tool (@{$tools}) { if (@{$showboxes{$tool}} > 0) { $r->print(''); - $r->print(''); + $r->print('
    '); - $r->print(''); } } - $r->print('
    '. + $r->print(''. + ''); my $privcount = 0; foreach my $priv (@{$showboxes{$tool}}) { @@ -2861,59 +2603,44 @@ sub member_privileges_form { $r->print('
    '. $tool.'
     
     
    '); } - $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{'full'}$lt{'user'}$lt{'full'}$lt{'user'} $lt{'doma'} $lt{'addp'}
     
     '.$lt{'forf'}. - '
    '); - &display_defprivs($r,$tabcol,$rowColor1,$rowColor2,$tools, - $toolprivs,\@defprivs); + $r->print($lt{'forf'}.'
    '); + &display_defprivs($r,$tools,$toolprivs,\@defprivs); } } else { if (keys(%{$usertools}) > 0) { - $r->print('
     '.$lt{'algr'}. - '

    '); - &display_defprivs($r,$tabcol,$rowColor1,$rowColor2,$tools, - $toolprivs,\@defprivs); + $r->print($lt{'algr'}.'

    '); + &display_defprivs($r,$tools,$toolprivs,\@defprivs); } else { - $r->print('
     '.$lt{'asno'}. - '
    '); + $r->print($lt{'asno'}.'
    '); } } } else { - $r->print('
     '.$lt{'asng'}); + $r->print($lt{'asng'}); } return $numchgs; } sub process_request { - my ($r,$cdom,$cnum,$tabcol,$action,$state,$page,$groupname,$description, + my ($r,$cdom,$cnum,$action,$state,$page,$groupname,$description, $specificity,$userdata,$startdate,$enddate,$tools,$functions,$toolprivs, $usertools,$idx,$types,$roles,$sections,$states,$navbuttons,$memchg, - $sectioncount,$stored,$rowColor1,$rowColor2,$gpterm,$ucgpterm, - $crstype) = @_; + $sectioncount,$stored,$gpterm,$ucgpterm,$crstype) = @_; $r->print(&Apache::lonhtmlcommon::echo_form_input( ['origin','action','state','page','sortby'])); @@ -2995,6 +2722,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, @@ -3006,8 +2749,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})) { @@ -3058,7 +2802,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 { @@ -3072,7 +2816,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; @@ -3192,17 +2936,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; @@ -3217,6 +2950,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'; } @@ -3287,9 +3033,8 @@ sub process_membership { } sub mapping_options { - my ($r,$action,$formname,$page,$tabcol,$sectioncount,$states,$stored, - $navbuttons,$img1,$img2,$rowColor1,$rowColor2,$gpterm,$ucgpterm, - $crstype) = @_; + my ($r,$action,$formname,$page,$sectioncount,$states,$stored, + $navbuttons,$img1,$img2,$gpterm,$ucgpterm,$crstype) = @_; my %lt = &Apache::lonlocal::texthash( 'auto' => "Settings for automatic $gpterm enrollment", 'gmma' => "$ucgpterm membership mapping to specific sections/roles", @@ -3305,18 +3050,13 @@ sub mapping_options { '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(' -
     
      - '.$$lt{'gmma'}.':
    '.$$lt{'adds'}.'
    '.$$lt{'drops'}.'
    -
     
      + '.$$lt{'gmma'}.':
    '.$$lt{'adds'}.'
    '.$$lt{'drops'}.'

    '.$$lt{'auad'}.':  '); if ($action eq 'modify') { $r->print('    ('.$$lt{'curr'}.' '.$$lt{$add}.')'); } $r->print(' - -
      +
    '.$$lt{'auex'}.':  '); if ($action eq 'modify') { $r->print('    ('.$$lt{'curr'}.' '.$$lt{$drop}.')'); } - $r->print(' -
     
     '.$$lt{'mapr'}.' -
      -'); + &topic_bar($r,$image,$$lt{'pirs'}); my @roles = &standard_roles(); my %customroles = &my_custom_roles(); - $r->print(&Apache::lonhtmlcommon::start_pick_box()); + $r->print(&Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row()); $r->print(' -
    '.&mt('Active?').' '.&mt('Role').''.&mt('Sections').'
    '.&mt('Sections').'
    '.$plrole. - '
    '.$plrole. + ''.§ions_selection(\@sections,'sec_'.$role). - ''.§ions_selection(\@sections,'sec_'.$role).'
    '.$role.'
    '.$role.'
    '.$$userdata{$user}[$$idx{fullname}].' '.$uname.' '.$udom.'
    Function
    Fixed
    Optional
    '); + $r->print(''); } else { - $r->print(''); + $r->print(''); } } - $rowNum ++; + $r->print(&Apache::loncommon::end_data_table_row()); } } @@ -3566,23 +3257,18 @@ sub date_setting_table { 'startdate',$starttime); my $endform = &Apache::lonhtmlcommon::date_setter($formname, 'enddate',$endtime); - my $perpetual = ''; - my $start_table = ''; - $start_table .= "
    '.$tool.'
    '); my $privcount = 0; my $fixed = ''; my $dynamic = ''; @@ -3542,10 +3233,10 @@ sub member_privs_entries { } $r->print(''.$dynamic.'
    '.$tool.'
    '.$fixed.'
    '.$tool.'
     
     
    '.$tool.'
     
     
    \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 { @@ -3675,12 +3361,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); @@ -3689,7 +3375,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; } } @@ -3710,7 +3396,7 @@ sub new_map { sub parm_setter { my ($navmap,$cdom,$url,$groupname) = @_; - my %parmresult; + my $allresults; my %hide_settings = ( 'course' => { 'num' => 13, @@ -3725,15 +3411,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 { @@ -3810,8 +3499,8 @@ sub validate_groupname { "existing $gpterm", ); - my $exitmsg = ''.$lt{'igna'}.'

    '.$lt{'tgne'}.' "'. - $groupname.'" '; + my $exitmsg = ''.$lt{'igna'}.'

    '. + $lt{'tgne'}.' "'.$groupname.'" '; my $dupmsg = $lt{'grna'}; my $earlyout; if (($groupname eq '') || ($groupname =~ /\W/)) { @@ -3839,22 +3528,13 @@ sub validate_groupname { } sub topic_bar { - my ($r,$tabcol,$imgnum,$title) = @_; + my ($r,$imgnum,$title) = @_; $r->print(' - -   - - -   - - - '.$title.' - -   - - -   - +
    + '.&mt('Step [_1]',$imgnum).
+	      '  + '.$title.' +
    '); return; } 500 Internal Server Error

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

    More information about this error may be available in the server error log.