version 1.104, 2009/11/06 19:49:26
|
version 1.128, 2016/02/26 21:44:39
|
Line 31 use strict;
|
Line 31 use strict;
|
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
|
use Apache::lonhtmlgateway; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnavmaps(); |
use Apache::lonnavmaps(); |
use Apache::longroup(); |
use Apache::longroup(); |
Line 135 function changeSort(caller) {
|
Line 136 function changeSort(caller) {
|
function openGroupRoster(group,status) { |
function openGroupRoster(group,status) { |
var url = '/adm/grouproster?'; |
var url = '/adm/grouproster?'; |
url += 'group='+group+'&status='+status+'&ref=popup'; |
url += 'group='+group+'&status='+status+'&ref=popup'; |
var title = 'Group Membership'; |
var title = 'Group_Membership'; |
var options = 'scrollbars=1,resizable=1,menubar=0'; |
var options = 'scrollbars=1,resizable=1,menubar=0'; |
options += ',width=700,height=600'; |
options += ',width=700,height=600'; |
rosterbrowser = open(url,title,options,'1'); |
rosterbrowser = open(url,title,options,'1'); |
Line 170 sub display_groups {
|
Line 171 sub display_groups {
|
my %actionlinks = ( |
my %actionlinks = ( |
modify => '<a href="/adm/coursegroups?action=modify&refpage='. |
modify => '<a href="/adm/coursegroups?action=modify&refpage='. |
$env{'form.refpage'}.'&state=pick_task&groupname=', |
$env{'form.refpage'}.'&state=pick_task&groupname=', |
view => '<a href="/adm/'.$cdom.'/'.$cnum.'/', |
view => '<a href="', |
delete => '<a href="/adm/coursegroups?action=delete&refpage='. |
delete => '<a href="/adm/coursegroups?action=delete&refpage='. |
$env{'form.refpage'}.'&state=verify&groupname=', |
$env{'form.refpage'}.'&state=verify&groupname=', |
reenable => '<a href="/adm/coursegroups?action=reenable&refpage='. |
reenable => '<a href="/adm/coursegroups?action=reenable&refpage='. |
Line 188 sub display_groups {
|
Line 189 sub display_groups {
|
crtd => 'Created', |
crtd => 'Created', |
last => 'Last Modified', |
last => 'Last Modified', |
func => 'Collaborative Tools', |
func => 'Collaborative Tools', |
quot => 'Quota (Mb)', |
quot => 'Quota (MB)', |
memb => 'Members', |
memb => 'Members', |
file => 'Files', |
file => 'Files', |
dibd => 'Discussion Boards', |
dibd => 'Discussion Boards', |
Line 221 sub display_groups {
|
Line 222 sub display_groups {
|
$status); |
$status); |
|
|
if (%curr_groups) { |
if (%curr_groups) { |
|
my $navmap=Apache::lonnavmaps::navmap->new(); |
|
if (!defined($navmap)) { |
|
$r->print('<div class="LC_error">'. |
|
&mt('An error occurred retrieving information about resources in the course.').'<br />'. |
|
&mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','<a href="/adm/roles?selectrole=1&newrole='.$env{'request.role'}.'&orgurl=%2fadm%2fcoursegroups">','</a>'). |
|
'</div>'); |
|
return; |
|
} |
if ($manage_permission) { |
if ($manage_permission) { |
if ($action ne 'reenable') { |
if ($action ne 'reenable') { |
$r->print('<br /><a href="/adm/coursegroups?action=create&refpage='.$env{'form.refpage'}.'">'.$lt{'crng'}.'</a>'); |
$r->print('<br /><a href="/adm/coursegroups?action=create&refpage='.$env{'form.refpage'}.'">'.$lt{'crng'}.'</a>'); |
Line 319 END
|
Line 328 END
|
if (!$functionality) { |
if (!$functionality) { |
$functionality = &mt('None available'); |
$functionality = &mt('None available'); |
} |
} |
my $link = $actionlinks{$action}; |
my $link; |
if ($action eq 'modify' || $action eq 'delete' || |
if ($action eq 'modify' || $action eq 'delete' || |
$action eq 'reenable') { |
$action eq 'reenable') { |
$link .= $group; |
$link = $actionlinks{$action}.$group.'">'.$lt{$action}.'</a>'; |
} else { |
} else { |
$link .= $group.'/smppg?ref=grouplist'; |
$link = |
if (exists($env{'form.refpage'})) { |
&Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap,$view_permission); |
$link .= '&refpage='.$env{'form.refpage'}; |
print STDERR "link is ||$link||\n"; |
} |
if ($link) { |
|
$link = $actionlinks{$action}.$link; |
|
$link .= (($link=~/\?/)?'&':'?').'ref=grouplist'; |
|
if (exists($env{'form.refpage'})) { |
|
$link .= '&refpage='.$env{'form.refpage'}; |
|
} |
|
$link .= '">'.$lt{$action}.'</a>'; |
|
} |
} |
} |
$link .= '">'.$lt{$action}.'</a>'; |
|
if ($action eq 'view') { |
if ($action eq 'view') { |
if ($manage_permission) { |
if ($manage_permission) { |
$link .= ' '.$actionlinks{'modify'}. |
$link .= ' '.$actionlinks{'modify'}. |
Line 383 END
|
Line 398 END
|
} else { |
} else { |
my @coursegroups = split(/:/,$env{'request.course.groups'}); |
my @coursegroups = split(/:/,$env{'request.course.groups'}); |
if (@coursegroups > 0) { |
if (@coursegroups > 0) { |
|
my $numlinks = 0; |
$r->print('<br /><br />'); |
$r->print('<br /><br />'); |
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); |
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); |
if (%curr_groups) { |
if (%curr_groups) { |
|
my $navmap=Apache::lonnavmaps::navmap->new(); |
|
if (!defined($navmap)) { |
|
$r->print('<div class="LC_error">'. |
|
&mt('An error occurred retrieving information about resources in the course.').'<br />'. |
|
&mt('It is recommended that you [_1]re-initialize the course[_2] and then return to this page.','<a href="/adm/roles?selectrole=1&newrole='.$env{'request.role'}.'&orgurl=%2fadm%2fcoursegroups">','</a>'). |
|
'</div>'); |
|
return; |
|
} |
foreach my $group (@coursegroups) { |
foreach my $group (@coursegroups) { |
my %group_info = &Apache::longroup::get_group_settings( |
my %group_info = &Apache::longroup::get_group_settings( |
$curr_groups{$group}); |
$curr_groups{$group}); |
my $description = &unescape( |
my $description = &unescape( |
$group_info{description}); |
$group_info{description}); |
$r->print('<font size="+1"><a href="/adm/'.$cdom.'/'.$cnum.'/'.$group.'/smppg?ref=grouplist">'.$group,'</a><font><br /><small>'.$description.'</small><br /><br />'); |
my ($link,$hidden) = |
|
&Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap,$view_permission); |
|
print STDERR "link is ||$link||\n"; |
|
if ($link) { |
|
$link .= '&ref=grouplist'; |
|
$r->print('<span style="font-size: larger"><a href="'.$link.'">'. |
|
$description.'</a></span><br /><br />'); |
|
$numlinks ++; |
|
} elsif ($hidden) { |
|
my $numtools = 0; |
|
my $refarg = '&ref=grouplist'; |
|
my $output = |
|
&Apache::longroup::display_group_links($r,$env{'form.grade_target'},$group,'view', |
|
$refarg,\$numtools,$hidden,%group_info); |
|
if ($numtools) { |
|
$r->print('<span style="font-size: larger">'.$description.'</a></span>'. |
|
'<br />'.$output.'<br /><br />'); |
|
$numlinks ++; |
|
} |
|
} |
} |
} |
} |
} |
|
if (!$numlinks) { |
|
$r->print( |
|
'<p class="LC_info">' |
|
.&mt('You do not currently have access to any '.$gpterm.'s' |
|
.' in this '.lc($crstype).'.') |
|
.'</p>' |
|
); |
|
} |
} else { |
} else { |
$r->print(&mt('You are not currently a member of any active '.$gpterm.'s in this '.lc($crstype).'.')); |
$r->print( |
|
'<p class="LC_info">' |
|
.&mt('You are not currently a member of any active '.$gpterm.'s' |
|
.' in this '.lc($crstype).'.') |
|
.'</p>' |
|
); |
} |
} |
} |
} |
return; |
return; |
Line 785 sub group_administration {
|
Line 841 sub group_administration {
|
} |
} |
var maxposs = '.sprintf("%.2f",$maxposs).'; |
var maxposs = '.sprintf("%.2f",$maxposs).'; |
if (newquota > maxposs) { |
if (newquota > maxposs) { |
alert("The group portfolio quota you entered for this group ("+newquota+" Mb) exceeds the maximum possible ("+maxposs+" Mb). Please enter a smaller number."); |
alert("The group portfolio quota you entered for this group ("+newquota+" MB) exceeds the maximum possible ("+maxposs+" MB). Please enter a smaller number."); |
return; |
return; |
} |
} |
var re_quota = '.$float_check.'; |
var re_quota = '.$float_check.'; |
Line 804 sub group_administration {
|
Line 860 sub group_administration {
|
} |
} |
} |
} |
if (warn_zero == 1) { |
if (warn_zero == 1) { |
alert("You have indicated that the group portfolio should be enabled, but you have set the respository quota to 0 Mb.\nThis will prevent any upload of files.\nPlease set a value or disable the repository feature."); |
alert("You have indicated that the group portfolio should be enabled, but you have set the repository quota to 0 MB.\nThis will prevent any upload of files.\nPlease set a value or disable the repository feature."); |
return; |
return; |
} |
} |
} |
} |
Line 1210 sub delete_group {
|
Line 1266 sub delete_group {
|
if ($result eq 'ok') { |
if ($result eq 'ok') { |
my $outcome = &modify_folders($cdom,$cnum,$groupname,$crstype); |
my $outcome = &modify_folders($cdom,$cnum,$groupname,$crstype); |
if ($outcome eq '') { |
if ($outcome eq '') { |
$r->print('<div class="LC_success">' |
my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Group successfully deleted.')); |
.&mt('Group successfully deleted.') |
$message = &Apache::loncommon::confirmwrapper($message); |
.'</div>'); |
$r->print($message); |
} else { |
} else { |
$r->print('<div class="LC_error">'); |
$r->print('<div class="LC_error">'); |
if ($crstype eq 'Comunity') { |
if ($crstype eq 'Community') { |
$r->print(&mt("Although the group was deleted, an error occurred when removing the group's folder from the 'Community Groups' folder: [_1]",$outcome)); |
$r->print(&mt("Although the group was deleted, an error occurred when removing the group's folder from the 'Community Groups' folder: [_1]",$outcome)); |
} else { |
} else { |
$r->print(&mt("Although the group was deleted, an error occurred when removing the group's folder from the 'Course Groups' folder: [_1]",$outcome)); |
$r->print(&mt("Although the group was deleted, an error occurred when removing the group's folder from the 'Course Groups' folder: [_1]",$outcome)); |
Line 1223 sub delete_group {
|
Line 1279 sub delete_group {
|
$r->print('</div>'); |
$r->print('</div>'); |
} |
} |
} else { |
} else { |
$r->print('<div class="LC_error">' |
my $msg = &Apache::lonhtmlcommon::confirm_success(&mt('Group deletion failed.'),1); |
.&mt('Group deletion failed.') |
$msg = &Apache::loncommon::confirmwrapper($msg); |
.'</div>'); |
$r->print($msg); |
} |
} |
} |
} |
return; |
return; |
Line 1255 sub reenable_folder {
|
Line 1311 sub reenable_folder {
|
$LONCAPA::map::resources[$idx] = $foldertitle.':'.$mapurl. |
$LONCAPA::map::resources[$idx] = $foldertitle.':'.$mapurl. |
':false:normal:res'; |
':false:normal:res'; |
$LONCAPA::map::order[1+$#LONCAPA::map::order]=$idx; |
$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) { |
if ($errtext) { |
$outcome='<div class="LC_error">' |
$outcome='<div class="LC_error">' |
.&mt('An error occurred when saving updated parent folder to group:' |
.&mt('An error occurred when saving updated parent folder to group:' |
Line 1320 sub modify_folders {
|
Line 1376 sub modify_folders {
|
$LONCAPA::map::order[$i] = $LONCAPA::map::order[$i+1]; |
$LONCAPA::map::order[$i] = $LONCAPA::map::order[$i+1]; |
} |
} |
$#LONCAPA::map::order--; |
$#LONCAPA::map::order--; |
my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1); |
my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1,1); |
if ($errtext) { |
if ($errtext) { |
$outcome='<div class="LC_error">' |
$outcome='<div class="LC_error">' |
.&mt('An error occurred when saving updated parent folder to group:') |
.&mt('An error occurred when saving updated parent folder to group:') |
Line 1437 $context) eq 'ok') {
|
Line 1493 $context) eq 'ok') {
|
} |
} |
my $outcome = &reenable_folder($cdom,$cnum,$groupname,$description,$crstype); |
my $outcome = &reenable_folder($cdom,$cnum,$groupname,$description,$crstype); |
if ($outcome eq '') { |
if ($outcome eq '') { |
$r->print('<div class="LC_success">' |
my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Group successfully re-enabled.')); |
.&mt('Group successfully re-enabled.') |
$message = &Apache::loncommon::confirmwrapper($message); |
.'</div>'); |
$r->print($message); |
} else { |
} else { |
$r->print('<div class="LC_error">'); |
$r->print('<div class="LC_error">'); |
if ($crstype eq 'Comunity') { |
if ($crstype eq 'Community') { |
$r->print(&mt("Although the group was re-enabled, an error occurred when adding the group's folder to the 'Community Groups' folder: [_1]",$outcome)); |
$r->print(&mt("Although the group was re-enabled, an error occurred when adding the group's folder to the 'Community Groups' folder: [_1]",$outcome)); |
} else { |
} else { |
$r->print(&mt("Although the group was re-enabled, an error occurred when adding the group's folder to the 'Course Groups' folder: [_1]",$outcome)); |
$r->print(&mt("Although the group was re-enabled, an error occurred when adding the group's folder to the 'Course Groups' folder: [_1]",$outcome)); |
Line 1450 $context) eq 'ok') {
|
Line 1506 $context) eq 'ok') {
|
$r->print('</div>'); |
$r->print('</div>'); |
} |
} |
} else { |
} else { |
$r->print('<div class="LC_error">' |
my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Re-enabling group failed.'),1); |
.&mt('Re-enabling group failed.') |
$message = &Apache::loncommon::confirmwrapper($message); |
.'</div>'); |
$r->print($message); |
} |
} |
return; |
return; |
} |
} |
Line 1466 sub header {
|
Line 1522 sub header {
|
{'add_entries' => $loaditems,}); |
{'add_entries' => $loaditems,}); |
my $output = <<"END"; |
my $output = <<"END"; |
$start_page |
$start_page |
<form method="post" name="$state"> |
<form method="post" name="$state" action=""> |
|
|
END |
END |
if ($action eq 'create' || $action eq 'modify') { |
if ($action eq 'create' || $action eq 'modify') { |
Line 1526 sub build_members_list {
|
Line 1582 sub build_members_list {
|
sub group_files { |
sub group_files { |
my ($group,$portpath,$numfiles,$numdirs) = @_; |
my ($group,$portpath,$numfiles,$numdirs) = @_; |
my $dirptr=16384; |
my $dirptr=16384; |
my @dir_list=&Apache::portfolio::get_dir_list($portpath,undef,$group); |
my ($dirlistref,$listerror) = |
foreach my $line (@dir_list) { |
&Apache::portfolio::get_dir_list($portpath,undef,$group); |
my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16); |
if (ref($dirlistref) eq 'ARRAY') { |
if (($filename !~ /^\.\.?$/) && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/) && ($filename ne 'no_such_dir')) { |
foreach my $line (@{$dirlistref}) { |
if ($dirptr&$testdir) { |
my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16); |
$portpath .= '/'.$filename; |
if (($filename !~ /^\.\.?$/) && ($filename !~ /\.meta$/ ) && ($filename !~ /(.*)\.(\d+)\.([^\.]*)$/) && ($filename ne 'no_such_dir')) { |
$$numdirs ++; |
if ($dirptr&$testdir) { |
&group_files($group,$portpath,$numfiles,$numdirs) |
$portpath .= '/'.$filename; |
} else { |
$$numdirs ++; |
$$numfiles ++; |
&group_files($group,$portpath,$numfiles,$numdirs) |
|
} else { |
|
$$numfiles ++; |
|
} |
} |
} |
} |
} |
} |
} |
Line 1557 sub group_members {
|
Line 1616 sub group_members {
|
future => 0, |
future => 0, |
); |
); |
my $totalmembers = 0; |
my $totalmembers = 0; |
foreach my $member (keys %memberhash) { |
foreach my $member (keys(%memberhash)) { |
$totalmembers ++; |
$totalmembers ++; |
my ($end,$start) = split(/:/,$memberhash{$member}); |
my ($end,$start) = split(/:/,$memberhash{$member}); |
unless ($start == -1) { |
unless ($start == -1) { |
Line 1672 sub groupsettings_options {
|
Line 1731 sub groupsettings_options {
|
if ($remnum) { |
if ($remnum) { |
$halfnum ++; |
$halfnum ++; |
} |
} |
my @allfunctions = sort(keys (%{$functions})); |
my @allfunctions = sort(keys(%{$functions})); |
|
|
$r->print(&Apache::lonhtmlcommon::row_title($lt{'func'}) |
$r->print(&Apache::lonhtmlcommon::row_title($lt{'func'}) |
.'<div>' |
.'<div>' |
Line 1727 sub groupsettings_options {
|
Line 1786 sub groupsettings_options {
|
} else { |
} else { |
$r->print(&mt('Quota allocated to group portfolio:')); |
$r->print(&mt('Quota allocated to group portfolio:')); |
} |
} |
$r->print(' '.&mt('[_1] Mb','<input type="text" name="quota" size="4" />')); |
$r->print(' '.&mt('[_1] MB','<input type="text" name="quota" size="4" />')); |
if ($action eq 'create') { |
if ($action eq 'create') { |
$r->print('<br />' |
$r->print('<br />' |
.&mt('A total of [_1] Mb can be divided amongst all '.$gpterm.'s in the ' |
.&mt('A total of [_1] MB can be divided amongst all '.$gpterm.'s in the ' |
.lc($crstype).', and [_2] Mb are currently unallocated.' |
.lc($crstype).', and [_2] MB are currently unallocated.' |
,$crsquota,sprintf("%.2f",$freespace)) |
,$crsquota,sprintf("%.2f",$freespace)) |
); |
); |
} else { |
} else { |
$r->print(' ('.&mt('The quota is currently [_1] Mb', |
$r->print(' ('.&mt('The quota is currently [_1] MB', |
$$stored{'quota'}).').'); |
$$stored{'quota'}).').'); |
|
|
$r->print('<br />' |
$r->print('<br />' |
.&mt('The quota can be increased to [_1] Mb, ' |
.&mt('The quota can be increased to [_1] MB, ' |
.'by adding all unallocated space for '.$gpterm.'s in the '.lc($crstype).'.' |
.'by adding all unallocated space for '.$gpterm.'s in the '.lc($crstype).'.' |
,sprintf("%.2f",$maxposs))); |
,sprintf("%.2f",$maxposs))); |
} |
} |
Line 1774 sub membership_options {
|
Line 1833 sub membership_options {
|
'picr' => 'Pick the criteria to use to build a list of course users from which you will select members of the new group.', |
'picr' => 'Pick the criteria to use to build a list of course users from which you will select members of the new group.', |
'pica' => 'Pick the criteria to use to build a list of course users from which you will select additional members of the group.', |
'pica' => 'Pick the criteria to use to build a list of course users from which you will select additional members of the group.', |
'ifno' => 'If you do not wish to add members when you first create the group, there is no need to pick any criteria.', |
'ifno' => 'If you do not wish to add members when you first create the group, there is no need to pick any criteria.', |
'asub' => 'A subsequent step will also allow you to specify automatic adding/dropping of group members triggered by specified user role and section <i>changes</i> in the course.', |
|
'acty' => 'Access types', |
'acty' => 'Access types', |
'coro' => 'Course roles', |
'coro' => 'Course roles', |
'cose' => 'Course sections', |
'cose' => 'Course sections', |
Line 1988 sub print_current_settings {
|
Line 2046 sub print_current_settings {
|
dfac => 'Default access dates', |
dfac => 'Default access dates', |
ygrs => "Your group selections - ", |
ygrs => "Your group selections - ", |
tfwa => "The following settings will apply to the group:", |
tfwa => "The following settings will apply to the group:", |
difn => 'Different collaborative tools<br />for different members:', |
|
stda => 'Start date:', |
stda => 'Start date:', |
enda => 'End date:', |
enda => 'End date:', |
); |
); |
|
$lt{'difn'} = &mt('Different collaborative tools[_1]for different members:','<br />'); |
my $showstart = &Apache::lonlocal::locallocaltime($startdate); |
my $showstart = &Apache::lonlocal::locallocaltime($startdate); |
my $showend; |
my $showend; |
if ($enddate == 0) { |
if ($enddate == 0) { |
Line 2041 sub print_current_settings {
|
Line 2099 sub print_current_settings {
|
$r->print('</ul>'); |
$r->print('</ul>'); |
} |
} |
|
|
my $quota_text=&mt('[_1] Mb',$quota); |
my $quota_text=&mt('[_1] MB',$quota); |
my $granu_text=&mt($granularity); |
my $granu_text=&mt($granularity); |
$r->print(<<"END"); |
$r->print(<<"END"); |
</td> |
</td> |
Line 2231 sub privilege_specificity {
|
Line 2289 sub privilege_specificity {
|
"for users who receive specific sections/roles in the course ", |
"for users who receive specific sections/roles in the course ", |
'asyo' => "As you have chosen not to include any collaborative tools ". |
'asyo' => "As you have chosen not to include any collaborative tools ". |
"in the group, no default optional privileges need to be set.", |
"in the group, no default optional privileges need to be set.", |
'plin' => 'Indicate which <b>optional</b> privileges members '. |
|
'will receive by default for a specific tool.', |
'will receive by default for a specific tool.', |
'oppr' => 'Optional privileges', |
'oppr' => 'Optional privileges', |
'defp' => 'The default privileges new members will receive are:', |
'defp' => 'The default privileges new members will receive are:', |
); |
); |
|
$lt{'plin'} = &mt('Indicate which [_1]optional[_2] privileges members '. |
|
'will receive by default for a specific tool.','<b>','</b>'); |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
$lt{'thes'} = &mt('These will be the privileges given to members assigned in the future via automatic group assignment for users who receive specific sections/roles in the community '); |
$lt{'thes'} = &mt('These will be the privileges given to members assigned in the future via automatic group assignment for users who receive specific sections/roles in the community '); |
} |
} |
Line 2337 sub default_privileges {
|
Line 2396 sub default_privileges {
|
&Apache::lonhtmlcommon::row_title($lt{'func'},undef, |
&Apache::lonhtmlcommon::row_title($lt{'func'},undef, |
'LC_groups_functionality')); |
'LC_groups_functionality')); |
my @tableHeader; |
my @tableHeader; |
foreach my $key (sort(keys(%{$functions}))){ |
if ((ref($functions) eq 'HASH') && (ref($tools) eq 'ARRAY')) { |
push (@tableHeader,&mt($functions->{$key})); |
@tableHeader = map { $functions->{$_}; } @{$tools}; |
} |
} |
$r->print(join('</td><td class="LC_groups_functionality">', @tableHeader)); |
$r->print(join('</td><td class="LC_groups_functionality">', @tableHeader)); |
$r->print(&Apache::lonhtmlcommon::row_closure(1)); |
$r->print(&Apache::lonhtmlcommon::row_closure(1)); |
my $fixed = ''; |
my $fixed = ''; |
Line 2519 sub current_membership {
|
Line 2578 sub current_membership {
|
'actn' => 'Action?', |
'actn' => 'Action?', |
'name' => 'Name', |
'name' => 'Name', |
'usnm' => 'Username', |
'usnm' => 'Username', |
|
'stid' => 'ID', |
'doma' => 'Domain', |
'doma' => 'Domain', |
'stda' => 'Start Date', |
'stda' => 'Start Date', |
'enda' => 'End Date', |
'enda' => 'End Date', |
Line 2580 END
|
Line 2640 END
|
<th><a href="javascript:changeSort('fullname')">$lt{'name'}</a></th> |
<th><a href="javascript:changeSort('fullname')">$lt{'name'}</a></th> |
<th><a href="javascript:changeSort('username')">$lt{'usnm'}</a></th> |
<th><a href="javascript:changeSort('username')">$lt{'usnm'}</a></th> |
<th><a href="javascript:changeSort('domain')">$lt{'doma'}</a></th> |
<th><a href="javascript:changeSort('domain')">$lt{'doma'}</a></th> |
<th><a href="javascript:changeSort('id')">ID</a></th> |
<th><a href="javascript:changeSort('id')">$lt{'ID'}</a></th> |
<th><a href="javascript:changeSort('start')">$lt{'stda'}</a></th> |
<th><a href="javascript:changeSort('start')">$lt{'stda'}</a></th> |
<th><a href="javascript:changeSort('end')">$lt{'enda'}</a></th> |
<th><a href="javascript:changeSort('end')">$lt{'enda'}</a></th> |
END |
END |
Line 2704 END
|
Line 2764 END
|
} |
} |
$r->print(&Apache::loncommon::end_data_table()); |
$r->print(&Apache::loncommon::end_data_table()); |
} else { |
} else { |
$r->print(&mt('There are no active, future or previous group members to modify.')); |
$r->print( |
|
'<p class="LC_info">' |
|
.&mt('There are no active, future or previous group members to modify.') |
|
.'</p>'); |
} |
} |
return $numcurrent; |
return $numcurrent; |
} |
} |
Line 2772 sub change_privs_form {
|
Line 2835 sub change_privs_form {
|
} |
} |
} |
} |
if (!$exp_or_del) { |
if (!$exp_or_del) { |
$r->print($lt{'nome'}.'<br />'); |
$r->print('<p class="LC_info">'.$lt{'nome'}.'</p>'); |
} |
} |
|
|
$r->print(&Apache::lonhtmlcommon::topic_bar(4,&mt('Setting optional privileges for specific group members'))); |
$r->print(&Apache::lonhtmlcommon::topic_bar(4,&mt('Setting optional privileges for specific group members'))); |
Line 3168 sub write_group_data {
|
Line 3231 sub write_group_data {
|
$quota = 0; |
$quota = 0; |
$r->print('<div class="LC_warning">' |
$r->print('<div class="LC_warning">' |
.&mt('The value you entered for the quota for the group portfolio in this '.$gpterm |
.&mt('The value you entered for the quota for the group portfolio in this '.$gpterm |
.' contained invalid characters, so it has been set to 0 Mb. You can change this by' |
.' contained invalid characters, so it has been set to 0 MB. You can change this by' |
.' modifying the '.$gpterm.' settings.') |
.' modifying the '.$gpterm.' settings.') |
.'</div>'); |
.'</div>'); |
} |
} |
Line 3176 sub write_group_data {
|
Line 3239 sub write_group_data {
|
$quota = $maxposs; |
$quota = $maxposs; |
$r->print('<div class="LC_warning">' |
$r->print('<div class="LC_warning">' |
.&mt('The value you entered for the quota for the group portfolio in this '.$gpterm |
.&mt('The value you entered for the quota for the group portfolio in this '.$gpterm |
.' exceeded the maximum possible value, so it has been set to [_1] Mb ' |
.' exceeded the maximum possible value, so it has been set to [_1] MB ' |
.'(the maximum possible value).',sprintf("%.2f",$maxposs)) |
.'(the maximum possible value).',sprintf("%.2f",$maxposs)) |
.'</div>'); |
.'</div>'); |
} |
} |
Line 3244 sub write_group_data {
|
Line 3307 sub write_group_data {
|
$description,$tools,\%groupinfo, |
$description,$tools,\%groupinfo, |
$gpterm,$ucgpterm,$crstype); |
$gpterm,$ucgpterm,$crstype); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
$r->print('<div class="LC_success">' |
my $msg = &Apache::lonhtmlcommon::confirm_success(&mt($ucgpterm.' [_1] was created.','<i>'.$groupname.'</i>')); |
.&mt($ucgpterm.' [_1] was created.','<i>'.$groupname.'</i>') |
$msg = &Apache::loncommon::confirmwrapper($msg); |
.'</div>'); |
$r->print($msg); |
} else { |
} else { |
$r->print('<div class="LC_error">' |
my $msg = &Apache::lonhtmlcommon::confirm_success(&mt('A problem occurred when creating folders for the new '.$gpterm.' [_1]:' |
.&mt('A problem occurred when creating folders for the new '.$gpterm.' [_1]:' |
,'<i>'.$groupname.'</i>') |
,'<i>'.$groupname.'</i>') |
.'<br />'.$result,1); |
.'<br />'.$result |
$msg = &Apache::loncommon::confirmwrapper($msg); |
.'</div>'); |
$r->print($msg); |
} |
} |
} elsif ($action eq 'modify') { |
} elsif ($action eq 'modify') { |
my (@oldtools,@newtools); |
my (@oldtools,@newtools); |
Line 3323 sub write_group_data {
|
Line 3386 sub write_group_data {
|
$r->print('<div class="LC_error">'.$error.'</div>'); |
$r->print('<div class="LC_error">'.$error.'</div>'); |
} |
} |
} |
} |
$r->print('<div class="LC_success">' |
my $message = &Apache::lonhtmlcommon::confirm_success(&mt($ucgpterm.' [_1] was updated.','<i>'.$groupname.'</i>')); |
.&mt($ucgpterm.' [_1] was updated.','<i>'.$groupname.'</i>') |
$message = &Apache::loncommon::confirmwrapper($message); |
.'</div>'); |
$r->print($message); |
} |
} |
} else { |
} else { |
my %actiontype = ( |
my %actiontype = ( |
Line 3335 sub write_group_data {
|
Line 3398 sub write_group_data {
|
&Apache::lonnet::logthis("Failed to store $gpterm $groupname ". |
&Apache::lonnet::logthis("Failed to store $gpterm $groupname ". |
'in '.lc($crstype).': '.$cnum. |
'in '.lc($crstype).': '.$cnum. |
' in domain: '.$cdom); |
' in domain: '.$cdom); |
$r->print('<div class="LC_error">' |
$r->print('<p class="LC_error">' |
.&mt('An error occurred when [_1] the '.$gpterm.'. ' |
.&mt('An error occurred when '.$actiontype{$action}.' the '.$gpterm.'. ' |
.'Please try again.',$actiontype{$action}) |
.'Please try again.') |
.'</div>'); |
.'</p'); |
} |
} |
return $result; |
return $result; |
} |
} |
Line 3469 sub process_membership {
|
Line 3532 sub process_membership {
|
if (grep/^$user$/,@reenable) { |
if (grep/^$user$/,@reenable) { |
$start = $startdate; |
$start = $startdate; |
$end = $enddate; |
$end = $enddate; |
$type = 'reenabled'; |
$type = 're-enabled'; |
} |
} |
} |
} |
if ($type eq '') { |
if ($type eq '') { |
Line 3503 sub process_membership {
|
Line 3566 sub process_membership {
|
my $roster_result = &Apache::lonnet::modify_coursegroup_membership($cdom, |
my $roster_result = &Apache::lonnet::modify_coursegroup_membership($cdom, |
$cnum,\%usersettings); |
$cnum,\%usersettings); |
if ($num_ok) { |
if ($num_ok) { |
foreach my $type (sort(keys(%added))) { |
my $msgall =''; |
$r->print(&mt('The following users were successfully [_1]',$type)); |
foreach my $type (sort(keys(%added))) { |
|
my $message; |
|
my $tmsg = "The following users were successfully $type"; |
if (!($type eq 'deleted' || $type eq 'expired')) { |
if (!($type eq 'deleted' || $type eq 'expired')) { |
$r->print(&mt(' with the following privileges')); |
$tmsg .= ' with the following privileges'; |
} |
} |
$r->print(':<br />'); |
$message .= &mt($tmsg.':').'<br/>'; |
foreach my $user (@{$added{$type}}) { |
foreach my $user (@{$added{$type}}) { |
my $privlist = ''; |
my $privlist = ''; |
if (!($type eq 'deleted' || $type eq 'expired')) { |
if (!($type eq 'deleted' || $type eq 'expired')) { |
Line 3524 sub process_membership {
|
Line 3589 sub process_membership {
|
} |
} |
$privlist =~ s/, $//; |
$privlist =~ s/, $//; |
} |
} |
$r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.$privlist.'<br />'); |
$message .= $$userdata{$user}[$$idx{fullname}].' - '.$user.$privlist.'<br />'; |
} |
} |
$r->print('<br />'); |
$message .= '<br/>'; |
|
$message = &Apache::lonhtmlcommon::confirm_success($message); |
|
$msgall .= $message; |
} |
} |
|
$msgall = &Apache::loncommon::confirmwrapper($msgall); |
|
$r->print($msgall); |
} |
} |
if ($num_fail) { |
if ($num_fail) { |
foreach my $type (sort(keys(%failed))) { |
foreach my $type (sort(keys(%failed))) { |
Line 3540 sub process_membership {
|
Line 3609 sub process_membership {
|
} |
} |
$r->print('<br />'); |
$r->print('<br />'); |
} |
} |
if (@unchanged > 0) { |
# Is that really needed? |
$r->print(&mt('No change occurred for the following users:').'<br />'); |
# |
foreach my $user (sort(@unchanged)) { |
# if (@unchanged > 0) { |
$r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'<br />'); |
# $r->print(&mt('No change occurred for the following users:').'<br />'); |
} |
# foreach my $user (sort(@unchanged)) { |
$r->print('<br />'); |
# $r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'<br />'); |
} |
# } |
|
# $r->print('<br />'); |
|
# } |
if ($roster_result eq 'ok') { |
if ($roster_result eq 'ok') { |
$r->print('<div class="LC_success">' |
$r->print('<div class="LC_success">' |
.&mt($ucgpterm.' membership list updated.') |
.&mt($ucgpterm.' membership list updated.') |
Line 3710 sub standard_roles {
|
Line 3781 sub standard_roles {
|
sub modify_menu { |
sub modify_menu { |
my ($r,$groupname,$page,$gpterm) = @_; |
my ($r,$groupname,$page,$gpterm) = @_; |
my @menu = |
my @menu = |
( |
( { categorytitle =>'Group Actions', |
{ text => "Modify default $gpterm settings", |
items => [ |
help => 'Course_Modify_Group', |
|
state => 'change_settings', |
{ linktext => "Modify default $gpterm settings", |
branch => '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, '. |
{ linktext => 'Modify access, tools and privileges for members', |
'future, or current 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', |
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', |
help => 'Course_Group_Add_Members', |
state => 'add_members', |
}]} |
branch => 'adds', |
); |
}, |
$r->print(&Apache::lonhtmlcommon::generate_menu(@menu)); |
); |
|
my $menu_html = ''; |
|
foreach my $menu_item (@menu) { |
|
$menu_html .= |
|
'<p><font size="+1"><a href="/adm/coursegroups?action=modify&refpage='.$env{'form.refpage'}.'&groupname='.$groupname.'&state='.$menu_item->{'state'}.'&branch='.$menu_item->{'branch'}.'">'; |
|
$menu_html.= &mt($menu_item->{'text'}).'</a></font>'; |
|
if (exists($menu_item->{'help'})) { |
|
$menu_html.= |
|
&Apache::loncommon::help_open_topic($menu_item->{'help'}); |
|
} |
|
$menu_html.='</p>'.$/; |
|
} |
|
$r->print($menu_html); |
|
return; |
return; |
} |
} |
|
|
Line 4007 sub map_updater {
|
Line 4074 sub map_updater {
|
$LONCAPA::map::resources[$newidx] = $itemtitle.':'.$newmapurl. |
$LONCAPA::map::resources[$newidx] = $itemtitle.':'.$newmapurl. |
':false:normal:res'; |
':false:normal:res'; |
$LONCAPA::map::order[1+$#LONCAPA::map::order]=$newidx; |
$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) { |
if ($errtext) { |
$outcome = '<div class="LC_error">' |
$outcome = '<div class="LC_error">' |
.&mt('Error saving updated parent folder.')." ($parentmap): $errtext" |
.&mt('Error saving updated parent folder.')." ($parentmap): $errtext" |
Line 4088 sub create_homepage {
|
Line 4155 sub create_homepage {
|
my ($cdom,$cnum,$name,$groupinfo,$tools,$gpterm,$ucgpterm,$now) = @_; |
my ($cdom,$cnum,$name,$groupinfo,$tools,$gpterm,$ucgpterm,$now) = @_; |
my $functionality = join(',',@{$tools}); |
my $functionality = join(',',@{$tools}); |
my $content = &unescape($$groupinfo{description}); |
my $content = &unescape($$groupinfo{description}); |
$content=~s/\s+$//s; |
chomp($content); |
$content=~s/^\s+//s; |
my $gateway = Apache::lonhtmlgateway->new(); |
$content=~s/\<br\s*\/*\>$//s; |
$content = $gateway->process_incoming_html($content,1); |
$content=&Apache::lonfeedback::clear_out_html($content,1); |
|
|
|
my %pageinfo = ( |
my %pageinfo = ( |
'aaa_title' => "$ucgpterm: $name", |
'aaa_title' => "$ucgpterm: $name", |
Line 4151 sub validate_groupname {
|
Line 4217 sub validate_groupname {
|
} |
} |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
igna => "Invalid $gpterm name", |
igna => "Invalid $gpterm name", |
tgne => "The $gpterm name entered ", |
|
grna => "$ucgpterm names and section names used in a ". |
grna => "$ucgpterm names and section names used in a ". |
"$crstype must be unique.", |
"$crstype must be unique.", |
isno => "is not a valid name.", |
|
gnmo => "$ucgpterm names may only contain letters, ". |
gnmo => "$ucgpterm names may only contain letters, ". |
"numbers or underscores.", |
"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 = '<span class="LC_error">'.$lt{'igna'}.'</span><br /><br />'. |
my $exitmsg = '<span class="LC_error">'.$lt{'igna'}.'</span><br /><br />'; |
$lt{'tgne'}.' "'.$groupname.'" '; |
my $nameshown = &Apache::loncommon::cleanup_html($groupname); |
my $dupmsg = $lt{'grna'}; |
|
my $earlyout; |
|
if (($groupname eq '') || ($groupname =~ /\W/)) { |
if (($groupname eq '') || ($groupname =~ /\W/)) { |
$earlyout = $exitmsg.$lt{'isno'}.'<br />'.$lt{'gnmo'}; |
return $exitmsg. |
return $earlyout; |
&mt("The $gpterm name entered '[_1]' is not a valid name.",$nameshown). |
|
'<br />'.$lt{'gnmo'}; |
|
} elsif ($groupname eq 'syllabus') { |
|
return $exitmsg. |
|
&mt("The $gpterm name entered '[_1]' is reserved for use by LON-CAPA.",$nameshown); |
} |
} |
if (exists($sectioncount{$groupname})) { |
if (exists($sectioncount{$groupname})) { |
return $exitmsg.$lt{'cnnb'}.&mt('a section').$lt{'inth'}. |
return $exitmsg. |
'<br />'.$lt{'grna'}; |
&mt("The $gpterm name entered '[_1]' can not be used as it is the name of a section in this $crstype.",$nameshown). |
|
'<br />'.$lt{'grna'}; |
} |
} |
if ($action eq 'create') { |
if ($action eq 'create') { |
if (exists($curr_groups{$groupname})) { |
if (exists($curr_groups{$groupname})) { |
return $exitmsg.$lt{'cnnb'}.&mt('an existing [_1]',$gpterm). |
return $exitmsg. |
$lt{'inth'}.'.<br />'.$lt{'grna'}; |
&mt("The $gpterm name entered '[_1]' can not be used as it is the name of an existing $gpterm in this $crstype.",$nameshown). |
|
'<br />'.$lt{'grna'}; |
} elsif (exists($deleted_groups{$groupname})) { |
} elsif (exists($deleted_groups{$groupname})) { |
return $exitmsg.$lt{'cnnb'}.&mt('a [_1] which previously existed',$gpterm). |
return $exitmsg. |
$lt{'inth'}.'.<br />'.$lt{'grna'}; |
&mt("The $gpterm name entered '[_1]' can not be used as it is the name of a $gpterm which previously existed in this $crstype.",$nameshown). |
|
'<br />'.$lt{'grna'}; |
} |
} |
} elsif ($action eq 'modify') { |
} elsif ($action eq 'modify') { |
unless(exists($curr_groups{$groupname})) { |
unless(exists($curr_groups{$groupname})) { |
$earlyout = &mt('[_1] name:',$ucgpterm).' '.$groupname.$lt{'thgr'}. |
return &mt("$ucgpterm name: [_1] does not correspond to the name of an existing $gpterm in this $crstype.",$nameshown); |
$lt{'inth'}; |
|
return $earlyout; |
|
} |
} |
} |
} |
return; |
return; |
Line 4232 sub check_changes {
|
Line 4295 sub check_changes {
|
} |
} |
|
|
1; |
1; |
|
|