--- loncom/interface/loncoursegroups.pm 2010/01/26 03:26:02 1.101.4.2 +++ loncom/interface/loncoursegroups.pm 2012/10/04 13:41:10 1.115 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursegroups.pm,v 1.101.4.2 2010/01/26 03:26:02 raeburn Exp $ +# $Id: loncoursegroups.pm,v 1.115 2012/10/04 13:41:10 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -135,7 +135,7 @@ function changeSort(caller) { function openGroupRoster(group,status) { var url = '/adm/grouproster?'; url += 'group='+group+'&status='+status+'&ref=popup'; - var title = 'Group Membership'; + var title = 'Group_Membership'; var options = 'scrollbars=1,resizable=1,menubar=0'; options += ',width=700,height=600'; rosterbrowser = open(url,title,options,'1'); @@ -170,7 +170,7 @@ sub display_groups { my %actionlinks = ( modify => ' ' ''. + &mt('An error occurred retrieving information about resources in the course.').'
'. + &mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','
',''). + ''); + return; + } if ($manage_permission) { if ($action ne 'reenable') { $r->print('
'.$lt{'crng'}.''); @@ -324,7 +332,9 @@ END $action eq 'reenable') { $link .= $group; } else { - $link .= $group.'/smppg?ref=grouplist'; + $link .= + &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap); + $link .= (($link=~/\?/)?'&':'?').'ref=grouplist'; if (exists($env{'form.refpage'})) { $link .= '&refpage='.$env{'form.refpage'}; } @@ -386,16 +396,32 @@ END $r->print('

'); my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); if (%curr_groups) { + my $navmap=Apache::lonnavmaps::navmap->new(); + if (!defined($navmap)) { + $r->print('
'. + &mt('An error occurred retrieving information about resources in the course.').'
'. + &mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','',''). + '
'); + return; + } foreach my $group (@coursegroups) { my %group_info = &Apache::longroup::get_group_settings( $curr_groups{$group}); my $description = &unescape( $group_info{description}); - $r->print(''.$group,'
'.$description.'

'); + my $link = + &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap). + '&ref=grouplist'; + $r->print(''.$group,'
'.$description.'

'); } } } else { - $r->print(&mt('You are not currently a member of any active '.$gpterm.'s in this '.lc($crstype).'.')); + $r->print( + '

' + .&mt('You are not currently a member of any active '.$gpterm.'s' + .' in this '.lc($crstype).'.') + .'

