--- loncom/interface/loncoursegroups.pm 2006/06/28 16:01:01 1.28 +++ loncom/interface/loncoursegroups.pm 2006/06/28 23:38:09 1.29 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursegroups.pm,v 1.28 2006/06/28 16:01:01 albertel Exp $ +# $Id: loncoursegroups.pm,v 1.29 2006/06/28 23:38:09 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -34,6 +34,7 @@ use Apache::lonhtmlcommon; use Apache::lonlocal; use Apache::lonnavmaps; use Apache::longroup; +use Apache::portfolio; use Apache::Constants qw(:common :http); use lib '/home/httpd/lib/perl/'; use LONCAPA; @@ -69,13 +70,18 @@ sub handler { &Apache::lonnet::allowed('mdg',$env{'request.course.id'}); &Apache::lonhtmlcommon::clear_breadcrumbs(); + my $gpterm = &Apache::loncommon::group_term(); + my $ucgpterm = $gpterm; + $ucgpterm =~ s/^(\w)/uc($1)/e; + my $crstype = &Apache::loncommon::course_type(); + my %functions = ( email => 'E-mail', discussion => 'Discussion boards', chat => 'Chat', files => 'File repository', roster => 'Membership roster', - homepage => 'Group home page', + homepage => $ucgpterm.' home page', ); my %idx = (); @@ -98,43 +104,47 @@ sub handler { if ($view_permission || $manage_permission) { &group_administration($r,$action,$state,$cdom,$cnum,$function, $tabcol,\%functions,\%idx,$view_permission, - $manage_permission,$rowColor1,$rowColor2); + $manage_permission,$rowColor1,$rowColor2, + $gpterm,$ucgpterm,$crstype); } else { - $r->print(&mt('You do not have group administration '. - 'privileges in this course')); + $r->print(&mt('You do not have [_1] administration '. + 'privileges in this [_2]',$gpterm,lc($crstype))); } } else { &print_main_menu($r,$cdom,$cnum,$function,$tabcol,\%functions,\%idx, $view_permission,$manage_permission,$action,$state, - $rowColor1,$rowColor2); + $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype); } return OK; } sub print_main_menu { my ($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,$view_permission, - $manage_permission,$action,$state,$rowColor1,$rowColor2) = @_; + $manage_permission,$action,$state,$rowColor1,$rowColor2,$gpterm, + $ucgpterm,$crstype) = @_; + my $pagename = "$crstype $ucgpterm".'s'; my $jscript = qq| function changeSort(caller) { document.$state.sortby.value = caller; document.$state.submit(); }\n|; - $r->print(&header('Course Groups',$jscript,$action,$state, + $r->print(&header($pagename,$jscript,$action,$state, undef,$function)); &Apache::lonhtmlcommon::add_breadcrumb ({href=>"/adm/coursegroups", - text=>"Course Groups",}); - $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Groups')); + text=>"$pagename"}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs($pagename)); &display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx, $view_permission,$manage_permission,$action,$state, - $rowColor1,$rowColor2); + $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype); $r->print(&footer()); return; } sub display_groups { my ($r,$cdom,$cnum,$function,$tabcol,$functions,$idx,$view_permission, - $manage_permission,$action,$state,$rowColor1,$rowColor2) = @_; + $manage_permission,$action,$state,$rowColor1,$rowColor2,$gpterm, + $ucgpterm,$crstype) = @_; my %curr_groups = (); my %grp_info = (); my %actionlinks = ( @@ -149,7 +159,7 @@ sub display_groups { view => 'View', delete => 'Delete', act => 'Action', - gname => 'Group Name', + gname => "$ucgpterm Name", desc => 'Description', crea => 'Creator', crtd => 'Created', @@ -159,13 +169,13 @@ sub display_groups { memb => 'Members', file => 'Files', dibd => 'Discussion Boards', - dius => 'Disk Use', - nogr => 'No groups exist.', - crng => 'Create a new group', + dius => 'Disk Use (%)', + nogr => 'No '.$gpterm.'s exist.', + crng => 'Create a new '.$gpterm, alth => 'Although your current role has privileges'. - ' to view any existing groups in this course,'. - ' you do not have privileges to create new'. - ' groups.', + ' to view any existing '.$gpterm.'s in this'. + lc($crstype).', you do not have privileges'. + 'to create new '.$gpterm.'s.', ); if ($view_permission) { if (!defined($action)) { @@ -173,6 +183,9 @@ sub display_groups { } my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); if (%curr_groups) { + if ($manage_permission) { + $r->print('
'.$lt{'crng'}.''); + } $r->print('

'); $r->print(&Apache::lonhtmlcommon::start_pick_box()); $r->print(<<"END"); @@ -203,12 +216,24 @@ END $curr_groups{$group}); my $members_result = &group_members($cdom,$cnum,$group, \%grp_info); - my $files_result = &group_files($group,\%grp_info); + my $port_path = '/userfiles/groups/'.$group.'/portfolio'; + my $port_dir = &Apache::loncommon::propath($cdom,$cnum).$port_path; + my $totaldirs = 0; + my $totalfiles = 0; + &group_files($group,$port_dir,\$totalfiles,\$totaldirs); + $grp_info{$group}{'totalfiles'} = $totalfiles; + $grp_info{$group}{'totaldirs'} = $totaldirs; + my $diskuse = &Apache::lonnet::diskusage($cdom,$cnum,$port_dir); + if ($grp_info{$group}{'quota'} > 0) { + my $pct_use = 0.1 * $diskuse/$grp_info{$group}{'quota'}; + $grp_info{$group}{'diskuse'} = sprintf("%.0f",$pct_use); + } else { + $grp_info{$group}{'diskuse'} = 'N/A'; + } if ($env{'form.sortby'} eq 'groupname') { push(@{$Sortby{$group}},$group); } elsif ($env{'form.sortby'} eq 'description') { - push(@{$Sortby{$grp_info{$group}{'description'}}}, - $group); + push(@{$Sortby{$grp_info{$group}{'description'}}},$group); } elsif ($env{'form.sortby'} eq 'creator') { push(@{$Sortby{$grp_info{$group}{'creator'}}},$group); } elsif ($env{'form.sortby'} eq 'creation') { @@ -247,6 +272,7 @@ END my $quota = $grp_info{$group}{'quota'}; my $totalmembers = $grp_info{$group}{'totalmembers'}; my $totalfiles = $grp_info{$group}{'totalfiles'}; + my $totaldirs = $grp_info{$group}{'totaldirs'}; my $boards = $grp_info{$group}{'boards'}; my $diskuse = $grp_info{$group}{'diskuse'}; my $functionality; @@ -272,7 +298,7 @@ END $group.'">'.$lt{'modify'}.''; } } - $r->print(''.$link.''.$group.''.$description.''.$creator.''. &Apache::lonnavmaps::timeToHumanString($creation).''. &Apache::lonnavmaps::timeToHumanString($modified).''.$functionality.''.$quota.''.$totalmembers.''.$totalfiles.''.$boards.''.$diskuse.''); + $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 ++; } } @@ -292,7 +318,7 @@ END if ($manage_permission) { $r->print('

'.$lt{'crng'}.''); } else { - $r->print('

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

'.$lt{'alth'}); } } @@ -313,7 +339,8 @@ END } } else { $r->print(&mt('You are not currently a member of any '. - 'active groups in this course')); + 'active [_1]s in this [_2]',$gpterm, + lc($crstype))); } } return; @@ -321,7 +348,8 @@ END sub group_administration { my ($r,$action,$state,$cdom,$cnum,$function,$tabcol,$functions,$idx, - $view_permission,$manage_permission,$rowColor1,$rowColor2) = @_; + $view_permission,$manage_permission,$rowColor1,$rowColor2,$gpterm, + $ucgpterm,$crstype) = @_; my %sectioncount = (); my @tools = (); my @types = (); @@ -335,7 +363,8 @@ sub group_administration { my %memchg; my @member_changes = ('deletion','expire','activate','reenable', 'changefunc','changepriv'); - my ($groupname,$description,$startdate,$enddate,$granularity,$specificity); + my ($groupname,$description,$startdate,$enddate,$granularity,$specificity, + $quota); if (defined($env{'form.groupname'})) { $groupname = $env{'form.groupname'}; @@ -359,7 +388,9 @@ sub group_administration { if (defined($env{'form.specificity'})) { $specificity=$env{'form.specificity'}; } - + if (defined($env{'form.quota'})) { + $quota=$env{'form.quota'}; + } } if (($action eq 'create') || (($action eq 'modify') && (($state eq 'pick_privs') || ($state eq 'addresult')))) { @@ -398,6 +429,7 @@ sub group_administration { $description = $stored{'description'}; $granularity = $stored{'granularity'}; $specificity = $stored{'specificity'}; + $quota = $stored{'quota'}; } } } @@ -405,7 +437,7 @@ sub group_administration { my %toolprivs = ( email => { - sgm => 'Send group mail', + sgm => 'Send '.$gpterm.' mail', sgb => 'Broadcast mail', }, discussion => { @@ -462,6 +494,7 @@ sub group_administration { enddate_second => 'text', groupname => 'text', description => 'text', + quota => 'text', tool => 'checkbox', granularity => 'radio', no_end_date => 'checkbox', @@ -776,7 +809,8 @@ function changeSort(caller) { } my $loaditems = &onload_action($action,$state); - $r->print(&header('Course Groups Manager', + my $crumbtitle = "$crstype $ucgpterm".'s'; + $r->print(&header("$crumbtitle Manager", $jscript,$action,$state,$page,$function,$loaditems)); if ($env{'form.refpage'} eq 'enrl') { @@ -787,21 +821,21 @@ function changeSort(caller) { } else { &Apache::lonhtmlcommon::add_breadcrumb ({href=>"/adm/coursegroups", - text=>"Course Groups", + text=>"$crumbtitle", faq=>9,bug=>'Instructor Interface',}); } my %trail = (); %{$trail{'create'}} = &Apache::lonlocal::texthash ( - pick_name => 'Group Settings', + pick_name => $ucgpterm.' Settings', pick_members => 'Select Members', pick_privs => 'Choose Privileges', result => 'Creation Complete', ); %{$trail{'modify'}} = &Apache::lonlocal::texthash( - pick_group => 'Groups', + pick_group => $ucgpterm.'s', pick_task => 'Choose Task', - change_settings => 'Group Settings', + change_settings => "$ucgpterm Settings", change_members => 'Modify/Delete Members', change_privs => 'Change Privileges', change_mapping => 'Membership Mapping', @@ -815,7 +849,7 @@ function changeSort(caller) { my %navbuttons = &Apache::lonlocal::texthash( gtns => 'Go to next step', gtps => 'Go to previous step', - crgr => 'Create group', + crgr => 'Create '.$gpterm, mose => 'Modify settings', gtpp => 'Go to previous page', adme => 'Add members', @@ -827,14 +861,15 @@ function changeSort(caller) { &Apache::lonhtmlcommon::add_breadcrumb( {text=>"$trail{$action}{$state}"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs - ('Course Groups Manager')); + ("$crumbtitle Manager")); &display_control($r,$cdom,$cnum,$tabcol,$action,$state,$page, \%sectioncount,$groupname,$description,$functions, \@tools,\%toolprivs,\%fixedprivs,$startdate,$enddate, \%users,\%userdata,$idx,\%memchg,\%usertools, $function,$view_permission,$manage_permission, - \%stored,$granularity,$specificity,\@types,\@roles, - \@sections,\%states,\%navbuttons,$rowColor1,$rowColor2); + \%stored,$granularity,$quota,$specificity,\@types,\@roles, + \@sections,\%states,\%navbuttons,$rowColor1,$rowColor2, + $gpterm,$ucgpterm,$crstype); last; } else { if (($state eq 'result') && ($i > 0)) { @@ -850,12 +885,13 @@ function changeSort(caller) { } } elsif (($action eq 'view') && ($view_permission)) { &Apache::lonhtmlcommon::add_breadcrumb( - {text=>"View groups"}); + {text=>"View $gpterm".'s'}); + my $crumbtitle = "$crstype $ucgpterm".'s Manager'; $r->print(&Apache::lonhtmlcommon::breadcrumbs - ('Course Groups Manager')); + (&mt($crumbtitle))); &display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx, $view_permission,$manage_permission,$action,$state, - $rowColor1,$rowColor2); + $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype); } $r->print(&footer()); @@ -884,6 +920,7 @@ sub retrieve_settings { $stored{'specificity'} = $groupinfo{'specificity'}; $stored{'creation'} = $groupinfo{'creation'}; $stored{'creator'} = $groupinfo{'creator'}; + $stored{'quota'} = $groupinfo{'quota'}; foreach my $tool (sort(keys(%{$groupinfo{'functions'}}))) { if ($groupinfo{functions}{$tool} eq 'on') { @@ -923,78 +960,86 @@ 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, - $view_permission,$manage_permission,$stored,$granularity,$specificity, - $types,$roles,$sections,$states,$navbuttons,$rowColor1,$rowColor2)=@_; + $view_permission,$manage_permission,$stored,$granularity,$quota, + $specificity,$types,$roles,$sections,$states,$navbuttons,$rowColor1, + $rowColor2,$gpterm,$ucgpterm,$crstype) = @_; if ($action eq 'create') { if ($state eq 'pick_name') { &general_settings_form($r,$cdom,$cnum,$action,$tabcol,$state,$page, $functions,$tools,$toolprivs,$fixedprivs, $sectioncount,$stored,$states,$navbuttons, - $rowColor1,$rowColor2); + $rowColor1,$rowColor2,$gpterm,$ucgpterm, + $crstype); } elsif ($state eq 'pick_members') { &choose_members_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, - $groupname,$description,$granularity, + $groupname,$description,$granularity,$quota, $startdate,$enddate,$tools,$fixedprivs, $toolprivs,$functions,$users,$userdata,$idx, $stored,$states,$navbuttons,$rowColor1, - $rowColor2); + $rowColor2,$gpterm,$ucgpterm,$crstype); } elsif ($state eq 'pick_privs') { &choose_privs_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, $startdate,$enddate,$tools,$functions, $toolprivs,$fixedprivs,$userdata,$usertools, $idx,$states,$stored,$sectioncount,$navbuttons, - $rowColor1,$rowColor2); + $rowColor1,$rowColor2,$gpterm,$ucgpterm, + $crstype); } elsif ($state eq 'result') { &process_request($r,$cdom,$cnum,$tabcol,$action,$state,$page, $groupname,$description,$specificity,$userdata, $startdate,$enddate,$tools,$functions, $toolprivs,$usertools,$idx,$types,$roles, $sections,$states,$navbuttons,$memchg, - $sectioncount,$stored,$rowColor1,$rowColor2); + $sectioncount,$stored,$rowColor1,$rowColor2, + $gpterm,$ucgpterm,$crstype); } } elsif ($action eq 'modify') { my $groupname = $env{'form.groupname'}; if ($state eq 'pick_group') { &display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx, $view_permission,$manage_permission,$action,$state, - $rowColor1,$rowColor2); + $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype); } elsif ($state eq 'pick_task') { - &modify_menu($r,$groupname,$page); + &modify_menu($r,$groupname,$page,$gpterm); } elsif ($state eq 'change_settings') { &general_settings_form($r,$cdom,$cnum,$action,$tabcol,$state,$page, $functions,$tools,$toolprivs,$fixedprivs, $sectioncount,$stored,$states,$navbuttons, - $rowColor1,$rowColor2); + $rowColor1,$rowColor2,$gpterm,$ucgpterm, + $crstype); } elsif ($state eq 'change_members') { &change_members_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, $groupname,$description,$startdate,$enddate, $tools,$fixedprivs,$functions,$users, - $userdata,$granularity,$specificity,$idx, - $states,$navbuttons,$rowColor1,$rowColor2); + $userdata,$granularity,$quota,$specificity, + $idx,$states,$navbuttons,$rowColor1,$rowColor2, + $gpterm,$ucgpterm); } elsif ($state eq 'add_members') { &add_members_form($r,$tabcol,$action,$state,$page,$startdate, $enddate,$groupname,$description,$granularity, - $sectioncount,$tools,$functions,$stored,$states, - $navbuttons,$rowColor1,$rowColor2); + $quota,$sectioncount,$tools,$functions,$stored, + $states,$navbuttons,$rowColor1,$rowColor2,$gpterm, + $ucgpterm); } elsif ($state eq 'pick_members') { &choose_members_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, - $groupname,$description,$granularity, + $groupname,$description,$granularity,$quota, $startdate,$enddate,$tools,$fixedprivs, $toolprivs,$functions,$users,$userdata,$idx, $stored,$states,$navbuttons,$rowColor1, - $rowColor2); + $rowColor2,$gpterm,$ucgpterm,$crstype); } elsif ($state eq 'pick_privs') { &choose_privs_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, $startdate,$enddate,$tools,$functions, $toolprivs,$fixedprivs,$userdata,$usertools, $idx,$states,$stored,$sectioncount,$navbuttons, - $rowColor1,$rowColor2); + $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype); } elsif ($state eq 'change_privs') { &change_privs_form($r,$cdom,$cnum,$tabcol,$action,$state,$page, $startdate,$enddate,$tools,$functions, $toolprivs,$fixedprivs,$userdata,$usertools, $memchg,$idx,$states,$stored,$sectioncount, - $navbuttons,$rowColor1,$rowColor2); + $navbuttons,$rowColor1,$rowColor2,$gpterm, + $ucgpterm); } elsif ($state eq 'chgresult' || $state eq 'memresult' || $state eq 'addresult') { &process_request($r,$cdom,$cnum,$tabcol,$action,$state,$page, @@ -1002,7 +1047,8 @@ sub display_control { $startdate,$enddate,$tools,$functions, $toolprivs,$usertools,$idx,$types,$roles, $sections,$states,$navbuttons,$memchg, - $sectioncount,$stored,$rowColor1,$rowColor2); + $sectioncount,$stored,$rowColor1,$rowColor2, + $gpterm,$ucgpterm,$crstype); } } } @@ -1076,6 +1122,21 @@ sub build_members_list { } sub group_files { + my ($group,$currdir,$numfiles,$numdirs) = @_; + my $dirptr=16384; + my @dir_list=&Apache::portfolio::get_dir_list($currdir,$group); + foreach my $line (@dir_list) { + my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16); + if (($filename !~ /^\.\.?$/) && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/) && ($filename ne 'no_such_dir')) { + if ($dirptr&$testdir) { + $currdir .= '/'.$filename; + $$numdirs ++; + &group_files($numfiles,$numdirs) + } else { + $$numfiles ++; + } + } + } return; } @@ -1117,23 +1178,26 @@ sub group_members { sub general_settings_form { my ($r,$cdom,$cnum,$action,$tabcol,$formname,$page,$functions,$tools, $toolprivs,$fixedprivs,$sectioncount,$stored,$states,$navbuttons, - $rowColor1,$rowColor2) = @_; + $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype) = @_; my ($nexttext,$prevtext); $r->print('
'); - &groupsettings_options($r,$tabcol,$functions,$action,$formname,$stored,1); + &groupsettings_options($r,$tabcol,$functions,$action,$formname,$stored,1, + $gpterm,$ucgpterm,$crstype); $r->print(' '); - &access_date_settings($r,$tabcol,$action,$formname,$stored,2); + &access_date_settings($r,$tabcol,$action,$formname,$stored,2,$gpterm, + $ucgpterm); $r->print(' '); if ($action eq 'create') { - &membership_options($r,$action,$formname,$tabcol,$sectioncount,3); + &membership_options($r,$action,$formname,$tabcol,$sectioncount,3, + $gpterm,$ucgpterm); $nexttext = $$navbuttons{'gtns'}; } else { my @available = (); @@ -1142,14 +1206,14 @@ sub general_settings_form { @{$tools} = sort(keys(%{$functions})); &privilege_specificity($r,$tabcol,$rowColor1,$rowColor2,$action, 3,$tools,$stored,$toolprivs,$fixedprivs, - \@available,$formname); + \@available,$formname,$gpterm,$ucgpterm); $r->print(' '); &mapping_options($r,$action,$formname,$page,$tabcol,$sectioncount, $states,$stored,$navbuttons,4,5,$rowColor1, - $rowColor2); + $rowColor2,$gpterm,$ucgpterm,$crstype); $nexttext = $$navbuttons{'mose'}; } $prevtext = $$navbuttons{'gtpp'}; @@ -1161,18 +1225,25 @@ sub general_settings_form { } sub groupsettings_options { - my ($r,$tabcol,$functions,$action,$formname,$stored,$image) = @_; + my ($r,$tabcol,$functions,$action,$formname,$stored,$image,$gpterm, + $ucgpterm,$crstype) = @_; my %lt = &Apache::lonlocal::texthash( - 'gdat' => 'Group open and close dates', - 'sten' => 'Set a start date/time and end date/time for the group', - 'gfun' => 'Group functionality', - 'gnde' => 'Group name, description and available functionality', + 'gdat' => "$ucgpterm open and close dates", + 'sten' => "Set a start date/time and end date/time for the $gpterm", + 'gfun' => "$ucgpterm functionality", + 'gnde' => "$ucgpterm name, description and available functionality", 'desc' => 'Description', 'func' => 'Functionality', - 'gnam' => 'Group Name', - 'doyo' => 'Do you want to assign different functionality '. - 'to different group members?', + 'gnam' => "$ucgpterm Name", + 'doyo' => "Do you want to assign different functionality ". + "to different $gpterm members?", ); + my $crsquota = $env{'course.'.$env{'request.course.id'}.'.internal.coursequota'}; + if ($crsquota eq '') { + $crsquota = 20; + } + my $freespace = $crsquota - &Apache::longroup::sum_quotas(); + my $maxposs = $$stored{'quota'} + $freespace; &topic_bar($r,$tabcol,$image,$lt{'gnde'}); $r->print(' @@ -1233,8 +1304,8 @@ END - - + + + +
 
 
 
