');
- $r->print(&Apache::lonhtmlcommon::role_select_row(\@roles));
+ $r->print(&Apache::lonhtmlcommon::role_select_row(\@roles,undef,undef,1,$cdom,$cnum));
if (@sections > 0) {
@sections = sort {$a cmp $b} @sections;
unshift(@sections,'none'); # Put 'no sections' next
@@ -1820,7 +1825,7 @@ sub privilege_specificity {
}
&topic_bar($r,$img,$lt{'uprv'});
if ((($action eq 'create') && (@{$available} > 0)) ||
- (($action eq 'modify') && ($formname eq 'change_settings'))) {
+ (($action eq 'modify') && ($formname eq 'change_settings'))) {
my %specific = (
'No' => 'checked="checked"',
'Yes' => '',
@@ -1877,6 +1882,7 @@ sub privilege_specificity {
} else {
if ($action eq 'create') {
$r->print($lt{'asyo'});
+ $r->print('');
} elsif ($action eq 'modify' && $formname eq 'pick_members') {
my @defprivs;
if (ref($$stored{'defpriv'}) eq 'ARRAY') {
@@ -2357,7 +2363,7 @@ sub change_privs_form {
}
sub add_members_form {
- my ($r,$action,$formname,$page,$startdate,$enddate,$groupname,
+ my ($r,$cdom,$cnum,$action,$formname,$page,$startdate,$enddate,$groupname,
$description,$granularity,$quota,$sectioncount,$tools,$functions,
$stored,$states,$navbuttons,$gpterm,$ucgpterm)=@_;
$r->print(' ');
@@ -2367,7 +2373,8 @@ sub add_members_form {
&print_current_settings($r,$action,$functions,$startdate,$enddate,
$groupname,$description,$granularity,$quota,
\@available,\@unavailable,$gpterm,$ucgpterm);
- &membership_options($r,$action,$formname,$sectioncount,1,$gpterm,$ucgpterm);
+ &membership_options($r,$cdom,$cnum,$action,$formname,$sectioncount,1,$gpterm,
+ $ucgpterm);
my $nexttext = $$navbuttons{'gtns'};
my $prevtext = $$navbuttons{'gtpp'};
&display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext,
@@ -2407,7 +2414,7 @@ sub choose_privs_form {
my $img2 = 8;
&mapping_options($r,$action,$formname,$page,$sectioncount,
$states,$stored,$navbuttons,$img1,$img2,
- $gpterm,$ucgpterm,$crstype);
+ $gpterm,$ucgpterm,$crstype,$cdom,$cnum);
}
my $prevtext = $$navbuttons{'gtps'};
&display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext,
@@ -2485,7 +2492,9 @@ sub member_privileges_form {
'members being added or modified, '.
'there are no optional privileges to set '.
'for specific members.',
- 'algr' => 'All group members will receive the same privileges.',
+ 'algr' => 'All new group members will receive the same privileges.', 'ifex' => 'If previously expired members are being re-enabled, or '.
+ 'if access for future members is being activated now, '.
+ 'previously set privileges will be preserved.',
'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, '.
@@ -2619,7 +2628,7 @@ END
}
} else {
if (keys(%{$usertools}) > 0) {
- $r->print($lt{'algr'}.'
');
+ $r->print($lt{'algr'}.' '.$lt{'ifex'}.'
');
&display_defprivs($r,$tools,$toolprivs,\@defprivs);
} else {
$r->print($lt{'asno'}.' ');
@@ -2800,7 +2809,47 @@ sub write_group_data {
$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));
- } else {
+ } elsif ($action eq 'modify') {
+ my (@oldtools,@newtools);
+ if (ref($$stored{'tool'}) eq 'ARRAY') {
+ @oldtools = @{$$stored{'tool'}};
+ }
+ if (ref($tools) eq 'ARRAY') {
+ @newtools = @{$tools};
+ }
+ if (!grep(/^discussion$/,@oldtools) &&
+ grep(/^discussion$/,@newtools)) {
+ my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';
+ my $boardsmap = $crspath.'group_boards_'.$groupname.'.sequence';
+ my $navmap = Apache::lonnavmaps::navmap->new();
+ my $bbmapres = $navmap->getResourceByUrl($boardsmap);
+ undef($navmap);
+ if (!$bbmapres) {
+ my $grpmap = $crspath.'group_folder_'.$groupname.'.sequence';
+ my $disctitle = &mt('Discussion Boards');
+ my $outcome = &map_updater($cdom,$cnum,'group_boards_'.
+ $groupname.'.sequence','bbseq',
+ $disctitle,$grpmap);
+ my ($furl,$ferr) =
+ &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
+ $navmap = Apache::lonnavmaps::navmap->new();
+ # modify parameter
+ if ($outcome eq 'ok') {
+ my $parm_result = &parm_setter($navmap,$cdom,$boardsmap,
+ $groupname);
+ if ($parm_result) {
+ $r->print(&mt('Error while setting parameters '.
+ 'for Discussion Boards folder: '.
+ '[_1] .',$parm_result));
+ } else {
+ $r->print(&mt('Discussion Boards Folder created. '));
+ }
+ } else {
+ $r->print($outcome);
+ }
+ undef($navmap);
+ }
+ }
$r->print(&mt('[_1] [_2] was updated. ',$ucgpterm,$groupname));
}
} else {
@@ -3029,7 +3078,7 @@ sub process_membership {
sub mapping_options {
my ($r,$action,$formname,$page,$sectioncount,$states,$stored,
- $navbuttons,$img1,$img2,$gpterm,$ucgpterm,$crstype) = @_;
+ $navbuttons,$img1,$img2,$gpterm,$ucgpterm,$crstype,$cdom,$cnum) = @_;
my %lt = &Apache::lonlocal::texthash(
'auto' => "Settings for automatic $gpterm enrollment",
'gmma' => "$ucgpterm membership mapping to specific sections/roles",
@@ -3046,7 +3095,8 @@ sub mapping_options {
'mapr' => "Mapping of roles and sections affected by automatic $gpterm enrollment/disenrollment follows scheme chosen below.",
);
&automapping($r,$action,$stored,\%lt,$img1);
- &mapping_settings($r,$sectioncount,\%lt,$stored,$img2,$crstype);
+ &mapping_settings($r,$sectioncount,\%lt,$stored,$img2,$crstype,$cdom,$cnum,
+ $action);
return;
}
@@ -3079,7 +3129,7 @@ sub automapping {
}
sub mapping_settings {
- my ($r,$sectioncount,$lt,$stored,$image,$crstype) = @_;
+ my ($r,$sectioncount,$lt,$stored,$image,$crstype,$cdom,$cnum,$action) = @_;
my @sections = keys(%{$sectioncount});
if (@sections > 0) {
@sections = sort {$a cmp $b} @sections;
@@ -3090,7 +3140,7 @@ sub mapping_settings {
}
&topic_bar($r,$image,$$lt{'pirs'});
my @roles = &standard_roles();
- my %customroles = &my_custom_roles();
+ my %customroles = &Apache::lonhtmlcommon::course_custom_roles($cdom,$cnum);
$r->print(&Apache::loncommon::start_data_table().
&Apache::loncommon::start_data_table_header_row());
$r->print('
@@ -3101,57 +3151,60 @@ sub mapping_settings {
}
$r->print(&Apache::loncommon::end_data_table_header_row()."\n");
foreach my $role (@roles) {
- my $plrole=&Apache::lonnet::plaintext($role,$crstype);
- my $sections_sel;
- if (@sections > 0) {
- if ($role eq 'cc') {
- $sections_sel = '