version 1.88, 2016/11/09 14:04:41
|
version 1.96, 2021/06/15 20:52:26
|
Line 39 use Apache::lonpickcourse;
|
Line 39 use Apache::lonpickcourse;
|
use lib '/home/httpd/lib/perl'; |
use lib '/home/httpd/lib/perl'; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
|
|
|
my $registered_cleanup; |
|
my $modified_dom; |
|
|
sub get_dc_settable { |
sub get_dc_settable { |
my ($type,$cdom) = @_; |
my ($type,$cdom) = @_; |
if ($type eq 'Community') { |
if ($type eq 'Community') { |
Line 49 sub get_dc_settable {
|
Line 52 sub get_dc_settable {
|
if (&showcredits($cdom)) { |
if (&showcredits($cdom)) { |
push(@items,'defaultcredits'); |
push(@items,'defaultcredits'); |
} |
} |
|
my %passwdconf = &Apache::lonnet::get_passwdconf($cdom); |
|
if (($passwdconf{'crsownerchg'}) && ($type ne 'Placement')) { |
|
push(@items,'nopasswdchg'); |
|
} |
return @items; |
return @items; |
} |
} |
} |
} |
Line 101 sub get_enrollment_settings {
|
Line 108 sub get_enrollment_settings {
|
@items = map { 'internal.'.$_; } (@{$internals}); |
@items = map { 'internal.'.$_; } (@{$internals}); |
push(@items,@{$accessdates}); |
push(@items,@{$accessdates}); |
} |
} |
|
push(@items,'internal.nopasswdchg'); |
my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum); |
my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum); |
my %enrollvar; |
my %enrollvar; |
$enrollvar{'autharg'} = ''; |
$enrollvar{'autharg'} = ''; |
Line 126 sub get_enrollment_settings {
|
Line 134 sub get_enrollment_settings {
|
} elsif ($type eq "authtype" |
} elsif ($type eq "authtype" |
|| $type eq "autharg" || $type eq "coursecode" |
|| $type eq "autharg" || $type eq "coursecode" |
|| $type eq "crosslistings" || $type eq "selfenrollmgr" |
|| $type eq "crosslistings" || $type eq "selfenrollmgr" |
|| $type eq "autodropfailsafe") { |
|| $type eq "autodropfailsafe" || $type eq 'nopasswdchg') { |
$enrollvar{$type} = $settings{$item}; |
$enrollvar{$type} = $settings{$item}; |
} elsif ($type eq 'defaultcredits') { |
} elsif ($type eq 'defaultcredits') { |
if (&showcredits($cdom)) { |
if (&showcredits($cdom)) { |
Line 203 sub print_course_search_page {
|
Line 211 sub print_course_search_page {
|
$settingsoption = &mt('View or modify course settings which only a [_1] may modify.',$dctitle); |
$settingsoption = &mt('View or modify course settings which only a [_1] may modify.',$dctitle); |
} |
} |
} elsif (&Apache::lonnet::allowed('rar',$dom)) { |
} elsif (&Apache::lonnet::allowed('rar',$dom)) { |
my %adhocroles = &Apache::lonnet::userenvironment($env{'user.domain'},$env{'user.name'}, |
my ($roles_by_num,$description,$accessref,$accessinfo) = &Apache::lonnet::get_all_adhocroles($dom); |
'adhocroles.'.$dom); |
if ((ref($roles_by_num) eq 'ARRAY') && (ref($description) eq 'HASH')) { |
if (keys(%adhocroles)) { |
if (@{$roles_by_num} > 1) { |
my @adhoc = split(',',$adhocroles{'adhocroles.'.$dom}); |
|
if (@adhoc > 1) { |
|
if ($type eq 'Community') { |
if ($type eq 'Community') { |
$roleoption = &mt('Enter the community with one of the available ad hoc roles: [_1].', |
$roleoption = &mt('Enter the community with one of the available ad hoc roles'); |
join(', ',@adhoc)); |
|
} elsif ($type eq 'Placement') { |
} elsif ($type eq 'Placement') { |
$roleoption = &mt('Enter the placement test with one of the available ad hoc roles: [_1].', |
$roleoption = &mt('Enter the placement test with one of the available ad hoc roles.'); |
join(', ',@adhoc)); |
|
} else { |
} else { |
$roleoption = &mt('Enter the course with one of the available ad hoc roles: [_1].', |
$roleoption = &mt('Enter the course with one of the available ad hoc roles.'); |
join(', ',@adhoc)); |
|
} |
} |
} else { |
} else { |
|
my $rolename = $description->{$roles_by_num->[0]}; |
if ($type eq 'Community') { |
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') { |
} 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 { |
} 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); |
} |
} |
} |
} |
} |
} |
Line 245 sub print_course_search_page {
|
Line 249 sub print_course_search_page {
|
} |
} |
|
|
sub print_course_selection_page { |
sub print_course_selection_page { |
my ($r,$dom,$domdesc) = @_; |
my ($r,$dom,$domdesc,$permission) = @_; |
my $type = $env{'form.type'}; |
my $type = $env{'form.type'}; |
if (!defined($type)) { |
if (!defined($type)) { |
$type = 'Course'; |
$type = 'Course'; |
} |
} |
&print_header($r,$type); |
&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"); |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
\$(document).ready(function(){ |
|
\$( "#LC_adhocrole_chooser" ).dialog({ autoOpen: false }); |
|
}); |
|
|
|
function gochoose(cname,cdom,cdesc) { |
|
document.courselist.pickedcourse.value = cdom+'_'+cname; |
|
\$("#LC_choose_adhoc").empty(); |
|
var pickedaction = \$('input[name=phase]:checked', '#LCcoursepicker').val(); |
|
if (pickedaction == 'adhocrole') { |
|
var http = new XMLHttpRequest(); |
|
var url = "/adm/pickcourse"; |
|
var params = "cid="+cdom+"_"+cname+"&context=adhoc"; |
|
http.open("POST", url, true); |
|
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |
|
http.onreadystatechange = function() { |
|
if (http.readyState == 4 && http.status == 200) { |
|
var data = \$.parseJSON(http.responseText); |
|
var len = data.roles.length; |
|
if (len == '' || len == null || len == 0) { |
|
alert('$jslt{none}'); |
|
} else { |
|
if (len == 1) { |
|
\$( '[name="adhocrole"]' )[0].value = data.roles[0].name; |
|
document.courselist.submit(); |
|
} else { |
|
var str = ''; |
|
\$("#LC_choose_adhoc").empty(); |
|
for (var i=0; i<data.roles.length; i++) { |
|
\$("<label><input type='radio' value='"+data.roles[i].name+"' name='LC_get_role' id='LC_get_role_"+i+"' />"+data.roles[i].desc+"</label><span> </span>") |
|
.appendTo("#LC_choose_adhoc"); |
|
} |
|
\$( "#LC_adhocrole_chooser" ).toggle( true ); |
|
\$( "#LC_get_role_0").prop("checked", true); |
|
\$( "#LC_adhocrole_chooser" ).dialog({ autoOpen: false }); |
|
\$( "#LC_adhocrole_chooser" ).dialog("open"); |
|
\$( "#LC_adhocrole_chooser" ).dialog({ |
|
height: 400, |
|
width: 500, |
|
modal: true, |
|
resizable: false, |
|
buttons: [ |
|
{ |
|
text: "$jslt{'ok'}", |
|
click: function() { |
|
var rolename = \$('input[name=LC_get_role]:checked', '#LChelpdeskpicker').val(); |
|
\$( '[name="adhocrole"]' )[0].value = rolename; |
|
document.courselist.submit(); |
|
} |
|
}, |
|
{ |
|
text: "$jslt{'exit'}", |
|
click: function() { |
|
\$("#LC_adhocrole_chooser").dialog( "close" ); |
|
} |
|
} |
|
], |
|
}); |
|
\$( "#LC_adhocrole_chooser" ).find( "form" ).on( "submit", function( event ) { |
|
event.preventDefault(); |
|
var rolename = \$('input[name=LC_get_role]:checked', '#LChelpdeskpicker').val() |
|
\$( '[name="adhocrole"]' )[0].value = rolename; |
|
document.courselist.submit(); |
|
\$("#LC_adhocrole_chooser").dialog( "close" ); |
|
}); |
|
} |
|
} |
|
} |
|
} |
|
http.send(params); |
|
} else { |
|
document.courselist.submit(); |
|
} |
|
return; |
|
} |
|
// ]]> |
|
</script> |
|
|
|
<div id="LC_adhocrole_chooser" title="$lt{'title'}" style="display:none"> |
|
<p>$lt{'preamble'}</p> |
|
<form name="LChelpdeskadhoc" id="LChelpdeskpicker" action=""> |
|
<div id="LC_choose_adhoc"> |
|
</div> |
|
<input type="hidden" name="adhocrole" id="LCadhocrole" value="" /> |
|
<input type="submit" tabindex="-1" style="position:absolute; top:-1000px" /> |
|
</form> |
|
<p>$lt{'cancel'}</p> |
|
</div> |
|
END |
|
} elsif ($permission->{'adhocrole'} eq 'coord') { |
|
$r->print(<<"END"); |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
|
|
function gochoose(cname,cdom,cdesc) { |
|
document.courselist.pickedcourse.value = cdom+'_'+cname; |
|
document.courselist.submit(); |
|
return; |
|
} |
|
|
|
// ]]> |
|
</script> |
|
END |
|
} |
|
|
|
# Criteria for course search |
my ($filterlist,$filter) = &get_filters(); |
my ($filterlist,$filter) = &get_filters(); |
my $action = '/adm/modifycourse'; |
my $action = '/adm/modifycourse'; |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
Line 418 sub print_modification_menu {
|
Line 541 sub print_modification_menu {
|
linktitle => '' |
linktitle => '' |
}, |
}, |
{ |
{ |
linktext => $linktext{'selfenroll'},, |
linktext => $linktext{'selfenroll'}, |
icon => 'self_enroll.png', |
icon => 'self_enroll.png', |
#help => 'Course_Self_Enrollment', |
#help => 'Course_Self_Enrollment', |
url => &phaseurl('selfenroll'), |
url => &phaseurl('selfenroll'), |
Line 497 sub print_modification_menu {
|
Line 620 sub print_modification_menu {
|
} |
} |
|
|
sub print_adhocrole_selected { |
sub print_adhocrole_selected { |
my ($r,$type) = @_; |
my ($r,$type,$permission) = @_; |
&print_header($r,$type); |
&print_header($r,$type); |
my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'}); |
my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'}); |
my ($newrole,$selectrole); |
my ($newrole,$selectrole); |
if (&Apache::lonnet::allowed('ccc',$cdom)) { |
if ($permission->{'adhocrole'} eq 'coord') { |
if ($type eq 'Community') { |
if ($type eq 'Community') { |
$newrole = "co./$cdom/$cnum"; |
$newrole = "co./$cdom/$cnum"; |
} else { |
} else { |
$newrole = "cc./$cdom/$cnum"; |
$newrole = "cc./$cdom/$cnum"; |
} |
} |
$selectrole = 1; |
$selectrole = 1; |
} elsif (&Apache::lonnet::allowed('rar',$cdom)) { |
} elsif ($permission->{'adhocrole'} eq 'custom') { |
my %adhocroles = &Apache::lonnet::userenvironment($env{'user.domain'},$env{'user.name'}, |
my ($okroles,$description) = &Apache::lonnet::get_my_adhocroles($env{'form.pickedcourse'},1); |
'adhocroles.'.$cdom); |
if (ref($okroles) eq 'ARRAY') { |
if (keys(%adhocroles)) { |
my $possrole = $env{'form.adhocrole'}; |
my $possrole = $env{'form.adhocrole'}; |
if (($possrole ne '') && (grep(/^\Q$possrole\E$/,@{$okroles}))) { |
if ($possrole ne '') { |
my $confname = &Apache::lonnet::get_domainconfiguser($cdom); |
my @adhoc = split(',',$adhocroles{'adhocroles.'.$cdom}); |
$newrole = "cr/$cdom/$confname/$possrole./$cdom/$cnum"; |
if (grep(/^\Q$possrole\E$/,@adhoc)) { |
$selectrole = 1; |
my $confname = &Apache::lonnet::get_domainconfiguser($cdom); |
|
$newrole = "cr/$cdom/$confname/$possrole./$cdom/$cnum"; |
|
$selectrole = 1; |
|
} |
|
} |
} |
} |
} |
} |
} |
Line 565 sub print_settings_display {
|
Line 684 sub print_settings_display {
|
"<th>$lt{'dcon'}</th>\n". |
"<th>$lt{'dcon'}</th>\n". |
&Apache::loncommon::end_data_table_header_row()."\n"; |
&Apache::loncommon::end_data_table_header_row()."\n"; |
foreach my $item (@items) { |
foreach my $item (@items) { |
|
my $shown = $enrollvar{$item}; |
|
if ($item eq 'crosslistings') { |
|
my (@xlists,@lcsecs); |
|
foreach my $entry (split(/,/,$enrollvar{$item})) { |
|
my ($xlist,$lc_sec) = split(/:/,$entry); |
|
push(@xlists,$xlist); |
|
push(@lcsecs,$lc_sec); |
|
} |
|
if (@xlists) { |
|
my $crskey = $cnum.':'.$enrollvar{'coursecode'}; |
|
my %reformatted = |
|
&Apache::lonnet::auto_instsec_reformat($cdom,'declutter', |
|
{$crskey => \@xlists}); |
|
if (ref($reformatted{$crskey}) eq 'ARRAY') { |
|
my @show; |
|
my @xlcodes = @{$reformatted{$crskey}}; |
|
for (my $i=0; $i<@xlcodes; $i++) { |
|
push(@show,$xlcodes[$i].':'.$lcsecs[$i]); |
|
} |
|
if (@show) { |
|
$shown = join(',',@show); |
|
} |
|
} |
|
} |
|
} |
$disp_table .= &Apache::loncommon::start_data_table_row()."\n". |
$disp_table .= &Apache::loncommon::start_data_table_row()."\n". |
"<td><b>$longtype{$item}</b></td>\n". |
"<td><b>$longtype{$item}</b></td>\n". |
"<td>$enrollvar{$item}</td>\n"; |
"<td>$shown</td>\n"; |
if (grep(/^\Q$item\E$/,@modifiable_params)) { |
if (grep(/^\Q$item\E$/,@modifiable_params)) { |
$disp_table .= '<td align="right">'.&mt('Yes').'</td>'."\n"; |
$disp_table .= '<td align="right">'.&mt('Yes').'</td>'."\n"; |
} else { |
} else { |
Line 770 sub print_postsubmit_config {
|
Line 914 sub print_postsubmit_config {
|
$helpitem $lt{'disa'}: |
$helpitem $lt{'disa'}: |
<label><input type="radio" name="postsubmit" $checkedon onclick="togglePostsubmit('studentsubmission');" value="1" $disabled /> |
<label><input type="radio" name="postsubmit" $checkedon onclick="togglePostsubmit('studentsubmission');" value="1" $disabled /> |
$lt{'yes'}</label> |
$lt{'yes'}</label> |
<label><input type="radio" name="postsubmit" $checkedoff onclick="togglePostsubmit('studentsubmission');" value="0" $disabled/> |
<label><input type="radio" name="postsubmit" $checkedoff onclick="togglePostsubmit('studentsubmission');" value="0" $disabled /> |
$lt{'no'}</label> |
$lt{'no'}</label> |
<div id="studentsubmission" style="display: $display"> |
<div id="studentsubmission" style="display: $display"> |
$lt{'nums'} <input type="text" name="postsubtimeout" value="$postsubtimeout" $disabled /><br /> |
$lt{'nums'} <input type="text" name="postsubtimeout" value="$postsubtimeout" $disabled /><br /> |
Line 917 sub print_course_modification_page {
|
Line 1061 sub print_course_modification_page {
|
my %enrollvar = &get_enrollment_settings($cdom,$cnum); |
my %enrollvar = &get_enrollment_settings($cdom,$cnum); |
my %settings = &Apache::lonnet::get('environment',['internal.coursecode','internal.textbook', |
my %settings = &Apache::lonnet::get('environment',['internal.coursecode','internal.textbook', |
'internal.selfenrollmgrdc','internal.selfenrollmgrcc', |
'internal.selfenrollmgrdc','internal.selfenrollmgrcc', |
'internal.mysqltables'], |
'internal.mysqltables'],$cdom,$cnum); |
$cdom,$cnum); |
|
my $type = &Apache::lonuserutils::get_extended_type($cdom,$cnum,$crstype,\%settings); |
my $type = &Apache::lonuserutils::get_extended_type($cdom,$cnum,$crstype,\%settings); |
my @specific_managebydc = split(/,/,$settings{'internal.selfenrollmgrdc'}); |
my @specific_managebydc = split(/,/,$settings{'internal.selfenrollmgrdc'}); |
my @specific_managebycc = split(/,/,$settings{'internal.selfenrollmgrcc'}); |
my @specific_managebycc = split(/,/,$settings{'internal.selfenrollmgrcc'}); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom); |
|
my %passwdconf = &Apache::lonnet::get_passwdconf($cdom); |
my @default_managebydc = split(/,/,$domdefaults{$type.'selfenrolladmdc'}); |
my @default_managebydc = split(/,/,$domdefaults{$type.'selfenrolladmdc'}); |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
$ccrole = 'co'; |
$ccrole = 'co'; |
Line 997 sub print_course_modification_page {
|
Line 1141 sub print_course_modification_page {
|
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
$r->print(&Apache::lonhtmlcommon::row_title( |
$r->print(&Apache::lonhtmlcommon::row_title( |
&Apache::loncommon::help_open_topic('Modify_Community_Owner'). |
&Apache::loncommon::help_open_topic('Modify_Community_Owner'). |
' '.&mt('Community Owner'))."\n"); |
' '.&mt('Community Owner'))."\n". |
|
$ownertable."\n".&Apache::lonhtmlcommon::row_closure()); |
} else { |
} else { |
$r->print(&Apache::lonhtmlcommon::row_title( |
$r->print(&Apache::lonhtmlcommon::row_title( |
&Apache::loncommon::help_open_topic('Modify_Course_Instcode'). |
&Apache::loncommon::help_open_topic('Modify_Course_Instcode'). |
' '.&mt('Course Code'))."\n". |
' '.&mt('Course Code'))."\n". |
'<input type="text" size="15" name="coursecode" value="'.$enrollvar{'coursecode'}.'"'.$disabled.'/>'. |
'<input type="text" size="15" name="coursecode" value="'.$enrollvar{'coursecode'}.'"'.$disabled.' />'. |
&Apache::lonhtmlcommon::row_closure()); |
&Apache::lonhtmlcommon::row_closure()); |
if (($crstype eq 'Course') && (&showcredits($cdom))) { |
if (($crstype eq 'Course') && (&showcredits($cdom))) { |
$r->print(&Apache::lonhtmlcommon::row_title( |
$r->print(&Apache::lonhtmlcommon::row_title( |
&Apache::loncommon::help_open_topic('Modify_Course_Credithours'). |
&Apache::loncommon::help_open_topic('Modify_Course_Credithours'). |
' '.&mt('Credits (students)'))."\n". |
' '.&mt('Credits (students)'))."\n". |
'<input type="text" size="3" name="defaultcredits" value="'.$enrollvar{'defaultcredits'}.'"'.$disabled.' />'. |
'<input type="text" size="3" name="defaultcredits" value="'.$enrollvar{'defaultcredits'}.'"'.$disabled.' />'. |
&Apache::lonhtmlcommon::row_closure()); |
&Apache::lonhtmlcommon::row_closure()); |
} |
} |
Line 1017 sub print_course_modification_page {
|
Line 1162 sub print_course_modification_page {
|
$authenitems."\n". |
$authenitems."\n". |
&Apache::lonhtmlcommon::row_closure(). |
&Apache::lonhtmlcommon::row_closure(). |
&Apache::lonhtmlcommon::row_title( |
&Apache::lonhtmlcommon::row_title( |
&Apache::loncommon::help_open_topic('Modify_Course_Owner'). |
&Apache::loncommon::help_open_topic('Modify_Course_Owner'). |
' '.&mt('Course Owner'))."\n"); |
' '.&mt('Course Owner'))."\n". |
|
$ownertable."\n".&Apache::lonhtmlcommon::row_closure()); |
|
if (($passwdconf{'crsownerchg'}) && ($type ne 'Placement')) { |
|
my $checked; |
|
if ($enrollvar{'nopasswdchg'}) { |
|
$checked = ' checked="checked"'; |
|
} |
|
$r->print(&Apache::lonhtmlcommon::row_title( |
|
&Apache::loncommon::help_open_topic('Modify_Course_Chgpasswd'). |
|
' '.&mt('Changing passwords (internal)'))."\n". |
|
'<label><input type="checkbox" value="1" name="nopasswdchg"'.$checked.$disabled.' />'. |
|
&mt('Disable changing password for users with student role by course owner').'<label>'."\n". |
|
&Apache::lonhtmlcommon::row_closure()); |
|
} |
} |
} |
my ($cctitle,$rolename,$currmanages,$ccchecked,$dcchecked,$defaultchecked); |
my ($cctitle,$rolename,$currmanages,$ccchecked,$dcchecked,$defaultchecked); |
my ($selfenrollrows,$selfenrolltitles) = &Apache::lonuserutils::get_selfenroll_titles(); |
my ($selfenrollrows,$selfenrolltitles) = &Apache::lonuserutils::get_selfenroll_titles(); |
Line 1028 sub print_course_modification_page {
|
Line 1186 sub print_course_modification_page {
|
$cctitle = &mt('Course personnel'); |
$cctitle = &mt('Course personnel'); |
} |
} |
|
|
$r->print($ownertable."\n".&Apache::lonhtmlcommon::row_closure(). |
$r->print(&Apache::lonhtmlcommon::row_title( |
&Apache::lonhtmlcommon::row_title( |
|
&Apache::loncommon::help_open_topic('Modify_Course_Selfenrolladmin'). |
&Apache::loncommon::help_open_topic('Modify_Course_Selfenrolladmin'). |
' '.&mt('Self-enrollment configuration')). |
' '.&mt('Self-enrollment configuration')). |
&Apache::loncommon::start_data_table()."\n". |
&Apache::loncommon::start_data_table()."\n". |
Line 1167 sub gather_authenitems {
|
Line 1324 sub gather_authenitems {
|
$curr_authtype = 'int'; |
$curr_authtype = 'int'; |
} elsif ($enrollvar->{'authtype'} eq 'localauth' ) { |
} elsif ($enrollvar->{'authtype'} eq 'localauth' ) { |
$curr_authtype = 'loc'; |
$curr_authtype = 'loc'; |
|
} elsif ($enrollvar->{'authtype'} eq 'lti' ) { |
|
$curr_authtype = 'lti'; |
} |
} |
} |
} |
unless ($curr_authtype eq '') { |
unless ($curr_authtype eq '') { |
Line 1187 sub gather_authenitems {
|
Line 1346 sub gather_authenitems {
|
$authform{'krb'} = &Apache::loncommon::authform_kerberos(%param); |
$authform{'krb'} = &Apache::loncommon::authform_kerberos(%param); |
$authform{'int'} = &Apache::loncommon::authform_internal(%param); |
$authform{'int'} = &Apache::loncommon::authform_internal(%param); |
$authform{'loc'} = &Apache::loncommon::authform_local(%param); |
$authform{'loc'} = &Apache::loncommon::authform_local(%param); |
foreach my $item ('krb','int','loc') { |
$authform{'lti'} = &Apache::loncommon::authform_lti(%param); |
|
foreach my $item ('krb','int','loc','lti') { |
if ($authform{$item} ne '') { |
if ($authform{$item} ne '') { |
$authenitems .= $authform{$item}.'<br />'; |
$authenitems .= $authform{$item}.'<br />'; |
} |
} |
Line 1208 sub modify_course {
|
Line 1368 sub modify_course {
|
if (&showcredits($cdom)) { |
if (&showcredits($cdom)) { |
push(@items,'internal.defaultcredits'); |
push(@items,'internal.defaultcredits'); |
} |
} |
|
my %passwdconf = &Apache::lonnet::get_passwdconf($cdom); |
|
if ($passwdconf{'crsownerchg'}) { |
|
push(@items,'internal.nopasswdchg'); |
|
} |
} |
} |
my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum); |
my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum); |
my $description = $settings{'description'}; |
my $description = $settings{'description'}; |
Line 1223 sub modify_course {
|
Line 1387 sub modify_course {
|
} else { |
} else { |
%changed = ( code => 0, |
%changed = ( code => 0, |
owner => 0, |
owner => 0, |
|
passwd => 0, |
); |
); |
$ccrole = 'cc'; |
$ccrole = 'cc'; |
unless ($settings{'internal.sectionnums'} eq '') { |
unless ($settings{'internal.sectionnums'} eq '') { |
Line 1253 sub modify_course {
|
Line 1418 sub modify_course {
|
if ((defined($env{'form.locarg'})) && ($env{'form.locarg'})) { |
if ((defined($env{'form.locarg'})) && ($env{'form.locarg'})) { |
$newattr{'autharg'} = $env{'form.locarg'}; |
$newattr{'autharg'} = $env{'form.locarg'}; |
} |
} |
|
} elsif ($env{'form.login'} eq 'lti') { |
|
$newattr{'authtype'} = 'lti'; |
} |
} |
if ( $newattr{'authtype'}=~ /^krb/) { |
if ( $newattr{'authtype'}=~ /^krb/) { |
if ($newattr{'autharg'} eq '') { |
if ($newattr{'autharg'} eq '') { |
Line 1275 sub modify_course {
|
Line 1442 sub modify_course {
|
$newattr{'mysqltables'} = $env{'form.mysqltables'}; |
$newattr{'mysqltables'} = $env{'form.mysqltables'}; |
$newattr{'mysqltables'} =~ s/\D+//g; |
$newattr{'mysqltables'} =~ s/\D+//g; |
} |
} |
if (($type ne 'Placement') && (&showcredits($cdom) && exists($env{'form.defaultcredits'}))) { |
if ($type ne 'Placement') { |
$newattr{'defaultcredits'}=$env{'form.defaultcredits'}; |
if (&showcredits($cdom) && exists($env{'form.defaultcredits'})) { |
$newattr{'defaultcredits'} =~ s/[^\d\.]//g; |
$newattr{'defaultcredits'}=$env{'form.defaultcredits'}; |
|
$newattr{'defaultcredits'} =~ s/[^\d\.]//g; |
|
} |
|
if (grep(/^nopasswdchg$/,@modifiable_params)) { |
|
if ($env{'form.nopasswdchg'}) { |
|
$newattr{'nopasswdchg'} = 1; |
|
unless ($currattr{'nopasswdchg'}) { |
|
$changed{'passwd'} = 1; |
|
} |
|
} elsif ($currattr{'nopasswdchg'}) { |
|
$changed{'passwd'} = 1; |
|
} |
|
} |
} |
} |
} |
} |
|
|
Line 1312 sub modify_course {
|
Line 1491 sub modify_course {
|
} |
} |
} |
} |
|
|
if ($changed{'owner'} || $changed{'code'}) { |
if ($changed{'owner'} || $changed{'code'} || $changed{'passwd'}) { |
my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum, |
my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum, |
undef,undef,'.'); |
undef,undef,'.'); |
if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') { |
if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') { |
Line 1322 sub modify_course {
|
Line 1501 sub modify_course {
|
if ($changed{'owner'}) { |
if ($changed{'owner'}) { |
$crsinfo{$env{'form.pickedcourse'}}{'owner'} = $env{'form.courseowner'}; |
$crsinfo{$env{'form.pickedcourse'}}{'owner'} = $env{'form.courseowner'}; |
} |
} |
|
if ($changed{'passwd'}) { |
|
if ($env{'form.nopasswdchg'}) { |
|
$crsinfo{$env{'form.pickedcourse'}}{'nopasswdchg'} = 1; |
|
} else { |
|
delete($crsinfo{'nopasswdchg'}); |
|
} |
|
} |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime'); |
my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime'); |
if ($putres eq 'ok') { |
if (($putres eq 'ok') && (($changed{'owner'} || $changed{'code'}))) { |
&update_coowners($cdom,$cnum,$chome,\%settings,\%newattr); |
&update_coowners($cdom,$cnum,$chome,\%settings,\%newattr); |
|
if ($changed{'code'}) { |
|
&Apache::lonnet::devalidate_cache_new('instcats',$cdom); |
|
# Update cache of self-cataloging courses on institution's server(s). |
|
if (&Apache::lonnet::shared_institution($cdom)) { |
|
unless ($registered_cleanup) { |
|
my $handlers = $r->get_handlers('PerlCleanupHandler'); |
|
$r->set_handlers('PerlCleanupHandler' => [\&devalidate_remote_instcats,@{$handlers}]); |
|
$registered_cleanup=1; |
|
$modified_dom = $cdom; |
|
} |
|
} |
|
} |
} |
} |
} |
} |
} |
} |
Line 1371 sub modify_course {
|
Line 1569 sub modify_course {
|
$shown = &mt('None'); |
$shown = &mt('None'); |
} elsif (($attr eq 'mysqltables') && ($shown eq '')) { |
} elsif (($attr eq 'mysqltables') && ($shown eq '')) { |
$shown = &mt('domain default'); |
$shown = &mt('domain default'); |
|
} elsif ($attr eq 'nopasswdchg') { |
|
if ($shown) { |
|
$shown = &mt('Yes'); |
|
} else { |
|
$shown = &mt('No'); |
|
} |
} |
} |
$chgresponse .= '<li>'.&mt('[_1] now set to: [_2]',$longtype{$attr},$shown).'</li>'; |
$chgresponse .= '<li>'.&mt('[_1] now set to: [_2]',$longtype{$attr},$shown).'</li>'; |
} else { |
} else { |
Line 1383 sub modify_course {
|
Line 1587 sub modify_course {
|
$shown = &mt('None'); |
$shown = &mt('None'); |
} elsif (($attr eq 'mysqltables') && ($shown eq '')) { |
} elsif (($attr eq 'mysqltables') && ($shown eq '')) { |
$shown = &mt('domain default'); |
$shown = &mt('domain default'); |
|
} elsif ($attr eq 'nopasswdchg') { |
|
if ($shown) { |
|
$shown = &mt('Yes'); |
|
} else { |
|
$shown = &mt('No'); |
|
} |
} |
} |
$nochgresponse .= '<li>'.&mt('[_1] still set to: [_2]',$longtype{$attr},$shown).'</li>'; |
$nochgresponse .= '<li>'.&mt('[_1] still set to: [_2]',$longtype{$attr},$shown).'</li>'; |
} |
} |
Line 2068 function changePage(formname,newphase) {
|
Line 2278 function changePage(formname,newphase) {
|
if ($phase eq 'setparms') { |
if ($phase eq 'setparms') { |
$js .= $javascript_validations; |
$js .= $javascript_validations; |
} elsif ($phase eq 'courselist') { |
} elsif ($phase eq 'courselist') { |
$js .= qq| |
$js .= <<"ENDJS"; |
|
|
function gochoose(cname,cdom,cdesc) { |
|
document.courselist.pickedcourse.value = cdom+'_'+cname; |
|
document.courselist.submit(); |
|
} |
|
|
|
function hide_searching() { |
function hide_searching() { |
if (document.getElementById('searching')) { |
if (document.getElementById('searching')) { |
document.getElementById('searching').style.display = 'none'; |
document.getElementById('searching').style.display = 'none'; |
Line 2082 function hide_searching() {
|
Line 2286 function hide_searching() {
|
return; |
return; |
} |
} |
|
|
|; |
ENDJS |
} elsif ($phase eq 'setquota') { |
} elsif ($phase eq 'setquota') { |
my $invalid = &mt('The quota you entered contained invalid characters.'); |
my $invalid = &mt('The quota you entered contained invalid characters.'); |
my $alert = &mt('You must enter a number'); |
my $alert = &mt('You must enter a number'); |
Line 2305 sub course_settings_descrip {
|
Line 2509 sub course_settings_descrip {
|
'selfenrollmgrdc' => "Course-specific self-enrollment configuration by Domain Coordinator", |
'selfenrollmgrdc' => "Course-specific self-enrollment configuration by Domain Coordinator", |
'selfenrollmgrcc' => "Course-specific self-enrollment configuration by Course personnel", |
'selfenrollmgrcc' => "Course-specific self-enrollment configuration by Course personnel", |
'mysqltables' => '"Temporary" student performance tables lifetime (seconds)', |
'mysqltables' => '"Temporary" student performance tables lifetime (seconds)', |
|
'nopasswdchg' => 'Disable changing password for users with student role by course owner', |
); |
); |
} |
} |
return %longtype; |
return %longtype; |
Line 2317 sub hidden_form_elements {
|
Line 2522 sub hidden_form_elements {
|
'locarg','krbarg','krbver','counter','hidefromcat','usecategory', |
'locarg','krbarg','krbver','counter','hidefromcat','usecategory', |
'threshold','postsubmit','postsubtimeout','defaultcredits','uploadquota', |
'threshold','postsubmit','postsubtimeout','defaultcredits','uploadquota', |
'selfenrollmgrdc','selfenrollmgrcc','action','state','currsec_st', |
'selfenrollmgrdc','selfenrollmgrcc','action','state','currsec_st', |
'sections','newsec','mysqltables'],['^selfenrollmgr_','^selfenroll_'])."\n". |
'sections','newsec','mysqltables','nopasswdchg'], |
|
['^selfenrollmgr_','^selfenroll_'])."\n". |
'<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" />'; |
'<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" />'; |
return $hidden_elements; |
return $hidden_elements; |
} |
} |
Line 2333 sub showcredits {
|
Line 2539 sub showcredits {
|
sub get_permission { |
sub get_permission { |
my ($dom) = @_; |
my ($dom) = @_; |
my ($allowed,%permission); |
my ($allowed,%permission); |
|
my %passwdconf = &Apache::lonnet::get_passwdconf($dom); |
if (&Apache::lonnet::allowed('ccc',$dom)) { |
if (&Apache::lonnet::allowed('ccc',$dom)) { |
$allowed = 1; |
$allowed = 1; |
%permission = ( |
%permission = ( |
Line 2348 sub get_permission {
|
Line 2555 sub get_permission {
|
catsettings => 'edit', |
catsettings => 'edit', |
processcat => 'edit', |
processcat => 'edit', |
selfenroll => 'edit', |
selfenroll => 'edit', |
|
adhocrole => 'coord', |
); |
); |
|
if ($passwdconf{'crsownerchg'}) { |
|
$permission{passwdchg} = 'edit'; |
|
} |
} elsif (&Apache::lonnet::allowed('rar',$dom)) { |
} elsif (&Apache::lonnet::allowed('rar',$dom)) { |
$allowed = 1; |
$allowed = 1; |
%permission = ( |
%permission = ( |
Line 2359 sub get_permission {
|
Line 2570 sub get_permission {
|
setparms => 'view', |
setparms => 'view', |
catsettings => 'view', |
catsettings => 'view', |
selfenroll => 'view', |
selfenroll => 'view', |
|
adhocrole => 'custom', |
); |
); |
|
if ($passwdconf{'crsownerchg'}) { |
|
$permission{passwdchg} = 'view'; |
|
} |
} |
} |
return ($allowed,\%permission); |
return ($allowed,\%permission); |
} |
} |
|
|
|
sub devalidate_remote_instcats { |
|
if ($modified_dom ne '') { |
|
my %servers = &Apache::lonnet::internet_dom_servers($modified_dom); |
|
my %thismachine; |
|
map { $thismachine{$_} = 1; } &Apache::lonnet::current_machine_ids(); |
|
if (keys(%servers)) { |
|
foreach my $server (keys(%servers)) { |
|
next if ($thismachine{$server}); |
|
&Apache::lonnet::remote_devalidate_cache($server,['instcats:'.$modified_dom]); |
|
} |
|
} |
|
$modified_dom = ''; |
|
} |
|
return; |
|
} |
|
|
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
if ($r->header_only) { |
if ($r->header_only) { |
Line 2372 sub handler {
|
Line 2603 sub handler {
|
return OK; |
return OK; |
} |
} |
|
|
|
$registered_cleanup=0; |
|
$modified_dom = ''; |
|
|
my $dom = $env{'request.role.domain'}; |
my $dom = $env{'request.role.domain'}; |
my $domdesc = &Apache::lonnet::domain($dom,'description'); |
my $domdesc = &Apache::lonnet::domain($dom,'description'); |
my ($allowed,$permission) = &get_permission($dom); |
my ($allowed,$permission) = &get_permission($dom); |
Line 2413 sub handler {
|
Line 2647 sub handler {
|
{href=>"javascript:changePage(document.$phase,'courselist')", |
{href=>"javascript:changePage(document.$phase,'courselist')", |
text=>$choose_text}); |
text=>$choose_text}); |
if ($phase eq 'courselist') { |
if ($phase eq 'courselist') { |
&print_course_selection_page($r,$dom,$domdesc); |
&print_course_selection_page($r,$dom,$domdesc,$permission); |
} else { |
} else { |
my ($checked,$cdesc,$coursehash) = &check_course($dom,$domdesc); |
my ($checked,$cdesc,$coursehash) = &check_course($dom,$domdesc); |
if ($checked eq 'ok') { |
if ($checked eq 'ok') { |
Line 2436 sub handler {
|
Line 2670 sub handler {
|
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'adhocrole')", |
({href=>"javascript:changePage(document.$phase,'adhocrole')", |
text=>$enter_text}); |
text=>$enter_text}); |
&print_adhocrole_selected($r,$type); |
&print_adhocrole_selected($r,$type,$permission); |
} else { |
} else { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'menu')", |
({href=>"javascript:changePage(document.$phase,'menu')", |
Line 2454 sub handler {
|
Line 2688 sub handler {
|
} |
} |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'$phase')", |
({href=>"javascript:changePage(document.$phase,'$phase')", |
text=>"$linktext"}); |
text=>$linktext}); |
&print_setquota($r,$cdom,$cnum,$cdesc,$type,$readonly); |
&print_setquota($r,$cdom,$cnum,$cdesc,$type,$readonly); |
} elsif (($phase eq 'processquota') && ($permission->{'processquota'})) { |
} elsif (($phase eq 'processquota') && ($permission->{'processquota'})) { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
Line 2485 sub handler {
|
Line 2719 sub handler {
|
} |
} |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'$phase')", |
({href=>"javascript:changePage(document.$phase,'$phase')", |
text=>"Configure submit button behavior post-submission"}); |
text=>$linktext}); |
&print_postsubmit_config($r,$cdom,$cnum,$cdesc,$type,$readonly); |
&print_postsubmit_config($r,$cdom,$cnum,$cdesc,$type,$readonly); |
} elsif (($phase eq 'processpostsubmit') && ($permission->{'processpostsubmit'})) { |
} elsif (($phase eq 'processpostsubmit') && ($permission->{'processpostsubmit'})) { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
Line 2505 sub handler {
|
Line 2739 sub handler {
|
} |
} |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'$phase')", |
({href=>"javascript:changePage(document.$phase,'$phase')", |
text=>"$linktext"}); |
text=>$linktext}); |
&print_course_modification_page($r,$cdom,$cnum,$cdesc,$type,$readonly); |
&print_course_modification_page($r,$cdom,$cnum,$cdesc,$type,$readonly); |
} elsif (($phase eq 'processparms') && ($permission->{'processparms'})) { |
} elsif (($phase eq 'processparms') && ($permission->{'processparms'})) { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |