--- loncom/interface/loncoursegroups.pm 2007/12/13 01:08:47 1.71 +++ loncom/interface/loncoursegroups.pm 2008/08/24 12:54:55 1.78 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursegroups.pm,v 1.71 2007/12/13 01:08:47 raeburn Exp $ +# $Id: loncoursegroups.pm,v 1.78 2008/08/24 12:54:55 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -148,7 +148,11 @@ function openGroupRoster(group,status) { &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); @@ -250,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); @@ -402,7 +406,6 @@ sub group_administration { my @types = (); my @roles = (); my @sections = (); - my @buildsections = (); my %users = (); my %userdata = (); my @members = (); @@ -562,16 +565,11 @@ sub group_administration { } if (defined($env{'form.sectionpick'})) { @sections=&Apache::loncommon::get_env_multiple('form.sectionpick'); - if (grep/^all$/,@sections) { - @buildsections = sort {$a cmp $b} keys(%sectioncount); - } else { - @buildsections = @sections; - } } } if (($state eq 'pick_members') || ($state eq 'pick_privs') || ($state eq 'change_privs')) { - &build_members_list($cdom,$cnum,\@types,\@roles,\@buildsections,\%users, + &build_members_list($cdom,$cnum,\@types,\@roles,\@sections,\%users, \%userdata); } if ($state eq 'pick_members') { @@ -1165,6 +1163,7 @@ sub delete_group { my @deleted; my @undeleted; my %usersettings; + my $context = 'deletegroup'; foreach my $key (sort(keys(%membership))) { if ($key =~ /^\Q$groupname\E:([^:]+:[^:]+)$/) { my $user = $1; @@ -1174,7 +1173,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); @@ -1334,6 +1334,7 @@ sub reenable_group { my $num_users = 0; my $num_ok = 0; my $num_fail = 0; + my $context = 'reenablegroup'; my (%usersettings,@enabled,@unenabled); my ($result,$message) = &Apache::lonnet::toggle_coursegroup_status($cdom,$cnum,$groupname, @@ -1353,7 +1354,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 { @@ -1456,16 +1458,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 ++; } @@ -1572,8 +1574,7 @@ sub groupsettings_options { 'for different group members?', ); my ($crsquota,$freespace,$maxposs) = &get_quota_constraints($action,$stored); - &topic_bar($r,$image,$lt{'gnde'}); - $r->print(' + $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'gnde'}).' @@ -1711,8 +1712,7 @@ sub membership_options { my @sections = keys(%{$sectioncount}); - &topic_bar($r,$image,$lt{'pipa'}); - $r->print(' + $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'pipa'}).' '.$lt{'gmem'}.'
'.$lt{'picr'}); if ($action eq 'create') { $r->print($lt{'meof'}.'
'.$lt{'ifno'}.'
'.$lt{'asub'}); @@ -1782,8 +1782,7 @@ sub access_date_settings { } } my ($table) = &date_setting_table($starttime,$endtime,$formname); - &topic_bar($r,$image,$lt{'sten'}); - $r->print(' + $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'sten'}).' '.$table.' '); return; @@ -2021,7 +2020,7 @@ sub pick_new_members { $r->print(&check_uncheck_tools($r,$available)); } } - &topic_bar($r,$img,$lt{'gpme'}); + $r->print(&Apache::lonhtmlcommon::topic_bar($img,$lt{'gpme'})); if (keys(%members) > 0) { $r->print('
'.$lt{'gnam'}.':
@@ -2170,7 +2169,7 @@ sub privilege_specificity { } } } - &topic_bar($r,$img,$lt{'uprv'}); + $r->print(&Apache::lonhtmlcommon::topic_bar($img,$lt{'uprv'})); if ((($action eq 'create') && (@{$available} > 0)) || (($action eq 'modify') && ($formname eq 'change_settings'))) { my %specific = ( @@ -2411,11 +2410,11 @@ sub change_members_form { $r->print('
'); - &topic_bar($r,1,$lt{'grse'}); + $r->print(&Apache::lonhtmlcommon::topic_bar(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'}); + $r->print(&Apache::lonhtmlcommon::topic_bar(2,$lt{'mogm'})); my $numcurrent = ¤t_membership($r,$cdom,$cnum,$formname,$groupname, \@available,\@unavailable,$fixedprivs, $granularity,$specificity); @@ -2665,7 +2664,7 @@ sub change_privs_form { } else { $nexttext = $$navbuttons{'mose'}; } - &topic_bar($r,3,&mt('Members to delete or expire')); + $r->print(&Apache::lonhtmlcommon::topic_bar(3,&mt('Members to delete or expire'))); my $exp_or_del = 0; if (ref($$memchg{'deletion'}) eq 'ARRAY') { if (@{$$memchg{'deletion'}} > 0) { @@ -2693,7 +2692,7 @@ sub change_privs_form { $r->print($lt{'nome'}.'
'); } - &topic_bar($r,4,&mt('Setting optional privileges for specific group members')); + $r->print(&Apache::lonhtmlcommon::topic_bar(4,&mt('Setting optional privileges for specific group members'))); my $numchgs = &member_privileges_form($r,$action,$formname,$tools, $toolprivs,$fixedprivs,$userdata, @@ -2750,7 +2749,7 @@ sub choose_privs_form { $nexttext = $$navbuttons{'adme'}; } - &topic_bar($r,6,&mt('Setting optional privileges for specific group members')); + $r->print(&Apache::lonhtmlcommon::topic_bar(6,&mt('Setting optional privileges for specific group members'))); &member_privileges_form($r,$action,$formname,$tools,$toolprivs, $fixedprivs,$userdata,$usertools,$idx,undef, @@ -3227,6 +3226,7 @@ sub process_membership { my %curr_start = (); my %curr_end = (); my %tooltype = (); + my $context = 'processgroupmembership'; foreach my $tool (@{$tools}) { foreach my $priv (sort(keys(%{$$toolprivs{$tool}}))) { @@ -3296,7 +3296,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 { @@ -3307,7 +3307,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 ++; @@ -3361,7 +3361,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 { @@ -3457,8 +3457,7 @@ sub automapping { if (exists($$stored{'autodrop'})) { $drop = $$stored{'autodrop'}; } - &topic_bar($r,$image,$$lt{'endi'}); - $r->print(' + $r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'endi'}).' '.$$lt{'gmma'}.':
'.$$lt{'adds'}.'
'.$$lt{'drops'}.'

'.$$lt{'auad'}.':  '); @@ -3485,7 +3484,7 @@ sub mapping_settings { } else { @sections = ('all','none'); } - &topic_bar($r,$image,$$lt{'pirs'}); + $r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'pirs'})); my @roles = &standard_roles(); my %customroles = &Apache::lonhtmlcommon::course_custom_roles($cdom,$cnum); $r->print(&Apache::loncommon::start_data_table(). @@ -3720,9 +3719,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, @@ -3986,18 +3985,6 @@ sub validate_groupname { return; } -sub topic_bar { - my ($r,$imgnum,$title) = @_; - $r->print(' -
- '.&mt('Step [_1]',$imgnum).
-	      '  - '.$title.' -
-'); - return; -} - sub check_changes { my ($member_changes,$memchg) = @_; my %exclusions;