' + ); } } return; @@ -1129,7 +1155,7 @@ sub display_control { &verify_reenable($r,$groupname,$state,$action,$page,$states, \%stored,$crstype); } elsif ($state eq 'result') { - &reenable_group($r,$cdom,$cnum,$groupname); + &reenable_group($r,$cdom,$cnum,$groupname,$crstype); } } } @@ -1210,9 +1236,9 @@ sub delete_group { if ($result eq 'ok') { my $outcome = &modify_folders($cdom,$cnum,$groupname,$crstype); if ($outcome eq '') { - $r->print('
' - .&mt('Group successfully deleted.') - .'
'); + my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Group successfully deleted.')); + $message = &Apache::loncommon::confirmwrapper($message); + $r->print($message); } else { $r->print('
'); if ($crstype eq 'Community') { @@ -1223,9 +1249,9 @@ sub delete_group { $r->print('
'); } } else { - $r->print('
' - .&mt('Group deletion failed.') - .'
'); + my $msg = &Apache::lonhtmlcommon::confirm_success(&mt('Group deletion failed.'),1); + $msg = &Apache::loncommon::confirmwrapper($msg); + $r->print($msg); } } return; @@ -1255,7 +1281,7 @@ sub reenable_folder { $LONCAPA::map::resources[$idx] = $foldertitle.':'.$mapurl. ':false:normal:res'; $LONCAPA::map::order[1+$#LONCAPA::map::order]=$idx; - my ($outtext,$errtext) = &LONCAPA::map::storemap($allgrpsmap,1); + my ($outtext,$errtext) = &LONCAPA::map::storemap($allgrpsmap,1,1); if ($errtext) { $outcome='
' .&mt('An error occurred when saving updated parent folder to group:' @@ -1320,7 +1346,7 @@ sub modify_folders { $LONCAPA::map::order[$i] = $LONCAPA::map::order[$i+1]; } $#LONCAPA::map::order--; - my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1); + my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1,1); if ($errtext) { $outcome='
' .&mt('An error occurred when saving updated parent folder to group:') @@ -1437,9 +1463,9 @@ $context) eq 'ok') { } my $outcome = &reenable_folder($cdom,$cnum,$groupname,$description,$crstype); if ($outcome eq '') { - $r->print('
' - .&mt('Group successfully re-enabled.') - .'
'); + my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Group successfully re-enabled.')); + $message = &Apache::loncommon::confirmwrapper($message); + $r->print($message); } else { $r->print('
'); if ($crstype eq 'Community') { @@ -1450,9 +1476,9 @@ $context) eq 'ok') { $r->print('
'); } } else { - $r->print('
' - .&mt('Re-enabling group failed.') - .'
'); + my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Re-enabling group failed.'),1); + $message = &Apache::loncommon::confirmwrapper($message); + $r->print($message); } return; } @@ -1526,16 +1552,19 @@ sub build_members_list { sub group_files { my ($group,$portpath,$numfiles,$numdirs) = @_; my $dirptr=16384; - 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) { - $portpath .= '/'.$filename; - $$numdirs ++; - &group_files($group,$portpath,$numfiles,$numdirs) - } else { - $$numfiles ++; + my ($dirlistref,$listerror) = + &Apache::portfolio::get_dir_list($portpath,undef,$group); + if (ref($dirlistref) eq 'ARRAY') { + foreach my $line (@{$dirlistref}) { + 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) { + $portpath .= '/'.$filename; + $$numdirs ++; + &group_files($group,$portpath,$numfiles,$numdirs) + } else { + $$numfiles ++; + } } } } @@ -1605,7 +1634,7 @@ sub general_settings_form { &access_date_settings($r,$action,$formname,$stored,2,$gpterm,$ucgpterm); if ($action eq 'create') { &membership_options($r,$cdom,$cnum,$action,$formname,$sectioncount,3, - $gpterm,$ucgpterm); + $gpterm,$ucgpterm,$crstype); $nexttext = $$navbuttons{'gtns'}; } else { my @available = (); @@ -1786,7 +1815,6 @@ sub membership_options { } else { $lt{'asub'} = &mt('A subsequent step will also allow you to specify automatic adding/dropping of group members triggered by specified user role and section [_1]changes[_2] in the course.','',''); } - my %status_types = ( active => &mt('Currently has access'), previous => &mt('Previously had access'), @@ -1805,7 +1833,6 @@ sub membership_options { $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'pipa'}).' '.$lt{'gmem'}.'
'); - if ($action eq 'create') { $r->print($lt{'picr'}.'
'.$lt{'ifno'}.'
'.$lt{'asub'}); } else { @@ -2104,7 +2131,7 @@ sub pick_new_members { &check_uncheck_buttons($r,$formname,'member',$lt{'addm'}); if (@{$available} > 0 && $granularity eq 'Yes') { $r->print(' -
'.$lt{'setf'}.' +
'.$lt{'setf'}.' @@ -2557,7 +2584,7 @@ sub current_membership { $r->print(' -
'.$lt{'curf'}.' +
'.$lt{'curf'}.'    @@ -2715,7 +2742,7 @@ sub check_uncheck_buttons { $r->print('
- '.$title.' + '.$title.' @@ -2795,7 +2822,7 @@ sub change_privs_form { sub add_members_form { my ($r,$cdom,$cnum,$action,$formname,$page,$startdate,$enddate,$groupname, $description,$granularity,$quota,$sectioncount,$tools,$functions, - $stored,$states,$navbuttons,$gpterm,$ucgpterm,$crstype)=@_; + $stored,$states,$navbuttons,$gpterm,$ucgpterm,$crstype)=@_; $r->print('
'); my @available = (); my @unavailable = (); @@ -3015,7 +3042,7 @@ sub member_privileges_form { $r->print(''); } $r->print( - '
'.&mt($$toolprivs{$tool}{$priv}).'' + '
'.&mt($$toolprivs{$tool}{$priv}).'' .'' .' ' @@ -3245,15 +3272,15 @@ sub write_group_data { $description,$tools,\%groupinfo, $gpterm,$ucgpterm,$crstype); if ($result eq 'ok') { - $r->print('
' - .&mt($ucgpterm.' [_1] was created.',''.$groupname.'') - .'
'); + my $msg = &Apache::lonhtmlcommon::confirm_success(&mt($ucgpterm.' [_1] was created.',''.$groupname.'')); + $msg = &Apache::loncommon::confirmwrapper($msg); + $r->print($msg); } else { - $r->print('
' - .&mt('A problem occurred when creating folders for the new '.$gpterm.' [_1]:' - ,''.$groupname.'') - .'
'.$result - .'
'); + my $msg = &Apache::lonhtmlcommon::confirm_success(&mt('A problem occurred when creating folders for the new '.$gpterm.' [_1]:' + ,''.$groupname.'') + .'
'.$result,1); + $msg = &Apache::loncommon::confirmwrapper($msg); + $r->print($msg); } } elsif ($action eq 'modify') { my (@oldtools,@newtools); @@ -3299,8 +3326,8 @@ sub write_group_data { } else { if ($crstype eq 'Community') { $error = &mt("An error occurred while setting parameters '. - 'for Discussion Boards folder: '. - 'Could not retrieve community information"); + 'for Discussion Boards folder: '. + 'Could not retrieve community information"); } else { $error = &mt("An error occurred while setting parameters '. 'for Discussion Boards folder: '. @@ -3324,9 +3351,9 @@ sub write_group_data { $r->print('
'.$error.'
'); } } - $r->print('
' - .&mt($ucgpterm.' [_1] was updated.',''.$groupname.'') - .'
'); + my $message = &Apache::lonhtmlcommon::confirm_success(&mt($ucgpterm.' [_1] was updated.',''.$groupname.'')); + $message = &Apache::loncommon::confirmwrapper($message); + $r->print($message); } } else { my %actiontype = ( @@ -3504,12 +3531,13 @@ sub process_membership { my $roster_result = &Apache::lonnet::modify_coursegroup_membership($cdom, $cnum,\%usersettings); if ($num_ok) { - foreach my $type (sort(keys(%added))) { - $r->print(&mt('The following users were successfully [_1]',$type)); + my $msgall =''; + foreach my $type (sort(keys(%added))) { + my $message = &mt('The following users were successfully [_1]',$type); if (!($type eq 'deleted' || $type eq 'expired')) { - $r->print(&mt(' with the following privileges')); + $message .= &mt(' with the following privileges'); } - $r->print(':
'); + $message .= ':
'; foreach my $user (@{$added{$type}}) { my $privlist = ''; if (!($type eq 'deleted' || $type eq 'expired')) { @@ -3525,10 +3553,14 @@ sub process_membership { } $privlist =~ s/, $//; } - $r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.$privlist.'
'); + $message .= $$userdata{$user}[$$idx{fullname}].' - '.$user.$privlist.'
'; } - $r->print('
'); + $message .= '
'; + $message = &Apache::lonhtmlcommon::confirm_success($message); + $msgall .= $message; } + $msgall = &Apache::loncommon::confirmwrapper($msgall); + $r->print($msgall); } if ($num_fail) { foreach my $type (sort(keys(%failed))) { @@ -3541,13 +3573,15 @@ sub process_membership { } $r->print('
'); } - if (@unchanged > 0) { - $r->print(&mt('No change occurred for the following users:').'
'); - foreach my $user (sort(@unchanged)) { - $r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'
'); - } - $r->print('
'); - } +# Is that really needed? +# +# if (@unchanged > 0) { +# $r->print(&mt('No change occurred for the following users:').'
'); +# foreach my $user (sort(@unchanged)) { +# $r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'
'); +# } +# $r->print('
'); +# } if ($roster_result eq 'ok') { $r->print('
' .&mt($ucgpterm.' membership list updated.') @@ -3555,8 +3589,8 @@ sub process_membership { $r->print('

'); if ($crstype eq 'Community') { $r->print(&mt("Any currently logged in community users affected by the changes you made" - .' to group membership or privileges for the [_1] group will need to log out' - .' and log back in for their LON-CAPA sessions to reflect these changes.' + .' to group membership or privileges for the [_1] group will need to log out' + .' and log back in for their LON-CAPA sessions to reflect these changes.' ,''.$groupname.'')); } else { @@ -3711,36 +3745,32 @@ sub standard_roles { sub modify_menu { my ($r,$groupname,$page,$gpterm) = @_; my @menu = - ( - { text => "Modify default $gpterm settings", - help => 'Course_Modify_Group', - state => 'change_settings', - branch => 'settings', + ( { categorytitle =>'Group Actions', + items => [ + + { linktext => "Modify default $gpterm settings", + url => '/adm/coursegroups?action=modify&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state=change_settings&branch=settings', + icon => 'grp_settings.png', + alttext => "Modify default $gpterm settings", + permission => '1', + help => 'Course_Modify_Group', }, - { text => 'Modify access, tools and/or privileges for previous, '. - 'future, or current members', + { linktext => 'Modify access, tools and privileges for members', + url => '/adm/coursegroups?action=modify&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state=change_members&branch=members', + icon => 'grp_tools.png', + alttext => 'Modify access, tools and privileges for members', + permission => '1', help => 'Course_Modify_Group_Membership', - state => 'change_members', - branch => 'members', }, - { text => "Add member(s) to the $gpterm", + { linktext => "Add member(s) to the $gpterm", + url => '/adm/coursegroups?action=modify&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state=add_members&branch=adds', + icon => 'grp_add.png', + alttext => "Add member(s) to the $gpterm", + permission => '1', help => 'Course_Group_Add_Members', - state => 'add_members', - branch => 'adds', - }, - ); - my $menu_html = ''; - foreach my $menu_item (@menu) { - $menu_html .= - '

'; - $menu_html.= &mt($menu_item->{'text'}).''; - if (exists($menu_item->{'help'})) { - $menu_html.= - &Apache::loncommon::help_open_topic($menu_item->{'help'}); - } - $menu_html.='

'.$/; - } - $r->print($menu_html); + }]} + ); + $r->print(&Apache::lonhtmlcommon::generate_menu(@menu)); return; } @@ -4008,7 +4038,7 @@ sub map_updater { $LONCAPA::map::resources[$newidx] = $itemtitle.':'.$newmapurl. ':false:normal:res'; $LONCAPA::map::order[1+$#LONCAPA::map::order]=$newidx; - my ($outtext,$errtext) = &LONCAPA::map::storemap($parentmap,1); + my ($outtext,$errtext) = &LONCAPA::map::storemap($parentmap,1,1); if ($errtext) { $outcome = '
' .&mt('Error saving updated parent folder.')." ($parentmap): $errtext" @@ -4233,3 +4263,4 @@ sub check_changes { } 1; +