--- loncom/interface/loncoursegroups.pm 2006/07/20 03:11:52 1.54
+++ loncom/interface/loncoursegroups.pm 2006/07/28 18:44:27 1.58
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: loncoursegroups.pm,v 1.54 2006/07/20 03:11:52 raeburn Exp $
+# $Id: loncoursegroups.pm,v 1.58 2006/07/28 18:44:27 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -965,6 +965,7 @@ sub retrieve_settings {
foreach my $role (sort(keys(%{$groupinfo{'autosec'}}))) {
if (ref($groupinfo{'autosec'}{$role}) eq 'ARRAY') {
foreach my $section (@{$groupinfo{'autosec'}{$role}}) {
+
push (@{$stored{'sec_'.$role}},$section);
}
if (@{$groupinfo{'autosec'}{$role}} > 0) {
@@ -1206,7 +1207,7 @@ sub general_settings_form {
$gpterm,$ucgpterm);
&mapping_options($r,$action,$formname,$page,$sectioncount,
$states,$stored,$navbuttons,4,5,
- $gpterm,$ucgpterm,$crstype);
+ $gpterm,$ucgpterm,$crstype,$cdom,$cnum);
$nexttext = $$navbuttons{'mose'};
}
$prevtext = $$navbuttons{'gtpp'};
@@ -1825,7 +1826,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' => '',
@@ -1882,6 +1883,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') {
@@ -2412,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,
@@ -2807,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 {
@@ -3036,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",
@@ -3053,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;
}
@@ -3086,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;
@@ -3097,7 +3140,7 @@ sub mapping_settings {
}
&topic_bar($r,$image,$$lt{'pirs'});
my @roles = &standard_roles();
- my %customroles = &my_custom_roles();
+ my %customroles = &course_custom_roles($cdom,$cnum);
$r->print(&Apache::loncommon::start_data_table().
&Apache::loncommon::start_data_table_header_row());
$r->print('
@@ -3108,52 +3151,73 @@ 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 = '