--- loncom/interface/loncoursegroups.pm 2006/12/04 14:59:56 1.67 +++ loncom/interface/loncoursegroups.pm 2008/05/07 00:10:59 1.76 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursegroups.pm,v 1.67 2006/12/04 14:59:56 raeburn Exp $ +# $Id: loncoursegroups.pm,v 1.76 2008/05/07 00:10:59 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -140,15 +140,19 @@ function openGroupRoster(group,status) { rosterbrowser.focus(); }\n|; $r->print(&header('Groups',$jscript,$action,$state)); - if ($env{'form.refpage'} eq 'enrl') { + if ($env{'form.refpage'} eq 'cusr') { &Apache::lonhtmlcommon::add_breadcrumb - ({href=>"/adm/dropadd", - text=>"Enrollment Manager"}); + ({href=>"/adm/createuser", + text=>"User Management"}); } &Apache::lonhtmlcommon::add_breadcrumb ({href=>"/adm/coursegroups", text=>"Groups"}); - $r->print(&Apache::lonhtmlcommon::breadcrumbs('Groups')); + my $helpitem; + if ($manage_permission) { + $helpitem = 'Creating_Groups'; + } + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Groups',$helpitem)); &display_groups($r,$cdom,$cnum,$functions,$idx,$view_permission, $manage_permission,$action,$state,$gpterm,$ucgpterm, $crstype); @@ -189,6 +193,7 @@ sub display_groups { dius => 'Disk Use (%)', nogr => 'No groups exist.', crng => 'Create a new group', + redg => 'Re-enable a deleted group', alth => 'Although your current role has privileges'. ' to view any existing groups in this '. lc($crstype).', you do not have privileges '. @@ -198,16 +203,28 @@ sub display_groups { if (!defined($action)) { $action = 'view'; } - my $status; + my ($status,$reenable_link); if ($action eq 'reenable') { $status = 'deleted_groups'; + } else { + if ($manage_permission) { + my %deleted_groups = + &Apache::longroup::coursegroups($cdom,$cnum,undef,'deleted_groups'); + if (keys(%deleted_groups) > 0) { + $reenable_link = '    '.$lt{'redg'}.''; + } + } } my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,undef, $status); + if (%curr_groups) { if ($manage_permission) { - if (!exists($env{'form.refpage'})) { - $r->print('
'.$lt{'crng'}.''); + if ($action ne 'reenable') { + $r->print('
'.$lt{'crng'}.''); + } + if ($reenable_link) { + $r->print($reenable_link); } } $r->print('

'); @@ -237,13 +254,13 @@ END my $members_result = &group_members($cdom,$cnum,$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); + &group_files($group,$port_path,\$totalfiles,\$totaldirs); $grp_info{$group}{'totalfiles'} = $totalfiles; $grp_info{$group}{'totaldirs'} = $totaldirs; - my $diskuse = &Apache::lonnet::diskusage($cdom,$cnum,$port_dir); + my $getpropath = 1; + my $diskuse = &Apache::lonnet::diskusage($cdom,$cnum,$port_path, $getpropath); if ($grp_info{$group}{'quota'} > 0) { my $pct_use = 0.1 * $diskuse/$grp_info{$group}{'quota'}; $grp_info{$group}{'diskuse'} = sprintf("%.0f",$pct_use); @@ -312,8 +329,7 @@ END } $link .= '">'.$lt{$action}.''; if ($action eq 'view') { - if (($manage_permission) && - ($env{'form.refpage'} ne 'enrl')) { + if ($manage_permission) { $link .= '  '.$actionlinks{'modify'}. $group.'">'.$lt{'modify'}.''. '  '.$actionlinks{'delete'}. @@ -349,12 +365,14 @@ END } else { $r->print($lt{'nogr'}); if ($manage_permission) { - if (!exists($env{'form.refpage'})) { - $r->print('

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

'.$lt{'crng'}.''); + if ($action ne 'reenable') { + if ($reenable_link) { + $r->print($reenable_link); + } } } else { $r->print('

