--- loncom/interface/lonmodifycourse.pm 2016/08/15 18:01:08 1.85
+++ loncom/interface/lonmodifycourse.pm 2016/10/05 13:59:46 1.86
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# handler for DC-only modifiable course settings
#
-# $Id: lonmodifycourse.pm,v 1.85 2016/08/15 18:01:08 raeburn Exp $
+# $Id: lonmodifycourse.pm,v 1.86 2016/10/05 13:59:46 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -182,22 +182,65 @@ sub print_course_search_page {
$r->print(&Apache::loncommon::build_filters($filterlist,$type,undef,undef,$filter,$action,
\$numtitles,'modifycourse',undef,undef,undef,
\@codetitles,$dom));
+
+ my ($actiontext,$roleoption,$settingsoption);
if ($type eq 'Community') {
- $r->print(&mt('Actions available after searching for a community:').'
'.
- '- '.&mt('Enter the community with the role of [_1]',$cctitle).'
'."\n".
- '- '.&mt('View or modify community settings which only a [_1] may modify.',$dctitle).
- '
'."\n".'
');
+ $actiontext = &mt('Actions available after searching for a community:');
} elsif ($type eq 'Placement') {
- $r->print(&mt('Actions available after searching for a placement test:').''.
- '- '.&mt('Enter the placement test with the role of [_1]',$cctitle).'
'."\n".
- '- '.&mt('View or modify placement test settings which only a [_1] may modify.',$dctitle).
- '
'."\n".'
');
- } else {
- $r->print(&mt('Actions available after searching for a course:').''.
- '- '.&mt('Enter the course with the role of [_1]',$cctitle).'
'."\n".
- '- '.&mt('View or modify course settings which only a [_1] may modify.',$dctitle).
- '
'."\n".'
');
+ $actiontext = &mt('Actions available after searching for a placement test:')
+ } else {
+ $actiontext = &mt('Actions available after searching for a course:');
}
+ if (&Apache::lonnet::allowed('ccc',$dom)) {
+ if ($type eq 'Community') {
+ $roleoption = &mt('Enter the community with the role of [_1]',$cctitle);
+ $settingsoption = &mt('View or modify community settings which only a [_1] may modify.',$dctitle);
+ } elsif ($type eq 'Placement') {
+ $roleoption = &mt('Enter the placement test with the role of [_1]',$cctitle);
+ $settingsoption = &mt('View or modify placement test settings which only a [_1] may modify.',$dctitle);
+ } else {
+ $roleoption = &mt('Enter the course with the role of [_1]',$cctitle);
+ $settingsoption = &mt('View or modify course settings which only a [_1] may modify.',$dctitle);
+ }
+ } elsif (&Apache::lonnet::allowed('rar',$dom)) {
+ my %adhocroles = &Apache::lonnet::userenvironment($env{'user.domain'},$env{'user.name'},
+ 'adhocroles.'.$dom);
+ if (keys(%adhocroles)) {
+ my @adhoc = split(',',$adhocroles{'adhocroles.'.$dom});
+ if (@adhoc > 1) {
+ if ($type eq 'Community') {
+ $roleoption = &mt('Enter the community with one of the available ad hoc roles: [_1].',
+ join(', ',@adhoc));
+ } elsif ($type eq 'Placement') {
+ $roleoption = &mt('Enter the placement test with one of the available ad hoc roles: [_1].',
+ join(', ',@adhoc));
+ } else {
+ $roleoption = &mt('Enter the course with one of the available ad hoc roles: [_1].',
+ join(', ',@adhoc));
+ }
+ } else {
+ if ($type eq 'Community') {
+ $roleoption = &mt('Enter the community with the ad hoc role of: [_1]',$adhoc[0]);
+ } elsif ($type eq 'Placement') {
+ $roleoption = &mt('Enter the placement test with the ad hoc role of: [_1]',$adhoc[0]);
+ } else {
+ $roleoption = &mt('Enter the course with the ad hoc role of: [_1]',$adhoc[0]);
+ }
+ }
+ }
+ if ($type eq 'Community') {
+ $settingsoption = &mt('View community settings which only a [_1] may modify.',$dctitle);
+ } elsif ($type eq 'Placement') {
+ $settingsoption = &mt('View placement test settings which only a [_1] may modify.',$dctitle);
+ } else {
+ $settingsoption = &mt('View course settings which only a [_1] may modify.',$dctitle);
+ }
+ }
+ $r->print($actiontext.'');
+ if ($roleoption) {
+ $r->print('- '.$roleoption.'
'."\n");
+ }
+ $r->print('- '.$settingsoption.'
'."\n".'
');
return;
}
@@ -222,7 +265,7 @@ sub print_course_selection_page {
my %courses = &Apache::loncommon::search_courses($dom,$type,$filter,$numtitles,
undef,undef,undef,\@codetitles);
&Apache::lonpickcourse::display_matched_courses($r,$type,0,$action,undef,undef,undef,
- undef,undef,%courses);
+ $dom,undef,%courses);
return;
}
@@ -243,7 +286,7 @@ sub get_filters {
}
sub print_modification_menu {
- my ($r,$cdesc,$domdesc,$dom,$type,$cid,$coursehash) = @_;
+ my ($r,$cdesc,$domdesc,$dom,$type,$cid,$coursehash,$permission) = @_;
&print_header($r,$type);
my ($ccrole,$categorytitle,$setquota_text,$setuploadquota_text,$setparams_text,$cat_text,
$cdom,$cnum);
@@ -283,12 +326,14 @@ sub print_modification_menu {
my @additional_params = &catalog_settable($domconf{'coursecategories'},$type);
sub manage_selfenrollment {
- my ($cdom,$cnum,$type,$coursehash) = @_;
- my ($managed_by_cc,$managed_by_dc) = &Apache::lonuserutils::selfenrollment_administration($cdom,$cnum,$type,$coursehash);
- if (ref($managed_by_dc) eq 'ARRAY') {
- if (@{$managed_by_dc}) {
- return 1;
- }
+ my ($cdom,$cnum,$type,$coursehash,$permission) = @_;
+ if ($permission->{'selfenroll'}) {
+ my ($managed_by_cc,$managed_by_dc) = &Apache::lonuserutils::selfenrollment_administration($cdom,$cnum,$type,$coursehash);
+ if (ref($managed_by_dc) eq 'ARRAY') {
+ if (@{$managed_by_dc}) {
+ return 1;
+ }
+ }
}
return 0;
}
@@ -303,7 +348,7 @@ sub print_modification_menu {
{
linktext => $setparams_text,
url => &phaseurl('setparms'),
- permission => 1,
+ permission => $permission->{'setparms'},
#help => '',
icon => 'crsconf.png',
linktitle => ''
@@ -311,7 +356,7 @@ sub print_modification_menu {
{
linktext => 'View/Modify quotas for group portfolio files, and for uploaded content.',
url => &phaseurl('setquota'),
- permission => 1,
+ permission => $permission->{'setquota'},
#help => '',
icon => 'groupportfolioquota.png',
linktitle => ''
@@ -319,7 +364,7 @@ sub print_modification_menu {
{
linktext => 'View/Modify responders threshold for anonymous survey submissions display',
url => &phaseurl('setanon'),
- permission => 1,
+ permission => $permission->{'setanon'},
#help => '',
icon => 'anonsurveythreshold.png',
linktitle => ''
@@ -327,7 +372,7 @@ sub print_modification_menu {
{
linktext => $cat_text,
url => &phaseurl('catsettings'),
- permission => (@additional_params > 0),
+ permission => (($permission->{'catsettings'}) && (@additional_params > 0)),
#help => '',
icon => 'ccatconf.png',
linktitle => ''
@@ -335,7 +380,7 @@ sub print_modification_menu {
{
linktext => 'Display current settings for automated enrollment',
url => &phaseurl('viewparms'),
- permission => (($type ne 'Community') && ($type ne 'Placement')),
+ permission => ($permission->{'viewparms'} && ($type ne 'Community') && ($type ne 'Placement')),
#help => '',
icon => 'roles.png',
linktitle => ''
@@ -345,7 +390,7 @@ sub print_modification_menu {
icon => 'self_enroll.png',
#help => 'Course_Self_Enrollment',
url => &phaseurl('selfenroll'),
- permission => &manage_selfenrollment($cdom,$cnum,$type,$coursehash),
+ permission => &manage_selfenrollment($cdom,$cnum,$type,$coursehash,$permission),
linktitle => 'Configure user self-enrollment.',
},
{
@@ -353,7 +398,7 @@ sub print_modification_menu {
icon => 'emblem-readonly.png',
#help => '',
url => &phaseurl('setpostsubmit'),
- permission => 1,
+ permission => $permission->{'setpostsubmit'},
linktitle => '',
},
]
@@ -387,18 +432,23 @@ sub print_modification_menu {
''.$setuploadquota_text.''."\n".
''.$anon_text.''."\n".
''.$postsubmit_text.''."\n";
+ my ($categories_link_start,$categories_link_end);
+ if ($permission->{'catsettings'}) {
+ $categories_link_start = '';
+ $categories_link_end = '';
+ }
foreach my $item (@additional_params) {
if ($type eq 'Community') {
if ($item eq 'togglecats') {
- $menu_html .= ' '.&mt('Hiding/unhiding a community from the catalog (although can be [_1]configured[_2] to be modifiable by a Coordinator in community context).','','').''."\n";
+ $menu_html .= ' '.&mt('Hiding/unhiding a community from the catalog (although can be [_1]configured[_2] to be modifiable by a Coordinator in community context).',$categories_link_start,$categories_link_end).''."\n";
} elsif ($item eq 'categorize') {
- $menu_html .= ' '.&mt('Manual cataloging of a community (although can be [_1]configured[_2] to be modifiable by a Coordinator in community context).','','').''."\n";
+ $menu_html .= ' '.&mt('Manual cataloging of a community (although can be [_1]configured[_2] to be modifiable by a Coordinator in community context).',$categories_link_start,$categories_link_end).''."\n";
}
} else {
if ($item eq 'togglecats') {
- $menu_html .= ' '.&mt('Hiding/unhiding a course from the course catalog (although can be [_1]configured[_2] to be modifiable by a Course Coordinator in course context).','','').''."\n";
+ $menu_html .= ' '.&mt('Hiding/unhiding a course from the course catalog (although can be [_1]configured[_2] to be modifiable by a Course Coordinator in course context).',$categories_link_start,$categories_link_end).''."\n";
} elsif ($item eq 'categorize') {
- $menu_html .= ' '.&mt('Manual cataloging of a course (although can be [_1]configured[_2] to be modifiable by a Course Coordinator in course context).','','').''."\n";
+ $menu_html .= ' '.&mt('Manual cataloging of a course (although can be [_1]configured[_2] to be modifiable by a Course Coordinator in course context).',$categories_link_start,$categories_link_end).''."\n";
}
}
}
@@ -414,18 +464,47 @@ sub print_modification_menu {
return;
}
-sub print_ccrole_selected {
+sub print_adhocrole_selected {
my ($r,$type) = @_;
&print_header($r,$type);
my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'});
- $r->print('');
+ } else {
+ $r->print('');
+ }
+ return;
}
sub print_settings_display {
- my ($r,$cdom,$cnum,$cdesc,$type) = @_;
+ my ($r,$cdom,$cnum,$cdesc,$type,$permission) = @_;
my %enrollvar = &get_enrollment_settings($cdom,$cnum);
my %longtype = &course_settings_descrip($type);
my %lt = &Apache::lonlocal::texthash(
@@ -466,25 +545,35 @@ sub print_settings_display {
}
$disp_table .= &Apache::loncommon::end_data_table()."\n";
&print_header($r,$type);
- my $newrole = $ccrole.'./'.$cdom.'/'.$cnum;
- my $escuri = &HTML::Entities::encode('/adm/roles?selectrole=1&'.$newrole.
- '=1&destinationurl=/adm/populate','&<>"');
+ my ($enroll_link_start,$enroll_link_end,$setparms_link_start,$setparms_link_end);
+ if (&Apache::lonnet::allowed('ccc',$cdom)) {
+ my $newrole = $ccrole.'./'.$cdom.'/'.$cnum;
+ my $escuri = &HTML::Entities::encode('/adm/roles?selectrole=1&'.$newrole.
+ '=1&destinationurl=/adm/populate','&<>"');
+ $enroll_link_start = '';
+ $enroll_link_end = '';
+ }
+ if ($permission->{'setparms'}) {
+ $setparms_link_start = '';
+ $setparms_link_end = '';
+ }
$r->print(''.&mt('Current automated enrollment settings for:').
' '.$cdesc.'
'.
''
- );
+ );
}
sub print_setquota {
@@ -2059,9 +2148,9 @@ ENDSCRIPT
}
my $starthash;
- if ($env{'form.phase'} eq 'ccrole') {
+ if ($env{'form.phase'} eq 'adhocrole') {
$starthash = {
- add_entries => {'onload' => "javascript:document.ccrole.submit();"},
+ add_entries => {'onload' => "javascript:document.adhocrole.submit();"},
};
} elsif ($phase eq 'courselist') {
$starthash = {
@@ -2178,6 +2267,34 @@ sub showcredits {
}
}
+sub get_permission {
+ my ($dom) = @_;
+ my ($allowed,%permission);
+ if (&Apache::lonnet::allowed('ccc',$dom)) {
+ $allowed = 1;
+ %permission = (
+ setquota => 1,
+ processquota => 1,
+ setanon => 1,
+ processthreshold => 1,
+ setpostsubmit => 1,
+ processpostsubmit => 1,
+ viewparms => 1,
+ setparms => 1,
+ processparms => 1,
+ catsettings => 1,
+ processcat => 1,
+ selfenroll => 1,
+ );
+ } elsif (&Apache::lonnet::allowed('rar',$dom)) {
+ $allowed = 1;
+ %permission = (
+ viewparms => 1,
+ );
+ }
+ return ($allowed,\%permission);
+}
+
sub handler {
my $r = shift;
if ($r->header_only) {
@@ -2188,8 +2305,8 @@ sub handler {
my $dom = $env{'request.role.domain'};
my $domdesc = &Apache::lonnet::domain($dom,'description');
-
- if (&Apache::lonnet::allowed('ccc',$dom)) {
+ my ($allowed,$permission) = &get_permission($dom);
+ if ($allowed) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
@@ -2244,23 +2361,24 @@ sub handler {
({href=>"javascript:changePage(document.$phase,'menu')",
text=>"Pick action"});
&print_modification_menu($r,$cdesc,$domdesc,$dom,$type,
- $env{'form.pickedcourse'},$coursehash);
- } elsif ($phase eq 'ccrole') {
+ $env{'form.pickedcourse'},$coursehash,
+ $permission);
+ } elsif ($phase eq 'adhocrole') {
&Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:changePage(document.$phase,'ccrole')",
+ ({href=>"javascript:changePage(document.$phase,'adhocrole')",
text=>$enter_text});
- &print_ccrole_selected($r,$type);
+ &print_adhocrole_selected($r,$type);
} else {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'menu')",
text=>"Pick action"});
my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'});
- if ($phase eq 'setquota') {
+ if (($phase eq 'setquota') && ($permission->{'setquota'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'$phase')",
- text=>"Set quota"});
+ text=>"Set quota",});
&print_setquota($r,$cdom,$cnum,$cdesc,$type);
- } elsif ($phase eq 'processquota') {
+ } elsif (($phase eq 'processquota') && ($permission->{'processquota'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'setquota')",
text=>"Set quota"});
@@ -2268,12 +2386,12 @@ sub handler {
({href=>"javascript:changePage(document.$phase,'$phase')",
text=>"Result"});
&modify_quota($r,$cdom,$cnum,$cdesc,$domdesc,$type);
- } elsif ($phase eq 'setanon') {
+ } elsif (($phase eq 'setanon') && ($permission->{'setanon'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'$phase')",
text=>"Threshold for anonymous submissions display"});
&print_set_anonsurvey_threshold($r,$cdom,$cnum,$cdesc,$type);
- } elsif ($phase eq 'processthreshold') {
+ } elsif (($phase eq 'processthreshold') && ($permission->{'processthreshold'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'setanon')",
text=>"Threshold for anonymous submissions display"});
@@ -2281,27 +2399,27 @@ sub handler {
({href=>"javascript:changePage(document.$phase,'$phase')",
text=>"Result"});
&modify_anonsurvey_threshold($r,$cdom,$cnum,$cdesc,$domdesc,$type);
- } elsif ($phase eq 'setpostsubmit') {
+ } elsif (($phase eq 'setpostsubmit') && ($permission->{'setpostsubmit'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'$phase')",
text=>"Configure submit button behavior post-submission"});
&print_postsubmit_config($r,$cdom,$cnum,$cdesc,$type);
- } elsif ($phase eq 'processpostsubmit') {
+ } elsif (($phase eq 'processpostsubmit') && ($permission->{'processpostsubmit'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'$phase')",
text=>"Result"});
&modify_postsubmit_config($r,$cdom,$cnum,$cdesc,$domdesc,$type);
- } elsif ($phase eq 'viewparms') {
+ } elsif (($phase eq 'viewparms') && ($permission->{'viewparms'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'viewparms')",
text=>"Display settings"});
- &print_settings_display($r,$cdom,$cnum,$cdesc,$type);
- } elsif ($phase eq 'setparms') {
+ &print_settings_display($r,$cdom,$cnum,$cdesc,$type,$permission);
+ } elsif (($phase eq 'setparms') && ($permission->{'setparms'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'$phase')",
text=>"Change settings"});
&print_course_modification_page($r,$cdom,$cnum,$cdesc,$type);
- } elsif ($phase eq 'processparms') {
+ } elsif (($phase eq 'processparms') && ($permission->{'processparms'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'setparms')",
text=>"Change settings"});
@@ -2309,12 +2427,12 @@ sub handler {
({href=>"javascript:changePage(document.$phase,'$phase')",
text=>"Result"});
&modify_course($r,$cdom,$cnum,$cdesc,$domdesc,$type);
- } elsif ($phase eq 'catsettings') {
+ } elsif (($phase eq 'catsettings') && ($permission->{'catsettings'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'$phase')",
text=>"Catalog settings"});
&print_catsettings($r,$cdom,$cnum,$cdesc,$type);
- } elsif ($phase eq 'processcat') {
+ } elsif (($phase eq 'processcat') && ($permission->{'processcat'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'catsettings')",
text=>"Catalog settings"});
@@ -2322,7 +2440,7 @@ sub handler {
({href=>"javascript:changePage(document.$phase,'$phase')",
text=>"Result"});
&modify_catsettings($r,$cdom,$cnum,$cdesc,$domdesc,$type);
- } elsif ($phase eq 'selfenroll') {
+ } elsif (($phase eq 'selfenroll') && ($permission->{'selfenroll'})) {
&Apache::lonhtmlcommon::add_breadcrumb
({href => "javascript:changePage(document.$phase,'$phase')",
text => "Self-enrollment settings"});