Granularity:'.$lt{'doyo'}.'  '); + '.&mt('Granularity:').''.$lt{'doyo'}.'  '); if ($action eq 'modify') { $r->print('  ('.&mt('Currently set to "[_1]"', $$stored{'granularity'}).')'); @@ -1242,6 +1313,30 @@ END $r->print('
'.&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 { + $r->print(&mt('Quota allocated to file repository:')); + } + $r->print(' Mb'); + if ($action eq 'create') { + $r->print('
'. + &mt('A total of [_1] Mb is shared between all [_2]s in the '. + '[_3], and [_4] Mb are currently unallocated.',$crsquota, + $gpterm,lc($crstype),$freespace)); + } else { + $r->print('  ('.&mt('The quota is currently [_1] Mb', + $$stored{'quota'}).').'); + + $r->print('
'.&mt('The quota can be increased to [_1] Mb, '. + 'by adding all unallocated space for [_2]s in the [_3].', + $maxposs,$gpterm,lc($crstype))); + } + $r->print(' +
@@ -1250,20 +1345,21 @@ END } sub membership_options { - my ($r,$action,$state,$tabcol,$sectioncount,$image) = @_; + my ($r,$action,$state,$tabcol,$sectioncount,$image,$gpterm,$ucgpterm) = @_; + my $crstype = &Apache::loncommon::course_type(); my %lt = &Apache::lonlocal::texthash( 'pipa' => 'Pick parameters to generate membership list', - 'gmem' => 'Group membership options', + 'gmem' => "$ucgpterm membership options", 'picr' => 'Pick the criteria to use to build a list of '. - 'course users from which you will select ', - 'meof' => 'members of the new group.', - 'admg' => 'additional members of the group.', - 'ifno' => 'If you do not wish to add members when you first '. - 'create the group, do not make any selections.', - 'asub' => 'A subsequent step will also allow you to specify automatic adding/dropping of group members triggered by specified role and section changes.', + lc($crstype).' users from which you will select ', + 'meof' => "members of the new $gpterm.", + 'admg' => "additional members of the $gpterm.", + 'ifno' => "If you do not wish to add members when you first ". + "create the $gpterm, do not make any selections.", + 'asub' => "A subsequent step will also allow you to specify automatic adding/dropping of $gpterm members triggered by specified role and section changes.", 'acty' => 'Access types', - 'coro' => 'Course roles', - 'cose' => 'Course sections', + 'coro' => $crstype.' roles', + 'cose' => $crstype.' sections', ); my %status_types = ( active => &mt('Currently has access'), @@ -1344,9 +1440,9 @@ sub sections_selection { } sub access_date_settings { - my ($r,$tabcol,$action,$formname,$stored,$image) = @_; + my ($r,$tabcol,$action,$formname,$stored,$image,$gpterm,$ucgpterm) = @_; my %lt = &Apache::lonlocal::texthash( - 'sten' => 'Default start and end dates for group access', + 'sten' => "Default start and end dates for $gpterm access", ); my $starttime = time; my $endtime = time+(6*30*24*60*60); # 6 months from now, approx @@ -1376,16 +1472,17 @@ sub access_date_settings { sub choose_members_form { my ($r,$cdom,$cnum,$tabcol,$action,$formname,$page,$groupname,$description, - $granularity,$startdate,$enddate,$tools,$fixedprivs,$toolprivs, + $granularity,$quota,$startdate,$enddate,$tools,$fixedprivs,$toolprivs, $functions,$users,$userdata,$idx,$stored,$states,$navbuttons, - $rowColor1,$rowColor2) = @_; + $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype) = @_; my @regexps = ('user_','userpriv_','sec_'); my %origmembers; $r->print(&Apache::lonhtmlcommon::echo_form_input( ['origin','action','state','page','member','specificity','branch', 'defpriv','autorole','autoadd','autodrop','sortby','togglefunc'], \@regexps)); - my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum); + my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum,$gpterm, + $ucgpterm,$crstype); $r->print(' @@ -1406,8 +1503,8 @@ sub choose_members_form { if ($action eq 'create') { &print_current_settings($r,$action,$tabcol,$rowColor1,$rowColor2, $functions,$startdate,$enddate,$groupname, - $description,$granularity,\@available, - \@unavailable); + $description,$granularity,$quota,\@available, + \@unavailable,$gpterm,$ucgpterm); $specimg = 4; $memimg = 5; } else { @@ -1429,11 +1526,11 @@ sub choose_members_form { } &privilege_specificity($r,$tabcol,$rowColor1,$rowColor2,$action, $specimg,$tools,$stored,$toolprivs, - $fixedprivs,\@available,$formname); + $fixedprivs,\@available,$formname,$gpterm,$ucgpterm); my $newusers = &pick_new_members($r,$action,$formname,$tabcol,$rowColor1, $rowColor2,\@available,$idx,$stored, $memimg,$users,$userdata,$granularity, - \%origmembers); + \%origmembers,$gpterm,$ucgpterm); if ($newusers || $action eq 'create') { &display_navbuttons($r,$formname,$$states{$action}[$page-1], $$navbuttons{'gtps'},$$states{$action}[$page+1], @@ -1486,17 +1583,19 @@ sub check_tools { sub print_current_settings { my ($r,$action,$tabcol,$rowColor1,$rowColor2,$functions,$startdate,$enddate, - $groupname,$description,$granularity,$available,$unavailable) =@_; + $groupname,$description,$granularity,$quota,$available,$unavailable, + $gpterm,$ucgpterm) = @_; my %lt = &Apache::lonlocal::texthash( - grna => 'Group Name', + grna => "$ucgpterm Name", desc => 'Description', - grfn => 'Group Functions', + grfn => "$ucgpterm Functions", gran => 'Granularity', + quot => 'File quota', dfac => 'Default access dates', - ygrs => 'Your group selections', - tfwa => 'The following settings will apply to the group:', - difn => 'Different functionality
for different users:', + ygrs => "Your $gpterm selections", + tfwa => "The following settings will apply to the $gpterm:", + difn => 'Different functionality
for different members:', stda => 'Start date', enda => 'End date:', ); @@ -1527,6 +1626,7 @@ sub print_current_settings { + @@ -1573,7 +1673,8 @@ sub print_current_settings { $r->print(<<"END"); + @@ -1589,16 +1690,17 @@ END sub pick_new_members { my ($r,$action,$formname,$tabcol,$rowColor1,$rowColor2,$available,$idx, - $stored,$img,$users,$userdata,$granularity,$origmembers) = @_; + $stored,$img,$users,$userdata,$granularity,$origmembers,$gpterm, + $ucgpterm) = @_; my %lt = &Apache::lonlocal::texthash( - 'gpme' => 'Group membership', + 'gpme' => "$ucgpterm membership", 'addm' => 'Add members', 'setf' => 'Set functionality', 'func' => 'Functionality', 'nome' => 'No members to add at this time.', - 'nnew' => 'There are no users to add as new members, as all users'. - ' matching the specified type(s), role(s), and/or '. - 'section(s) are already affiliated with this group.', + 'nnew' => "There are no users to add as new members, as all users". + " matching the specified type(s), role(s), and/or ". + "section(s) are already affiliated with this $gpterm.", 'yoma' => 'You may need to use the '."'".'modify existing, past or '. 'future members'."'".' page if you need to re-enable '. 'or activate access for previous or future members.', @@ -1755,7 +1857,7 @@ sub pick_new_members { sub privilege_specificity { my ($r,$tabcol,$rowColor1,$rowColor2,$action,$img,$tools,$stored, - $toolprivs,$fixedprivs,$available,$formname) = @_; + $toolprivs,$fixedprivs,$available,$formname,$gpterm,$ucgpterm) = @_; my %lt = &Apache::lonlocal::texthash ( 'uprv' => 'User privileges', 'frty' => 'For each type of functionality you have chosen to include, '. @@ -1770,19 +1872,19 @@ sub privilege_specificity { 'privileges which apply to members with access to that '. 'functionality, and may also include additional privileges '. 'which can be set for specific members.', - 'cutg' => 'Currently the group is configured ', - 'sdif' => 'so different group members can receive different privileges.', - 'sall' => 'so all group members will receive the same privileges.', - 'algm' => 'All group members will receive the same privileges.', - 'smgp' => 'Some group members will receive different privileges from '. - 'others.', - 'thwi' => 'These will be the privileges all group members receive, '. - 'if you selected the first option above.', - 'thes' => 'These will be the privileges given to members assigned '. - 'in the future, including via automatic group assignment '. - 'for specific sections/roles ', - 'asyo' => 'As you have chosen not to include any functionality in the '. - 'group, no default user privileges settings need to be set.', + 'cutg' => "Currently the $gpterm is configured ", + 'sdif' => "so different $gpterm members can receive different privileges.", + 'sall' => "so all $gpterm members will receive the same privileges.", + 'algm' => "All $gpterm members will receive the same privileges.", + 'smgp' => "Some $gpterm members will receive different privileges from ". + "others.", + 'thwi' => "These will be the privileges all $gpterm members receive, ". + "if you selected the first option above.", + 'thes' => "These will be the privileges given to members assigned ". + "in the future, including via automatic $gpterm assignment ". + "for specific sections/roles ", + 'asyo' => "As you have chosen not to include any functionality in the ". + "$gpterm, no default user privileges settings need to be set.", 'plin' => 'Please indicate which optional privileges members '. 'will receive by default.', 'oppr' => 'Optional privileges', @@ -2047,11 +2149,11 @@ sub display_defprivs { sub change_members_form { my ($r,$cdom,$cnum,$tabcol,$action,$formname,$page,$groupname,$description, $startdate,$enddate,$tools,$fixedprivs,$functions,$users,$userdata, - $granularity,$specificity,$idx,$states,$navbuttons,$rowColor1, - $rowColor2) = @_; + $granularity,$quota,$specificity,$idx,$states,$navbuttons,$rowColor1, + $rowColor2,$gpterm,$ucgpterm) = @_; my %lt = &Apache::lonlocal::texthash( - grse => 'Group settings', - mogm => 'Modify group membership', + grse => "$ucgpterm settings", + mogm => "Modify $gpterm membership", ); my @regexps = ('user_','userpriv_'); $r->print(&Apache::lonhtmlcommon::echo_form_input( @@ -2076,7 +2178,8 @@ sub change_members_form { '); &print_current_settings($r,$action,$tabcol,$rowColor1,$rowColor2, $functions,$startdate,$enddate,$groupname, - $description,$granularity,\@available,\@unavailable); + $description,$granularity,$quota,\@available, + \@unavailable,$gpterm,$ucgpterm); $r->print(' '); &topic_bar($r,$tabcol,2,$lt{'mogm'}); @@ -2418,13 +2521,13 @@ 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) = @_; + $rowColor2,$gpterm,$ucgpterm) = @_; my @regexps = ('userpriv_'); my $nexttext; my %lt = &Apache::lonlocal::texthash( 'tode' => 'To be deleted', 'toex' => 'To be expired', - 'nome' => 'No members to be deleted or expired from the group.', + 'nome' => "No members to be deleted or expired from the $gpterm.", ); $r->print(&Apache::lonhtmlcommon::echo_form_input( ['origin','action','state','page','sortby'],\@regexps)); @@ -2463,12 +2566,13 @@ sub change_privs_form { ''); } - &topic_bar($r,$tabcol,4,&mt('Group member privileges')); + &topic_bar($r,$tabcol,4,&mt('[_1] member privileges',$ucgpterm)); my $numchgs = &member_privileges_form($r,$tabcol,$action,$formname,$tools, $toolprivs,$fixedprivs,$userdata, $usertools,$idx,$memchg,$states, - $stored,$rowColor1,$rowColor2); + $stored,$rowColor1,$rowColor2, + $gpterm); $r->print(''); my $prevtext = $$navbuttons{'gtps'}; if ($numchgs || $exp_or_del) { @@ -2483,8 +2587,8 @@ sub change_privs_form { sub add_members_form { my ($r,$tabcol,$action,$formname,$page,$startdate,$enddate,$groupname, - $description,$granularity,$sectioncount,$tools,$functions,$stored, - $states,$navbuttons,$rowColor1,$rowColor2) = @_; + $description,$granularity,$quota,$sectioncount,$tools,$functions, + $stored,$states,$navbuttons,$rowColor1,$rowColor2,$gpterm,$ucgpterm)=@_; $r->print('
'.$lt{'desc'}.' '.$lt{'grfn'}.' '.$lt{'gran'}.''.$lt{'quot'}.' '.$lt{'dfac'}.'
$lt{'difn'} - $granularity + $granularity$quota Mb $lt{'stda'} $showstart
$lt{'enda'} $showend
 
 
 
@@ -2496,7 +2600,8 @@ sub add_members_form { &check_tools($functions,$tools,\@available,\@unavailable); &print_current_settings($r,$action,$tabcol,$rowColor1,$rowColor2, $functions,$startdate,$enddate,$groupname, - $description,$granularity,\@available,\@unavailable); + $description,$granularity,$quota,\@available, + \@unavailable,$gpterm,$ucgpterm); $r->print(' @@ -2504,7 +2609,8 @@ sub add_members_form { '); - &membership_options($r,$action,$formname,$tabcol,$sectioncount,1); + &membership_options($r,$action,$formname,$tabcol,$sectioncount,1,$gpterm, + $ucgpterm); my $nexttext = $$navbuttons{'gtns'}; my $prevtext = $$navbuttons{'gtpp'}; &display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext, @@ -2517,7 +2623,8 @@ sub add_members_form { sub choose_privs_form { my ($r,$cdom,$cnum,$tabcol,$action,$formname,$page,$startdate,$enddate, $tools,$functions,$toolprivs,$fixedprivs,$userdata,$usertools,$idx, - $states,$stored,$sectioncount,$navbuttons,$rowColor1,$rowColor2) = @_; + $states,$stored,$sectioncount,$navbuttons,$rowColor1,$rowColor2, + $gpterm,$ucgpterm,$crstype) = @_; my @regexps = ('userpriv_'); my $nexttext; @@ -2535,11 +2642,11 @@ sub choose_privs_form { } $r->print('
 
'); - &topic_bar($r,$tabcol,6,&mt('Group member privileges')); + &topic_bar($r,$tabcol,6,&mt('[_1] member privileges',$ucgpterm)); &member_privileges_form($r,$tabcol,$action,$formname,$tools,$toolprivs, $fixedprivs,$userdata,$usertools,$idx,undef, - $states,$stored,$rowColor1,$rowColor2); + $states,$stored,$rowColor1,$rowColor2,$gpterm); $r->print(''); if ($action eq 'create') { @@ -2548,7 +2655,7 @@ sub choose_privs_form { my $img2 = 8; &mapping_options($r,$action,$formname,$page,$tabcol,$sectioncount, $states,$stored,$navbuttons,$img1,$img2, - $rowColor1,$rowColor2); + $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype); } } my $prevtext = $$navbuttons{'gtps'}; @@ -2618,7 +2725,8 @@ function uncheckAllTools(formname) { sub member_privileges_form { my ($r,$tabcol,$action,$formname,$tools,$toolprivs,$fixedprivs,$userdata, - $usertools,$idx,$memchg,$states,$stored,$rowColor1,$rowColor2) = @_; + $usertools,$idx,$memchg,$states,$stored,$rowColor1,$rowColor2, + $gpterm) = @_; my %lt = &Apache::lonlocal::texthash( 'addp' => 'Additional privileges', 'fixp' => 'Fixed privileges', @@ -2627,15 +2735,15 @@ sub member_privileges_form { 'forf' => 'For the functionality you have chosen to include '. 'there are no optional privileges to set besides '. 'the standard privileges.', - 'algr' => 'All group members will receive the same privileges.', - 'asno' => 'As no group members are being added, '. - 'there are no specific user privileges to set.', - 'asng' => 'As no group tools will be made available to users, '. - 'there are no specific user privileges to set.', - 'nogm' => 'No group member privileges to display or set, '. - 'as you have not indicated that you will be activating,'. - ' re-enabling, changing privileges, or adding/removing '. - 'functionality for any current members ', + 'algr' => "All $gpterm members will receive the same privileges.", + 'asno' => "As no $gpterm members are being added, ". + "there are no specific user privileges to set.", + 'asng' => "As no $gpterm tools will be made available to users, ". + "there are no specific user privileges to set.", + 'nogm' => "No $gpterm member privileges to display or set, ". + "as you have not indicated that you will be activating,". + " re-enabling, changing privileges, or adding/removing ". + "functionality for any current members ", 'full' => 'Fullname', 'user' => 'Username', 'doma' => 'Domain', @@ -2794,12 +2902,14 @@ sub process_request { my ($r,$cdom,$cnum,$tabcol,$action,$state,$page,$groupname,$description, $specificity,$userdata,$startdate,$enddate,$tools,$functions,$toolprivs, $usertools,$idx,$types,$roles,$sections,$states,$navbuttons,$memchg, - $sectioncount,$stored,$rowColor1,$rowColor2) = @_; + $sectioncount,$stored,$rowColor1,$rowColor2,$gpterm,$ucgpterm, + $crstype) = @_; $r->print(&Apache::lonhtmlcommon::echo_form_input( ['origin','action','state','page','sortby'])); - my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum); + my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum,$gpterm, + $ucgpterm,$crstype); if ($earlyout) { $r->print('
 
@@ -2845,13 +2955,15 @@ sub process_request { $description,$startdate,$enddate, $specificity,$functions,$tools, $sectioncount,$roles,$types,$sections, - \@defprivs,$stored); + \@defprivs,$stored,$gpterm,$ucgpterm, + $crstype); } if (($action eq 'create' && $outcome eq 'ok') || (($action eq 'modify') && (($state eq 'memresult') || ($state eq 'addresult')))) { &process_membership($r,$cdom,$cnum,$action,$state,$groupname,$tools, $enddate,$startdate,$userdata,$idx,$toolprivs, - $usertools,$specificity,\@defprivs,$memchg); + $usertools,$specificity,\@defprivs,$memchg,$gpterm, + $ucgpterm); } return; } @@ -2859,7 +2971,7 @@ sub process_request { sub write_group_data { my ($r,$cdom,$cnum,$action,$state,$groupname,$description,$startdate, $enddate,$specificity,$functions,$tools,$sectioncount,$roles,$types, - $sections,$defprivs,$stored) = @_; + $sections,$defprivs,$stored,$gpterm,$ucgpterm,$crstype) = @_; my $now = time; my $creation = $now; my $creator = $env{'user.name'}.':'.$env{'user.domain'}; @@ -2870,7 +2982,7 @@ sub write_group_data { my $esc_description = &escape($description); my @single_attributes = ('description','functions','startdate','enddate', 'creation','modified','creator','granularity', - 'specificity','autoadd','autodrop'); + 'specificity','autoadd','autodrop','quota'); my @mult_attributes = ('roles','types','sectionpick','defpriv'); my %groupinfo = ( @@ -2884,6 +2996,7 @@ sub write_group_data { specificity => $specificity, autoadd => $env{'form.autoadd'}, autodrop => $env{'form.autodrop'}, + quota => $env{'form.quota'}, ); foreach my $func (keys(%{$functions})) { my $status; @@ -2932,27 +3045,30 @@ sub write_group_data { if ($result eq 'ok') { if ($action eq 'create') { my $put_result = &create_homepage($cdom,$cnum,$groupname, - \%groupinfo,$tools); - $r->print('Group '.$groupname.' was created.
'); + \%groupinfo,$tools,$gpterm, + $ucgpterm); + $r->print(&mt('[_1] [_2] was created.
',$ucgpterm,$groupname)); } else { - $r->print('Group '.$groupname.' was updated.
'); + $r->print(&mt('[_1] [_2] was updated.
',$ucgpterm,$groupname)); } } else { my %actiontype = ( 'create' => 'creating', 'modify' => 'modifying', ); - &Apache::lonnet::logthis('Failed to store group '.$groupname. - 'in course: '.$cnum.' in domain: '.$cdom); - $r->print(&mt('An error occurred when [_1] the new group. '. - 'Please try again.',$actiontype{$action})); + &Apache::lonnet::logthis("Failed to store $gpterm $groupname ". + 'in '.lc($crstype).': '.$cnum. + ' in domain: '.$cdom); + $r->print(&mt('An error occurred when [_1] the new [_2]. '. + 'Please try again.',$actiontype{$action},$gpterm)); } return $result; } sub process_membership { my ($r,$cdom,$cnum,$action,$state,$groupname,$tools,$enddate,$startdate, - $userdata,$idx,$toolprivs,$usertools,$specificity,$defprivs,$memchg)=@_; + $userdata,$idx,$toolprivs,$usertools,$specificity,$defprivs,$memchg, + $gpterm,$ucgpterm)=@_; my %usersettings = (); my %added= (); my %failed = (); @@ -3149,30 +3265,31 @@ sub process_membership { $r->print('
'); } if ($roster_result eq 'ok') { - $r->print('
'.&mt('Group membership list updated.')); + $r->print('
'.&mt('[_1] membership list updated.',$ucgpterm)); } else { - $r->print('
'.&mt('An error occurred while updating the group membership list -').$roster_result.'
'); + $r->print('
'.&mt('An error occurred while updating the [_1] membership list -',$gpterm).$roster_result.'
'); } return; } sub mapping_options { my ($r,$action,$formname,$page,$tabcol,$sectioncount,$states,$stored, - $navbuttons,$img1,$img2,$rowColor1,$rowColor2) = @_; + $navbuttons,$img1,$img2,$rowColor1,$rowColor2,$gpterm,$ucgpterm, + $crstype) = @_; my %lt = &Apache::lonlocal::texthash( - 'auto' => 'Settings for automatic group enrollment', - 'gmma' => 'Group membership mapping to specific sections/roles', - 'endi' => 'Enable/disable automatic group enrollment for '. - 'users in specified roles and sections', - 'adds' => 'If automatic group enrollment is enabled, when a user is assigned a course-wide or section-specific role, he/she will automatically be added as a member of the group, with start and end access dates defined by the default dates set for the group, unless he/she is already a group member, with access dates that permit either current or future group access.', - 'drops' => "If automatic group disenrollment is enabled, when a user's role is expired, access to the group will be terminated unless the user continues to have other course-wide or section-specific active or future roles which receive automatic membership in the group.", - 'pirs' => 'Pick roles and sections for automatic group enrollment', + 'auto' => "Settings for automatic $gpterm enrollment", + 'gmma' => "$ucgpterm membership mapping to specific sections/roles", + 'endi' => "Enable/disable automatic $gpterm enrollment for ". + "users in specified roles and sections", + 'adds' => "If automatic $gpterm enrollment is enabled, when a user is assigned a ".lc($crstype)."-wide or section-specific role, he/she will automatically be added as a member of the $gpterm, with start and end access dates defined by the default dates set for the $gpterm, unless he/she is already a $gpterm member, with access dates that permit either current or future $gpterm access.", + 'drops' => "If automatic $gpterm disenrollment is enabled, when a user's role is expired, access to the $gpterm will be terminated unless the user continues to have other ".lc($crstype)."-wide or section-specific active or future roles which receive automatic membership in the $gpterm.", + 'pirs' => "Pick roles and sections for automatic $gpterm enrollment", 'curr' => 'Currently set to', 'on' => 'on', 'off' => 'off', - 'auad' => 'Automatically enable group membership when roles are added?', - 'auex' => 'Automatically expire group membership when roles are removed?', - 'mapr' => 'Mapping of roles and sections affected by automatic group enrollment/disenrollment follows scheme chosen below.', + 'auad' => "Automatically enable $gpterm membership when roles are added?", + 'auex' => "Automatically expire $gpterm membership when roles are removed?", + 'mapr' => "Mapping of roles and sections affected by automatic $gpterm enrollment/disenrollment follows scheme chosen below.", ); &automapping($r,$action,$tabcol,$stored,\%lt,$img1); $r->print(' @@ -3180,7 +3297,7 @@ sub mapping_options { '); &mapping_settings($r,$tabcol,$rowColor1,$rowColor2,$sectioncount,\%lt, - $stored,$img2); + $stored,$img2,$crstype); return; } @@ -3240,7 +3357,8 @@ sub automapping { } sub mapping_settings { - my ($r,$tabcol,$rowColor1,$rowColor2,$sectioncount,$lt,$stored,$image) = @_; + my ($r,$tabcol,$rowColor1,$rowColor2,$sectioncount,$lt,$stored,$image, + $crstype) = @_; my @sections = keys(%{$sectioncount}); if (@sections > 0) { @sections = sort {$a cmp $b} @sections; @@ -3266,7 +3384,7 @@ sub mapping_settings { my $rowNum = 0; my $rowColor; foreach my $role (@roles) { - my $plrole=&Apache::lonnet::plaintext($role); + my $plrole=&Apache::lonnet::plaintext($role,$crstype); my $sections_sel; if (@sections > 0) { if ($role eq 'cc') { @@ -3326,10 +3444,10 @@ sub my_custom_roles { } sub modify_menu { - my ($r,$groupname,$page) = @_; + my ($r,$groupname,$page,$gpterm) = @_; my @menu = ( - { text => 'Modify default group settings', + { text => "Modify default $gpterm settings", help => 'Course_Modify_Group', state => 'change_settings', branch => 'settings', @@ -3340,7 +3458,7 @@ sub modify_menu { state => 'change_members', branch => 'members', }, - { text => 'Add member(s) to the group', + { text => "Add member(s) to the $gpterm", help => 'Course_Group_Add_Members', state => 'add_members', branch => 'adds', @@ -3454,7 +3572,7 @@ sub date_setting_table { } sub create_homepage { - my ($cdom,$cnum,$name,$groupinfo,$tools) = @_; + my ($cdom,$cnum,$name,$groupinfo,$tools,$gpterm,$ucgpterm) = @_; my $functionality = join(',',@{$tools}); my $content = &unescape($$groupinfo{description}); $content=~s/\s+$//s; @@ -3463,7 +3581,7 @@ sub create_homepage { $content=&Apache::lonfeedback::clear_out_html($content,1); my %pageinfo = ( - 'aaa_title' => 'Group: '.$name, + 'aaa_title' => "$ucgpterm: $name", 'abb_links' => $functionality, 'bbb_content' => $content, 'ccc_webreferences' => '', @@ -3509,22 +3627,22 @@ function toggleTools(field,caller) { } sub validate_groupname { - my ($groupname,$action,$cdom,$cnum) = @_; + my ($groupname,$action,$cdom,$cnum,$gpterm,$ucgpterm,$crstype) = @_; my %sectioncount = &Apache::loncommon::get_sections($cdom,$cnum); my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); my %lt = &Apache::lonlocal::texthash ( - igna => 'Invalid group name', - tgne => 'The group name entered ', - grna => 'Group names and section names used in a course '. - 'must be unique.', - isno => 'is not a valid name.', - gnmo => 'Group names may only contain letters, numbers '. - 'or underscores.', - cnnb => 'can not be used as it is the name of ', - inth => ' in this course.', - thgr => '- does not correspond to the name of an existing'. - ' group ', + igna => "Invalid $gpterm name", + tgne => "The $gpterm name entered ", + grna => "$ucgpterm names and section names used in a ". + "$crstype must be unique.", + isno => "is not a valid name.", + gnmo => "$ucgpterm names may only contain letters, ". + "numbers or underscores.", + cnnb => "can not be used as it is the name of ", + inth => " in this $crstype", + thgr => "- does not correspond to the name of an ". + "existing $gpterm", ); my $exitmsg = ''.$lt{'igna'}.'

'.$lt{'tgne'}.' "'. @@ -3542,12 +3660,13 @@ sub validate_groupname { if ($action eq 'create' && exists($curr_groups{$groupname})) { - return $exitmsg.$lt{'cnnb'}.&mt('an existing group'). + return $exitmsg.$lt{'cnnb'}.&mt('an existing [_1]',$gpterm). $lt{'inth'}.'
'.$lt{'grna'}; } elsif ($action eq 'modify') { unless(exists($curr_groups{$groupname})) { - $earlyout = &mt('Group name:').' '.$groupname.$lt{'thgr'}.$lt{'inth'}; + $earlyout = &mt('[_1] name:',$ucgpterm).' '.$groupname.$lt{'thgr'}. + $lt{'inth'}; return $earlyout; } }