'.$lt{'alth'}); - } } } else { @@ -848,14 +866,14 @@ function changeSort(caller) { $r->print(&header("Groups Manager", $jscript,$action,$state,$page,$loaditems)); - if ($env{'form.refpage'} eq 'enrl') { + if ($env{'form.refpage'} eq 'cusr') { &Apache::lonhtmlcommon::add_breadcrumb - ({href=>"/adm/dropadd", - text=>"Enrollment Manager", + ({href=>"/adm/createuser", + text=>"User Management", faq=>9,bug=>'Instructor Interface',}); if ($action eq 'modify' || $action eq 'delete') { &Apache::lonhtmlcommon::add_breadcrumb - ({href=>"/adm/coursegroups?refpage=enrl&action=$action", + ({href=>"/adm/coursegroups?refpage=cusr&action=$action", text=>"Groups", faq=>9,bug=>'Instructor Interface',}); } @@ -1132,7 +1150,7 @@ sub verify_delete { my $prevtext = &mt('Go back'); my $nexttext = &mt('Delete group'); my $prev; - if ($env{'form.refpage'} eq 'enrl') { + if ($env{'form.refpage'} eq 'cusr') { $prev = 'view'; } &display_navbuttons($r,$formname,$prev,$prevtext, @@ -1160,7 +1178,8 @@ sub delete_group { $usersettings{$groupname.':'.$user} = $now.':-1:'.$userprivs; if (&Apache::lonnet::modify_group_roles($cdom,$cnum, $groupname,$user, - $now,'-1',$userprivs) + $now,'-1',$userprivs, + '',$context) eq 'ok') { $num_ok ++; push(@deleted,$user); @@ -1216,7 +1235,7 @@ sub reenable_folder { $LONCAPA::map::order[1+$#LONCAPA::map::order]=$idx; my ($outtext,$errtext) = &LONCAPA::map::storemap($allgrpsmap,1); if ($errtext) { - $outcome = &mt('Error storing updated parent folder to group'). + $outcome = &mt('Error saving updated parent folder to group'). "- $allgrpsmap - $errtext".'
'; } else { my ($furl,$ferr) = @@ -1266,7 +1285,7 @@ sub modify_folders { $#LONCAPA::map::order--; my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1); if ($errtext) { - $outcome = &mt('Error storing updated parent folder to group'). "- $map - $errtext".'
'; + $outcome = &mt('Error saving updated parent folder to group'). "- $map - $errtext".'
'; } else { my ($furl,$ferr) = &Apache::lonuserstate::readmap($cdom.'/'.$cnum); @@ -1288,7 +1307,7 @@ sub verify_reenable { my $prevtext = &mt('Go back'); my $nexttext = &mt('Reenable group'); my $prev; - if ($env{'form.refpage'} eq 'enrl') { + if ($env{'form.refpage'} eq 'cusr') { $prev = 'view'; } &display_navbuttons($r,$formname,$prev,$prevtext, @@ -1339,7 +1358,8 @@ sub reenable_group { if (&Apache::lonnet::modify_group_roles($cdom,$cnum, $groupname,$user, $defend,$defstart, - $userprivs) eq 'ok') { + $userprivs,'', +$context) eq 'ok') { $num_ok ++; push(@enabled,$user); } else { @@ -1442,16 +1462,16 @@ sub build_members_list { } sub group_files { - my ($group,$currdir,$numfiles,$numdirs) = @_; + my ($group,$portpath,$numfiles,$numdirs) = @_; my $dirptr=16384; - my @dir_list=&Apache::portfolio::get_dir_list($currdir,$group); + my @dir_list=&Apache::portfolio::get_dir_list($portpath,undef,$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; + $portpath .= '/'.$filename; $$numdirs ++; - &group_files($numfiles,$numdirs) + &group_files($group,$portpath,$numfiles,$numdirs) } else { $$numfiles ++; } @@ -3139,7 +3159,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)); } elsif ($action eq 'modify') { @@ -3282,7 +3302,7 @@ sub process_membership { $curr_privs{$user}; if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname, $user,$now,$savestart, - $curr_privs{$user}) eq 'ok') { + $curr_privs{$user},''',$context) eq 'ok') { push(@{$added{'expired'}},$user); $num_ok ++; } else { @@ -3293,7 +3313,7 @@ sub process_membership { foreach my $user (@deletion) { $usersettings{$groupname.':'.$user} = $now.':-1:'; if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname, - $user,$now,'-1','') + $user,$now,'-1','','',$context) eq 'ok') { push(@{$added{'deleted'}},$user); $num_ok ++; @@ -3347,7 +3367,7 @@ sub process_membership { $group_privs{$user}; if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname, $user,$end,$start, - $group_privs{$user}) eq 'ok') { + $group_privs{$user},'',$context) eq 'ok') { push(@{$added{$type}},$user); $num_ok ++; } else { @@ -3679,8 +3699,8 @@ sub add_group_folder { if ($action eq 'create') { if (&get_folder_lock($cdom,$cnum,'group_allfolders',$now) eq 'ok') { # check if group_allfolders.sequence exists. - my ($errtext,$fatal)=&LONCAPA::map::mapread($allgrpsmap); - if ($fatal == 2) { #file does not exist; + my $mapcontents = &Apache::lonnet::getfile($allgrpsmap); + if ($mapcontents eq '-1') { #file does not exist; my $grpstitle = &mt('[_1] [_2]s',$crstype,$ucgpterm); my $topmap_url = '/'.$env{'course.'.$env{'request.course.id'}.'.url'}; $topmap_url =~ s|/+|/|g; @@ -3706,9 +3726,9 @@ sub add_group_folder { $outcome = &mt('Could not obtain exclusive lock to check status of the folder for all groups. No group folder added.'); return $outcome; } - my $grpfolder = &mt('[_1] Folder -',$ucgpterm,).$description; + my $grpfolder = &mt($ucgpterm.' Folder - [_1]',$description); $grppage='/adm/'.$cdom.'/'.$cnum.'/'.$groupname.'/smppg'; - my $grptitle = &mt('Group homepage').' - '.$description; + my $grptitle = &mt('Group homepage - [_1]',$description); my ($discussions,$disctitle); my $outcome = &map_updater($cdom,$cnum,'group_folder_'.$groupname.'.sequence', 'grpseq',$grpfolder,$allgrpsmap,$grppage, @@ -3767,7 +3787,7 @@ sub get_folder_lock { while (($gotlock ne 'ok') && $tries <3) { $tries ++; - sleep 1; + sleep(1); $gotlock = &Apache::lonnet::newput('coursegroups',$lockhash,$cdom,$cnum); } return $gotlock; @@ -3808,7 +3828,7 @@ sub map_updater { $LONCAPA::map::order[1+$#LONCAPA::map::order]=$newidx; my ($outtext,$errtext) = &LONCAPA::map::storemap($parentmap,1); if ($errtext) { - $outcome = &mt('Error storing updated parent folder')." ($parentmap): $errtext".'
'; + $outcome = &mt('Error saving updated parent folder')." ($parentmap): $errtext".'
'; return $outcome; } }