--- loncom/interface/lonmodifycourse.pm 2016/11/10 21:42:19 1.89
+++ loncom/interface/lonmodifycourse.pm 2022/02/16 02:20:59 1.98
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# handler for DC-only modifiable course settings
#
-# $Id: lonmodifycourse.pm,v 1.89 2016/11/10 21:42:19 raeburn Exp $
+# $Id: lonmodifycourse.pm,v 1.98 2022/02/16 02:20:59 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -39,6 +39,9 @@ use Apache::lonpickcourse;
use lib '/home/httpd/lib/perl';
use LONCAPA qw(:DEFAULT :match);
+my $registered_cleanup;
+my $modified_dom;
+
sub get_dc_settable {
my ($type,$cdom) = @_;
if ($type eq 'Community') {
@@ -49,6 +52,10 @@ sub get_dc_settable {
if (&showcredits($cdom)) {
push(@items,'defaultcredits');
}
+ my %passwdconf = &Apache::lonnet::get_passwdconf($cdom);
+ if (($passwdconf{'crsownerchg'}) && ($type ne 'Placement')) {
+ push(@items,'nopasswdchg');
+ }
return @items;
}
}
@@ -101,6 +108,7 @@ sub get_enrollment_settings {
@items = map { 'internal.'.$_; } (@{$internals});
push(@items,@{$accessdates});
}
+ push(@items,'internal.nopasswdchg');
my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum);
my %enrollvar;
$enrollvar{'autharg'} = '';
@@ -126,7 +134,7 @@ sub get_enrollment_settings {
} elsif ($type eq "authtype"
|| $type eq "autharg" || $type eq "coursecode"
|| $type eq "crosslistings" || $type eq "selfenrollmgr"
- || $type eq "autodropfailsafe") {
+ || $type eq "autodropfailsafe" || $type eq 'nopasswdchg') {
$enrollvar{$type} = $settings{$item};
} elsif ($type eq 'defaultcredits') {
if (&showcredits($cdom)) {
@@ -203,28 +211,24 @@ sub print_course_search_page {
$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) {
+ my ($roles_by_num,$description,$accessref,$accessinfo) = &Apache::lonnet::get_all_adhocroles($dom);
+ if ((ref($roles_by_num) eq 'ARRAY') && (ref($description) eq 'HASH')) {
+ if (@{$roles_by_num} > 1) {
if ($type eq 'Community') {
- $roleoption = &mt('Enter the community with one of the available ad hoc roles: [_1].',
- join(', ',@adhoc));
+ $roleoption = &mt('Enter the community with one of the available ad hoc roles');
} elsif ($type eq 'Placement') {
- $roleoption = &mt('Enter the placement test with one of the available ad hoc roles: [_1].',
- join(', ',@adhoc));
+ $roleoption = &mt('Enter the placement test with one of the available ad hoc roles.');
} else {
- $roleoption = &mt('Enter the course with one of the available ad hoc roles: [_1].',
- join(', ',@adhoc));
+ $roleoption = &mt('Enter the course with one of the available ad hoc roles.');
}
} else {
+ my $rolename = $description->{$roles_by_num->[0]};
if ($type eq 'Community') {
- $roleoption = &mt('Enter the community with the ad hoc role of: [_1]',$adhoc[0]);
+ $roleoption = &mt('Enter the community with the ad hoc role of: [_1]',$rolename);
} elsif ($type eq 'Placement') {
- $roleoption = &mt('Enter the placement test with the ad hoc role of: [_1]',$adhoc[0]);
+ $roleoption = &mt('Enter the placement test with the ad hoc role of: [_1]',$rolename);
} else {
- $roleoption = &mt('Enter the course with the ad hoc role of: [_1]',$adhoc[0]);
+ $roleoption = &mt('Enter the course with the ad hoc role of: [_1]',$rolename);
}
}
}
@@ -245,14 +249,133 @@ sub print_course_search_page {
}
sub print_course_selection_page {
- my ($r,$dom,$domdesc) = @_;
+ my ($r,$dom,$domdesc,$permission) = @_;
my $type = $env{'form.type'};
if (!defined($type)) {
$type = 'Course';
}
&print_header($r,$type);
-# Criteria for course search
+ if ($permission->{'adhocrole'} eq 'custom') {
+ my %lt = &Apache::lonlocal::texthash(
+ title => 'Ad hoc role selection',
+ preamble => 'Please choose an ad hoc role in the course.',
+ cancel => 'Click "OK" to enter the course, or "Cancel" to choose a different course.',
+ );
+ my %jslt = &Apache::lonlocal::texthash (
+ none => 'You are not eligible to use an ad hoc role for the selected course',
+ ok => 'OK',
+ exit => 'Cancel',
+ );
+ &js_escape(\%jslt);
+ $r->print(<<"END");
+
+
+
+
$lt{'preamble'}
+
+
$lt{'cancel'}
+
+END
+ } elsif ($permission->{'adhocrole'} eq 'coord') {
+ $r->print(<<"END");
+
+END
+ }
+
+# Criteria for course search
my ($filterlist,$filter) = &get_filters();
my $action = '/adm/modifycourse';
my $dctitle = &Apache::lonnet::plaintext('dc');
@@ -307,6 +430,7 @@ sub print_modification_menu {
'setanon' => 'View/Modify responders threshold for anonymous survey submissions display',
'selfenroll' => 'View/Modify Self-Enrollment configuration',
'setpostsubmit' => 'View/Modify submit button behavior, post-submission',
+ 'setltiauth' => 'View/Modify re-authentication requirement for LTI launch of deep-linked item',
);
} else {
%linktext = (
@@ -314,6 +438,7 @@ sub print_modification_menu {
'setanon' => 'View responders threshold for anonymous survey submissions display',
'selfenroll' => 'View Self-Enrollment configuration',
'setpostsubmit' => 'View submit button behavior, post-submission',
+ 'setltiauth' => 'View re-authentication requirement for LTI launch of deep-linked item',
);
}
if ($type eq 'Community') {
@@ -352,6 +477,7 @@ sub print_modification_menu {
my $anon_text = &mt('Responder threshold required to display anonymous survey submissions.');
my $postsubmit_text = &mt('Override defaults for submit button behavior post-submission for this specific course.');
my $mysqltables_text = &mt('Override default for lifetime of "temporary" MySQL tables containing student performance data.');
+ my $ltiauth_text = &mt('Override default for requirement for re-authentication for LTI-limited launch of deep-linked item');
$linktext{'viewparms'} = 'Display current settings for automated enrollment';
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom);
@@ -433,6 +559,14 @@ sub print_modification_menu {
permission => $permission->{'setpostsubmit'},
linktitle => '',
},
+ {
+ linktext => $linktext{'setltiauth'},
+ icon => 'system-lock-screen.png',
+ #help => '',
+ url => &phaseurl('setltiauth'),
+ permission => $permission->{'setltiauth'},
+ linktitle => '',
+ },
]
},
);
@@ -463,7 +597,8 @@ sub print_modification_menu {
'