version 1.103, 2009/09/09 04:31:53
|
version 1.106, 2009/11/23 14:37:50
|
Line 54 sub handler {
|
Line 54 sub handler {
|
if (! ($env{'request.course.fn'})) { |
if (! ($env{'request.course.fn'})) { |
# Not in a course |
# Not in a course |
$env{'user.error.msg'}= |
$env{'user.error.msg'}= |
"/adm/coursegroups:mdg:0:0:Cannot edit or view course groups"; |
"/adm/coursegroups:mdg:0:0:Cannot edit or view course/community groups"; |
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} |
} |
|
|
Line 537 sub group_administration {
|
Line 537 sub group_administration {
|
|
|
if (ref($stored{'autorole'}) eq 'ARRAY') { |
if (ref($stored{'autorole'}) eq 'ARRAY') { |
foreach my $role (@{$stored{'autorole'}}) { |
foreach my $role (@{$stored{'autorole'}}) { |
unless ($role eq 'cc') { |
unless (($role eq 'cc') || ($role eq 'co')) { |
$elements{'modify'}{'change_settings'}{'sec_'.$role} = |
$elements{'modify'}{'change_settings'}{'sec_'.$role} = |
'selectbox'; |
'selectbox'; |
} |
} |
Line 1086 sub display_control {
|
Line 1086 sub display_control {
|
&add_members_form($r,$cdom,$cnum,$action,$state,$page,$startdate, |
&add_members_form($r,$cdom,$cnum,$action,$state,$page,$startdate, |
$enddate,$groupname,$description,$granularity, |
$enddate,$groupname,$description,$granularity, |
$quota,$sectioncount,$tools,$functions,$stored, |
$quota,$sectioncount,$tools,$functions,$stored, |
$states,$navbuttons,$gpterm,$ucgpterm); |
$states,$navbuttons,$gpterm,$ucgpterm,$crstype); |
} elsif ($state eq 'pick_members') { |
} elsif ($state eq 'pick_members') { |
&choose_members_form($r,$cdom,$cnum,$action,$state,$page, |
&choose_members_form($r,$cdom,$cnum,$action,$state,$page, |
$groupname,$description,$granularity,$quota, |
$groupname,$description,$granularity,$quota, |
Line 1119 sub display_control {
|
Line 1119 sub display_control {
|
my %stored = &retrieve_settings($cdom,$cnum,$groupname,$action); |
my %stored = &retrieve_settings($cdom,$cnum,$groupname,$action); |
if ($state eq 'verify') { |
if ($state eq 'verify') { |
&verify_delete($r,$groupname,$state,$action,$page,$states, |
&verify_delete($r,$groupname,$state,$action,$page,$states, |
\%stored); |
\%stored,$crstype); |
} elsif ($state eq 'result') { |
} elsif ($state eq 'result') { |
&delete_group($r,$cdom,$cnum,$groupname); |
&delete_group($r,$cdom,$cnum,$groupname,$crstype); |
} |
} |
} elsif ($action eq 'reenable') { |
} elsif ($action eq 'reenable') { |
my %stored = &retrieve_settings($cdom,$cnum,$groupname,$action); |
my %stored = &retrieve_settings($cdom,$cnum,$groupname,$action); |
if ($state eq 'verify') { |
if ($state eq 'verify') { |
&verify_reenable($r,$groupname,$state,$action,$page,$states, |
&verify_reenable($r,$groupname,$state,$action,$page,$states, |
\%stored); |
\%stored,$crstype); |
} elsif ($state eq 'result') { |
} elsif ($state eq 'result') { |
&reenable_group($r,$cdom,$cnum,$groupname); |
&reenable_group($r,$cdom,$cnum,$groupname,$crstype); |
} |
} |
} |
} |
} |
} |
|
|
sub verify_delete { |
sub verify_delete { |
my ($r,$groupname,$formname,$action,$page,$states,$stored) = @_; |
my ($r,$groupname,$formname,$action,$page,$states,$stored,$crstype) = @_; |
$r->print(&Apache::lonhtmlcommon::echo_form_input([])); |
$r->print(&Apache::lonhtmlcommon::echo_form_input([])); |
$r->print(&mt('You have requested deletion of the group [_1].' |
$r->print(&mt('You have requested deletion of the group [_1].' |
,'<i>'.$stored->{'description'}.'</i>'). |
,'<i>'.$stored->{'description'}.'</i>'). |
'<br /><br />'.&mt('When a group is deleted the following occurs:').'<ul>'. |
'<br /><br />'.&mt('When a group is deleted the following occurs:').'<ul>'. |
'<li>'.&mt('All group membership is terminated.').'</li>'. |
'<li>'.&mt('All group membership is terminated.').'</li>'. |
'<li>'.&mt('The group ceases to be available either for viewing or for modification of group settings and membership.').'</li>'. |
'<li>'.&mt('The group ceases to be available either for viewing or for modification of group settings and membership.').'</li>'); |
'<li>'.&mt('The group folder is removed from the folder containing it - normally this is the "Course Groups" folder which contains folders for all groups in the course.').'</li>'. |
if ($crstype eq 'Community') { |
'</ul>'.&mt('Although a deleted group is no longer accessible, the group name used for the group will be reserved, and will not be available for assignment to a new group in the same course in the future.')); |
$r->print( '<li>'.&mt("The group folder is removed from the folder containing it - normally this is the 'Community Groups' folder which contains folders for all groups in the community.").'</li>'. |
|
'</ul>'.&mt("Although a deleted group is no longer accessible, the group name used for the group will be reserved, and will not be available for assignment to a new group in the same community in the future.")); |
|
} else { |
|
$r->print( '<li>'.&mt("The group folder is removed from the folder containing it - normally this is the 'Course Groups' folder which contains folders for all groups in the course.").'</li>'. |
|
'</ul>'.&mt("Although a deleted group is no longer accessible, the group name used for the group will be reserved, and will not be available for assignment to a new group in the same course in the future.")); |
|
} |
my $prevtext = &mt('Go back'); |
my $prevtext = &mt('Go back'); |
my $nexttext = &mt('Delete group'); |
my $nexttext = &mt('Delete group'); |
my $prev; |
my $prev; |
Line 1156 sub verify_delete {
|
Line 1161 sub verify_delete {
|
} |
} |
|
|
sub delete_group { |
sub delete_group { |
my ($r,$cdom,$cnum,$groupname) = @_; |
my ($r,$cdom,$cnum,$groupname,$crstype) = @_; |
my %membership = &Apache::lonnet::get_group_membership($cdom,$cnum, |
my %membership = &Apache::lonnet::get_group_membership($cdom,$cnum, |
$groupname); |
$groupname); |
my $now = time; |
my $now = time; |
Line 1198 sub delete_group {
|
Line 1203 sub delete_group {
|
.&mt('Group deletion failed because deletion of [_1] out of [_2] members failed.' |
.&mt('Group deletion failed because deletion of [_1] out of [_2] members failed.' |
,$num_fail,$num_users) |
,$num_fail,$num_users) |
.'</div>'); |
.'</div>'); |
|
|
} else { |
} else { |
my ($result,$message) = |
my ($result,$message) = |
&Apache::lonnet::toggle_coursegroup_status($cdom,$cnum, |
&Apache::lonnet::toggle_coursegroup_status($cdom,$cnum, |
$groupname,'delete'); |
$groupname,'delete'); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
my $outcome = &modify_folders($cdom,$cnum,$groupname); |
my $outcome = &modify_folders($cdom,$cnum,$groupname,$crstype); |
if ($outcome eq '') { |
if ($outcome eq '') { |
$r->print('<div class="LC_success">' |
$r->print('<div class="LC_success">' |
.&mt('Group successfully deleted.') |
.&mt('Group successfully deleted.') |
.'</div>'); |
.'</div>'); |
} else { |
} else { |
$r->print('<div class="LC_error">' |
$r->print('<div class="LC_error">'); |
.&mt("Although the group was deleted, an error occurred when removing" |
if ($crstype eq 'Community') { |
." 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 'Community Groups' folder: [_1]",$outcome)); |
.'</div>'); |
} 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('</div>'); |
} |
} |
} else { |
} else { |
$r->print('<div class="LC_error">' |
$r->print('<div class="LC_error">' |
Line 1225 sub delete_group {
|
Line 1232 sub delete_group {
|
} |
} |
|
|
sub reenable_folder { |
sub reenable_folder { |
my ($cdom,$cnum,$groupname,$description) = @_; |
my ($cdom,$cnum,$groupname,$description,$crstype) = @_; |
my $outcome; |
my $outcome; |
my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/'; |
my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/'; |
my $allgrpsmap = $crspath.'group_allfolders.sequence'; |
my $allgrpsmap = $crspath.'group_allfolders.sequence'; |
my $foldertitle = &mt('Course Folder -[_1]',$description); |
my $foldertitle; |
|
if ($crstype eq 'Community') { |
|
$foldertitle = &mt("Community Folder -[_1]",$description); |
|
} else { |
|
$foldertitle = &mt("Course Folder -[_1]",$description); |
|
} |
my $mapurl = $crspath.'group_folder_'. |
my $mapurl = $crspath.'group_folder_'. |
$groupname.'.sequence'; |
$groupname.'.sequence'; |
my ($errtext,$fatal)=&LONCAPA::map::mapread($allgrpsmap); |
my ($errtext,$fatal)=&LONCAPA::map::mapread($allgrpsmap); |
Line 1258 sub reenable_folder {
|
Line 1270 sub reenable_folder {
|
} |
} |
|
|
sub modify_folders { |
sub modify_folders { |
my ($cdom,$cnum,$groupname) = @_; |
my ($cdom,$cnum,$groupname,$crstype) = @_; |
my ($outcome,$groupmap,$groupmapres,$map,$id,$src); |
my ($outcome,$groupmap,$groupmapres,$map,$id,$src); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
if (!defined($navmap)) { |
if (!defined($navmap)) { |
$outcome = '<div class="LC_error">'. |
$outcome = '<div class="LC_error">'; |
&mt('Error reading course contents.').' '. |
if ($crstype eq 'Community') { |
&mt('You need to re-initialize the course.'). |
$outcome .= &mt("Error reading community contents.").' '. |
'</div>'; |
&mt("You need to re-initialize the community."); |
|
} else { |
|
$outcome .= &mt("Error reading course contents.").' '. |
|
&mt("You need to re-initialize the course."); |
|
} |
|
$outcome .= '</div>'; |
return $outcome; |
return $outcome; |
} |
} |
$groupmap = '/uploaded/'.$cdom.'/'.$cnum.'/'.'group_folder_'. |
$groupmap = '/uploaded/'.$cdom.'/'.$cnum.'/'.'group_folder_'. |
Line 1320 sub modify_folders {
|
Line 1337 sub modify_folders {
|
} |
} |
|
|
sub verify_reenable { |
sub verify_reenable { |
my ($r,$groupname,$formname,$action,$page,$states,$stored) = @_; |
my ($r,$groupname,$formname,$action,$page,$states,$stored,$crstype) = @_; |
$r->print(&Apache::lonhtmlcommon::echo_form_input([])); |
$r->print(&Apache::lonhtmlcommon::echo_form_input([])); |
$r->print(&mt('You have requested enabling the previously deleted group [_1].' |
$r->print(&mt('You have requested enabling the previously deleted group [_1].' |
,'<i>'.$stored->{'description'}.'</i>'). |
,'<i>'.$stored->{'description'}.'</i>'). |
'<br /><br />'.&mt('When a deleted group is re-enabled the following occurs:').'<ul>'. |
'<br /><br />'.&mt('When a deleted group is re-enabled the following occurs:').'<ul>'. |
'<li>'.&mt('Group settings and membership at the time the group was deleted are reinstated.').'</li>'. |
'<li>'.&mt('Group settings and membership at the time the group was deleted are reinstated.').'</li><li>'); |
'<li>'.&mt('A group folder is added to the "Course Groups" folder which contains folders for all groups in the course.').'</li></ul>'); |
if ($crstype eq 'Community') { |
|
$r->print(&mt("A group folder is added to the 'Community Groups' folder which contains folders for all groups in the community.")); |
|
} else { |
|
$r->print(&mt("A group folder is added to the 'Course Groups' folder which contains folders for all groups in the course.")); |
|
} |
|
$r->print('</li></ul>'); |
my $prevtext = &mt('Go back'); |
my $prevtext = &mt('Go back'); |
my $nexttext = &mt('Reenable group'); |
my $nexttext = &mt('Reenable group'); |
my $prev; |
my $prev; |
Line 1339 sub verify_reenable {
|
Line 1361 sub verify_reenable {
|
} |
} |
|
|
sub reenable_group { |
sub reenable_group { |
my ($r,$cdom,$cnum,$groupname) = @_; |
my ($r,$cdom,$cnum,$groupname,$crstype) = @_; |
my %groups = |
my %groups = |
&Apache::longroup::coursegroups($cdom,$cnum,$groupname, |
&Apache::longroup::coursegroups($cdom,$cnum,$groupname, |
'deleted_groups'); |
'deleted_groups'); |
Line 1413 $context) eq 'ok') {
|
Line 1435 $context) eq 'ok') {
|
.&mt('There were no group members to reinstate, as none were removed when the group was deleted.') |
.&mt('There were no group members to reinstate, as none were removed when the group was deleted.') |
.'</div>'); |
.'</div>'); |
} |
} |
my $outcome = &reenable_folder($cdom,$cnum,$groupname,$description); |
my $outcome = &reenable_folder($cdom,$cnum,$groupname,$description,$crstype); |
if ($outcome eq '') { |
if ($outcome eq '') { |
$r->print('<div class="LC_success">' |
$r->print('<div class="LC_success">' |
.&mt('Group successfully re-enabled.') |
.&mt('Group successfully re-enabled.') |
.'</div>'); |
.'</div>'); |
} else { |
} else { |
$r->print('<div class="LC_error">' |
$r->print('<div class="LC_error">'); |
.&mt("Although the group was re-enabled, an error occurred when adding the group's folder to the 'Course Groups' folder: [_1]",$outcome) |
if ($crstype eq 'Community') { |
.'</div>'); |
$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 { |
|
$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('</div>'); |
} |
} |
} else { |
} else { |
$r->print('<div class="LC_error">' |
$r->print('<div class="LC_error">' |
Line 1579 sub general_settings_form {
|
Line 1605 sub general_settings_form {
|
&access_date_settings($r,$action,$formname,$stored,2,$gpterm,$ucgpterm); |
&access_date_settings($r,$action,$formname,$stored,2,$gpterm,$ucgpterm); |
if ($action eq 'create') { |
if ($action eq 'create') { |
&membership_options($r,$cdom,$cnum,$action,$formname,$sectioncount,3, |
&membership_options($r,$cdom,$cnum,$action,$formname,$sectioncount,3, |
$gpterm,$ucgpterm); |
$gpterm,$ucgpterm,$crstype); |
$nexttext = $$navbuttons{'gtns'}; |
$nexttext = $$navbuttons{'gtns'}; |
} else { |
} else { |
my @available = (); |
my @available = (); |
Line 1588 sub general_settings_form {
|
Line 1614 sub general_settings_form {
|
@{$tools} = sort(keys(%{$functions})); |
@{$tools} = sort(keys(%{$functions})); |
&privilege_specificity($r,$action,3,$tools,$stored,$toolprivs, |
&privilege_specificity($r,$action,3,$tools,$stored,$toolprivs, |
$fixedprivs,\@available,$formname, |
$fixedprivs,\@available,$formname, |
$gpterm,$ucgpterm,$functions); |
$gpterm,$ucgpterm,$functions,$crstype); |
&mapping_options($r,$action,$formname,$page,$sectioncount, |
&mapping_options($r,$action,$formname,$page,$sectioncount, |
$states,$stored,$navbuttons,4,5, |
$states,$stored,$navbuttons,4,5, |
$gpterm,$ucgpterm,$crstype,$cdom,$cnum); |
$gpterm,$ucgpterm,$crstype,$cdom,$cnum); |
Line 1741 sub get_quota_constraints {
|
Line 1767 sub get_quota_constraints {
|
} |
} |
|
|
sub membership_options { |
sub membership_options { |
my ($r,$cdom,$cnum,$action,$state,$sectioncount,$image,$gpterm,$ucgpterm)=@_; |
my ($r,$cdom,$cnum,$action,$state,$sectioncount,$image,$gpterm,$ucgpterm,$crstype)=@_; |
my $crstype = &Apache::loncommon::course_type(); |
|
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'pipa' => 'Build a list of users for selection of group members', |
'pipa' => 'Build a list of users for selection of group members', |
'gmem' => "Group membership selection list criteria:", |
'gmem' => 'Group membership selection list criteria:', |
'picr' => 'Pick the criteria to use to build a list of '. |
'picr' => 'Pick the criteria to use to build a list of course users from which you will select members of the new group.', |
lc($crstype).' users from which you will select ', |
'pica' => 'Pick the criteria to use to build a list of course users from which you will select additional members of the group.', |
'meof' => "members of the new group.", |
'ifno' => 'If you do not wish to add members when you first create the group, there is no need to pick any criteria.', |
'admg' => "additional members of the group.", |
'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.', |
'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' => $crstype.' roles', |
'coro' => 'Course roles', |
'cose' => $crstype.' sections', |
'cose' => 'Course sections', |
); |
); |
|
if ($crstype eq 'Community') { |
|
$lt{'picr'} = &mt('Pick the criteria to use to build a list of community participants from which you will select '); |
|
$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.','<i>','</i>'); |
|
$lt{'coro'} = &mt('Community roles'); |
|
$lt{'cose'} = &mt('Community sections'); |
|
} 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.','<i>','</i>'); |
|
} |
my %status_types = ( |
my %status_types = ( |
active => &mt('Currently has access'), |
active => &mt('Currently has access'), |
previous => &mt('Previously had access'), |
previous => &mt('Previously had access'), |
future => &mt('Will have future access'), |
future => &mt('Will have future access'), |
); |
); |
|
|
my @roles = ('st','cc','in','ta','ep','cr'); |
my @roles = ('st'); |
|
if ($crstype eq 'Community') { |
|
push(@roles,'co'); |
|
} else { |
|
push(@roles,'cc'); |
|
} |
|
push (@roles,('in','ta','ep','ad','cr')); |
|
|
my @sections = keys(%{$sectioncount}); |
my @sections = keys(%{$sectioncount}); |
|
|
$r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'pipa'}).' |
$r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'pipa'}).' |
<b>'.$lt{'gmem'}.'</b><br />'.$lt{'picr'}); |
<b>'.$lt{'gmem'}.'</b><br />'); |
if ($action eq 'create') { |
if ($action eq 'create') { |
$r->print($lt{'meof'}.'<br />'.$lt{'ifno'}.'<br />'.$lt{'asub'}); |
$r->print($lt{'picr'}.'<br />'.$lt{'ifno'}.'<br />'.$lt{'asub'}); |
} else { |
} else { |
$r->print($lt{'admg'}); |
$r->print($lt{'pica'}); |
} |
} |
$r->print(' |
$r->print(' |
<br /> |
<br /> |
Line 1889 sub choose_members_form {
|
Line 1925 sub choose_members_form {
|
} |
} |
&privilege_specificity($r,$action,$specimg,$tools,$stored,$toolprivs, |
&privilege_specificity($r,$action,$specimg,$tools,$stored,$toolprivs, |
$fixedprivs,\@available,$formname,$gpterm,$ucgpterm, |
$fixedprivs,\@available,$formname,$gpterm,$ucgpterm, |
$functions); |
$functions,$crstype); |
my $newusers = &pick_new_members($r,$action,$formname,\@available,$idx, |
my $newusers = &pick_new_members($r,$action,$formname,\@available,$idx, |
$stored,$memimg,$users,$userdata, |
$stored,$memimg,$users,$userdata, |
$granularity,\%origmembers,$gpterm, |
$granularity,\%origmembers,$gpterm, |
Line 2166 sub pick_new_members {
|
Line 2202 sub pick_new_members {
|
|
|
sub privilege_specificity { |
sub privilege_specificity { |
my ($r,$action,$img,$tools,$stored,$toolprivs,$fixedprivs,$available, |
my ($r,$action,$img,$tools,$stored,$toolprivs,$fixedprivs,$available, |
$formname,$gpterm,$ucgpterm,$functions) = @_; |
$formname,$gpterm,$ucgpterm,$functions,$crstype) = @_; |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
'uprv' => 'User privileges for collaborative tools', |
'uprv' => 'User privileges for collaborative tools', |
'frty' => 'For each collaborative tool you have chosen to include, '. |
'frty' => 'For each collaborative tool you have chosen to include, '. |
Line 2200 sub privilege_specificity {
|
Line 2236 sub privilege_specificity {
|
'oppr' => 'Optional privileges', |
'oppr' => 'Optional privileges', |
'defp' => 'The default privileges new members will receive are:', |
'defp' => 'The default privileges new members will receive are:', |
); |
); |
|
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 '); |
|
} |
my $totaloptionalprivs = 0; |
my $totaloptionalprivs = 0; |
foreach my $tool (@{$tools}) { |
foreach my $tool (@{$tools}) { |
foreach my $priv (sort(keys(%{$$toolprivs{$tool}}))) { |
foreach my $priv (sort(keys(%{$$toolprivs{$tool}}))) { |
Line 2755 sub change_privs_form {
|
Line 2794 sub change_privs_form {
|
sub add_members_form { |
sub add_members_form { |
my ($r,$cdom,$cnum,$action,$formname,$page,$startdate,$enddate,$groupname, |
my ($r,$cdom,$cnum,$action,$formname,$page,$startdate,$enddate,$groupname, |
$description,$granularity,$quota,$sectioncount,$tools,$functions, |
$description,$granularity,$quota,$sectioncount,$tools,$functions, |
$stored,$states,$navbuttons,$gpterm,$ucgpterm)=@_; |
$stored,$states,$navbuttons,$gpterm,$ucgpterm,$crstype)=@_; |
$r->print(' <br />'); |
$r->print(' <br />'); |
my @available = (); |
my @available = (); |
my @unavailable = (); |
my @unavailable = (); |
Line 2764 sub add_members_form {
|
Line 2803 sub add_members_form {
|
$groupname,$description,$granularity,$quota, |
$groupname,$description,$granularity,$quota, |
\@available,\@unavailable,$gpterm,$ucgpterm); |
\@available,\@unavailable,$gpterm,$ucgpterm); |
&membership_options($r,$cdom,$cnum,$action,$formname,$sectioncount,1,$gpterm, |
&membership_options($r,$cdom,$cnum,$action,$formname,$sectioncount,1,$gpterm, |
$ucgpterm); |
$ucgpterm,$crstype); |
my $nexttext = $$navbuttons{'gtns'}; |
my $nexttext = $$navbuttons{'gtns'}; |
my $prevtext = $$navbuttons{'gtpp'}; |
my $prevtext = $$navbuttons{'gtpp'}; |
&display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext, |
&display_navbuttons($r,$formname,$$states{$action}[$page-1],$prevtext, |
Line 3095 sub process_request {
|
Line 3134 sub process_request {
|
&process_membership($r,$cdom,$cnum,$action,$state,$groupname,$tools, |
&process_membership($r,$cdom,$cnum,$action,$state,$groupname,$tools, |
$enddate,$startdate,$userdata,$idx,$toolprivs, |
$enddate,$startdate,$userdata,$idx,$toolprivs, |
$usertools,$specificity,\@defprivs,$memchg,$gpterm, |
$usertools,$specificity,\@defprivs,$memchg,$gpterm, |
$ucgpterm); |
$ucgpterm,$crstype); |
} |
} |
return; |
return; |
} |
} |
Line 3257 sub write_group_data {
|
Line 3296 sub write_group_data {
|
} |
} |
undef($navmap); |
undef($navmap); |
} else { |
} else { |
$error = &mt('An error occurred while setting parameters '. |
if ($crstype eq 'Community') { |
|
$error = &mt("An error occurred while setting parameters '. |
'for Discussion Boards folder: '. |
'for Discussion Boards folder: '. |
'Could not retrieve course information' ); |
'Could not retrieve community information"); |
|
} else { |
|
$error = &mt("An error occurred while setting parameters '. |
|
'for Discussion Boards folder: '. |
|
'Could not retrieve course information"); |
|
} |
} |
} |
} else { |
} else { |
$r->print($outcome); |
$r->print($outcome); |
} |
} |
} |
} |
} else { |
} else { |
$error = &mt("An error occurred while retrieving the contents of the group's folder.").'<br />'. |
$error = &mt("An error occurred while retrieving the contents of the group's folder.").'<br />'; |
&mt('You need to re-initialize the course.'); |
if ($crstype eq 'Community') { |
|
$error .= &mt("You need to re-initialize the community."); |
|
|
|
} else { |
|
$error .= &mt("You need to re-initialize the course."); |
|
} |
} |
} |
if ($error ne '') { |
if ($error ne '') { |
$r->print('<div class="LC_error">'.$error.'</div>'); |
$r->print('<div class="LC_error">'.$error.'</div>'); |
Line 3296 sub write_group_data {
|
Line 3346 sub write_group_data {
|
sub process_membership { |
sub process_membership { |
my ($r,$cdom,$cnum,$action,$state,$groupname,$tools,$enddate,$startdate, |
my ($r,$cdom,$cnum,$action,$state,$groupname,$tools,$enddate,$startdate, |
$userdata,$idx,$toolprivs,$usertools,$specificity,$defprivs,$memchg, |
$userdata,$idx,$toolprivs,$usertools,$specificity,$defprivs,$memchg, |
$gpterm,$ucgpterm)=@_; |
$gpterm,$ucgpterm,$crstype)=@_; |
my %usersettings = (); |
my %usersettings = (); |
my %added= (); |
my %added= (); |
my %failed = (); |
my %failed = (); |
Line 3501 sub process_membership {
|
Line 3551 sub process_membership {
|
$r->print('<div class="LC_success">' |
$r->print('<div class="LC_success">' |
.&mt($ucgpterm.' membership list updated.') |
.&mt($ucgpterm.' membership list updated.') |
.'</div>'); |
.'</div>'); |
$r->print('<p class="LC_info">' |
$r->print('<p class="LC_info">'); |
.&mt('Any currently logged in course users affected by the changes you made' |
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' |
.' 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.' |
.' and log back in for their LON-CAPA sessions to reflect these changes.' |
,'<i>'.$groupname.'</i>') |
,'<i>'.$groupname.'</i>')); |
.'</p>' |
|
); |
} else { |
|
$r->print(&mt("Any currently logged in course 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.' |
|
,'<i>'.$groupname.'</i>')); |
|
} |
|
$r->print('</p>'); |
} else { |
} else { |
$r->print('<div class="LC_error">' |
$r->print('<div class="LC_error">' |
.&mt("An error occurred while updating the $gpterm membership list:") |
.&mt("An error occurred while updating the $gpterm membership list:") |
Line 3578 sub mapping_settings {
|
Line 3635 sub mapping_settings {
|
@sections = ('all','none'); |
@sections = ('all','none'); |
} |
} |
$r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'pirs'})); |
$r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'pirs'})); |
my @roles = &standard_roles(); |
my @roles = &standard_roles($crstype); |
my %customroles = &Apache::lonhtmlcommon::course_custom_roles($cdom,$cnum); |
my %customroles = &Apache::lonhtmlcommon::course_custom_roles($cdom,$cnum); |
$r->print(&Apache::loncommon::start_data_table(). |
$r->print(&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row()); |
&Apache::loncommon::start_data_table_header_row()); |
Line 3621 sub print_autorole_item {
|
Line 3678 sub print_autorole_item {
|
my ($role,$roletitle,$sections) = @_; |
my ($role,$roletitle,$sections) = @_; |
my $sections_sel; |
my $sections_sel; |
if (@{$sections} > 0) { |
if (@{$sections} > 0) { |
if ($role eq 'cc') { |
if (($role eq 'cc') || ($role eq 'co')) { |
$sections_sel = '<td align="right">'. |
$sections_sel = '<td align="right">'. |
&mt('all sections').'<input type="hidden" '. |
&mt('all sections').'<input type="hidden" '. |
'name="sec_cc" value="all" /></td>'; |
'name="sec_'.$role.'" value="all" /></td>'; |
} else { |
} else { |
$sections_sel='<td align="right">'. |
$sections_sel='<td align="right">'. |
§ions_selection($sections,'sec_'.$role). |
§ions_selection($sections,'sec_'.$role). |
Line 3640 sub print_autorole_item {
|
Line 3697 sub print_autorole_item {
|
} |
} |
|
|
sub standard_roles { |
sub standard_roles { |
my @roles = ('cc','in','ta','ep','st'); |
my ($crstype) = @_; |
|
my @roles = qw(in ta ep ad st); |
|
if ($crstype eq 'Community') { |
|
unshift(@roles,'co'); |
|
} else { |
|
unshift(@roles,'cc'); |
|
} |
return @roles; |
return @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 3779 sub add_group_folder {
|
Line 3838 sub add_group_folder {
|
my ($cdom,$cnum,$now,$groupname,$action,$description,$tools,$groupinfo, |
my ($cdom,$cnum,$now,$groupname,$action,$description,$tools,$groupinfo, |
$gpterm,$ucgpterm,$crstype) = @_; |
$gpterm,$ucgpterm,$crstype) = @_; |
if ($cdom eq '' || $cnum eq '') { |
if ($cdom eq '' || $cnum eq '') { |
return '<span class="LC_error">' |
my $error = '<span class="LC_error">'; |
.&mt('Error: invalid course domain or number - group folder creation failed.') |
if ($crstype eq 'Community') { |
.'</span>'; |
$error .= &mt("Error: invalid community domain or number - group folder creation failed."); |
|
} else { |
|
$error .= &mt("Error: invalid course domain or number - group folder creation failed."); |
|
} |
|
$error .= '</span>'; |
|
return $error; |
} |
} |
my ($outcome,$allgrpsmap,$grpmap,$boardsmap,$grppage,$warning); |
my ($outcome,$allgrpsmap,$grpmap,$boardsmap,$grppage,$warning); |
my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/'; |
my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/'; |
Line 3849 sub add_group_folder {
|
Line 3913 sub add_group_folder {
|
my ($furl,$ferr)= &Apache::lonuserstate::readmap($cdom.'/'.$cnum); |
my ($furl,$ferr)= &Apache::lonuserstate::readmap($cdom.'/'.$cnum); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
if (!defined($navmap)) { |
if (!defined($navmap)) { |
return $warning.'<span class="LC_error">'.&mt('Error retrieving course contents'). |
$warning .= '<span class="LC_error">'; |
' '.&mt('You need to re-initialize the course.').'</span>'; |
if ($crstype eq 'Community') { |
|
$warning .= &mt("Error retrieving community contents"). |
|
' '.&mt("You need to re-initialize the community."); |
|
} else { |
|
$warning .= &mt("Error retrieving course contents"). |
|
' '.&mt("You need to re-initialize the course."); |
|
} |
|
$warning .= '</span>'; |
|
return $warning; |
} |
} |
# modify parameters |
# modify parameters |
my $parm_result; |
my $parm_result; |
Line 3955 sub new_map {
|
Line 4027 sub new_map {
|
} |
} |
|
|
sub parm_setter { |
sub parm_setter { |
my ($navmap,$cdom,$url,$groupname) = @_; |
my ($navmap,$cdom,$url,$groupname,$crstype) = @_; |
my $allresults; |
|
if (!defined($navmap)) { |
if (!defined($navmap)) { |
$allresults = '<div class="LC_warning">'. |
my $allresults; |
&mt('Parameters not set for [_1] because the contents of the course could not be retrieved.',$url).' '. |
if ($crstype eq 'Community') { |
&mt('You need to reinitialize the course.'). |
$allresults = &mt("Parameters not set for [_1] because the contents of the community could not be retrieved.",$url).' '. |
'</div>'; |
&mt("You need to reinitialize the community."); |
return $allresults; |
} else { |
|
$allresults = &mt("Parameters not set for [_1] because the contents of the course could not be retrieved.",$url).' '. |
|
&mt("You need to reinitialize the course."); |
|
|
|
} |
|
return '<div class="LC_warning">'.$allresults.'</div>'; |
} |
} |
my %hide_settings = ( |
my %hide_settings = ( |
'course' => { |
'course' => { |
Line 3976 sub parm_setter {
|
Line 4052 sub parm_setter {
|
}, |
}, |
); |
); |
my $res = $navmap->getResourceByUrl($url); |
my $res = $navmap->getResourceByUrl($url); |
|
my $allresults; |
if ($res) { |
if ($res) { |
my $symb = $res->symb(); |
my $symb = $res->symb(); |
foreach my $level (keys(%hide_settings)) { |
foreach my $level (keys(%hide_settings)) { |
Line 3992 sub parm_setter {
|
Line 4069 sub parm_setter {
|
} |
} |
} |
} |
} else { |
} else { |
$allresults = '<div class="LC_warning">' |
$allresults = '<div class="LC_warning">'; |
.&mt('Parameters not set for [_1] because the resource was not recognized' |
if ($crstype eq 'Community') { |
.' as part of the course.','<tt>'.$url.'</tt>') |
$allresults .= &mt("Parameters not set for [_1] because the resource was not recognized as part of the community.",'<tt>'.$url.'</tt>'); |
.'</div>'; |
} else { |
|
$allresults .= &mt('Parameters not set for [_1] because the resource was not recognized as part of the course.','<tt>'.$url.'</tt>'); |
|
} |
|
$allresults .= '</div>'; |
} |
} |
return $allresults; |
return $allresults; |
} |
} |
Line 4148 sub check_changes {
|
Line 4228 sub check_changes {
|
} |
} |
|
|
1; |
1; |
|
|