version 1.422, 2023/04/11 20:35:19
|
version 1.427, 2023/06/20 14:03:52
|
Line 105 $datatable - HTML containing form eleme
|
Line 105 $datatable - HTML containing form eleme
|
In the case of course requests, radio buttons are displayed for each institutional |
In the case of course requests, radio buttons are displayed for each institutional |
affiliate type (and also default, and _LC_adv) for each of the course types |
affiliate type (and also default, and _LC_adv) for each of the course types |
(official, unofficial, community, textbook, placement, and lti). |
(official, unofficial, community, textbook, placement, and lti). |
In each case the radio buttons allow the selection of one of four values: |
In each case the radio buttons allow the selection of one of four values: |
|
|
0, approval, validate, autolimit=N (where N is blank, or a positive integer). |
0, approval, validate, autolimit=N (where N is blank, or a positive integer). |
which have the following effects: |
which have the following effects: |
Line 178 use DateTime::TimeZone;
|
Line 178 use DateTime::TimeZone;
|
use DateTime::Locale; |
use DateTime::Locale; |
use Time::HiRes qw( sleep ); |
use Time::HiRes qw( sleep ); |
use Net::CIDR; |
use Net::CIDR; |
|
use Crypt::CBC; |
|
|
my $registered_cleanup; |
my $registered_cleanup; |
my $modified_urls; |
my $modified_urls; |
Line 225 sub handler {
|
Line 226 sub handler {
|
'privacy','passwords','proctoring','wafproxy','ipaccess'],$dom); |
'privacy','passwords','proctoring','wafproxy','ipaccess'],$dom); |
my %encconfig = |
my %encconfig = |
&Apache::lonnet::get_dom('encconfig',['ltitools','lti','proctoring','linkprot'],$dom,undef,1); |
&Apache::lonnet::get_dom('encconfig',['ltitools','lti','proctoring','linkprot'],$dom,undef,1); |
|
my ($checked_is_home,$is_home); |
if (ref($domconfig{'ltitools'}) eq 'HASH') { |
if (ref($domconfig{'ltitools'}) eq 'HASH') { |
if (ref($encconfig{'ltitools'}) eq 'HASH') { |
if (ref($encconfig{'ltitools'}) eq 'HASH') { |
|
my $home = &Apache::lonnet::domain($dom,'primary'); |
|
unless (($home eq 'no_host') || ($home eq '')) { |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
if (grep(/^\Q$home\E$/,@ids)) { |
|
$is_home = 1; |
|
} |
|
} |
|
$checked_is_home = 1; |
foreach my $id (keys(%{$domconfig{'ltitools'}})) { |
foreach my $id (keys(%{$domconfig{'ltitools'}})) { |
if ((ref($domconfig{'ltitools'}{$id}) eq 'HASH') && |
if ((ref($domconfig{'ltitools'}{$id}) eq 'HASH') && |
(ref($encconfig{'ltitools'}{$id}) eq 'HASH')) { |
(ref($encconfig{'ltitools'}{$id}) eq 'HASH')) { |
$domconfig{'ltitools'}{$id}{'key'} = $encconfig{'ltitools'}{$id}{'key'}; |
$domconfig{'ltitools'}{$id}{'key'} = $encconfig{'ltitools'}{$id}{'key'}; |
|
if (($is_home) && ($phase eq 'process')) { |
|
$domconfig{'ltitools'}{$id}{'secret'} = $encconfig{'ltitools'}{$id}{'secret'}; |
|
} |
} |
} |
} |
} |
} |
} |
} |
} |
if (ref($domconfig{'lti'}) eq 'HASH') { |
if (ref($domconfig{'lti'}) eq 'HASH') { |
if (ref($encconfig{'lti'}) eq 'HASH') { |
if (ref($encconfig{'lti'}) eq 'HASH') { |
|
unless ($checked_is_home) { |
|
my $home = &Apache::lonnet::domain($dom,'primary'); |
|
unless (($home eq 'no_host') || ($home eq '')) { |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
if (grep(/^\Q$home\E$/,@ids)) { |
|
$is_home = 1; |
|
} |
|
} |
|
$checked_is_home = 1; |
|
} |
foreach my $id (keys(%{$domconfig{'lti'}})) { |
foreach my $id (keys(%{$domconfig{'lti'}})) { |
if ((ref($domconfig{'lti'}{$id}) eq 'HASH') && |
if ((ref($domconfig{'lti'}{$id}) eq 'HASH') && |
(ref($encconfig{'lti'}{$id}) eq 'HASH')) { |
(ref($encconfig{'lti'}{$id}) eq 'HASH')) { |
foreach my $item ('key','secret') { |
$domconfig{'lti'}{$id}{'key'} = $encconfig{'lti'}{$id}{'key'}; |
$domconfig{'lti'}{$id}{$item} = $encconfig{'lti'}{$id}{$item}; |
if (($is_home) && ($phase eq 'process')) { |
|
$domconfig{'lti'}{$id}{'secret'} = $encconfig{'lti'}{$id}{'secret'}; |
} |
} |
} |
} |
} |
} |
Line 544 sub handler {
|
Line 568 sub handler {
|
modify => \&modify_selfenrollment, |
modify => \&modify_selfenrollment, |
}, |
}, |
'privacy' => |
'privacy' => |
{text => 'Availability of User Information', |
{text => 'Role assignments and user privacy', |
help => 'Domain_Configuration_User_Privacy', |
help => 'Domain_Configuration_User_Privacy', |
header => [{col1 => 'Role assigned in different domain', |
header => [{col1 => 'Role assigned in different domain', |
col2 => 'Approval options'}, |
col2 => 'Approval options'}, |
Line 580 sub handler {
|
Line 604 sub handler {
|
print => \&print_loadbalancing, |
print => \&print_loadbalancing, |
modify => \&modify_loadbalancing, |
modify => \&modify_loadbalancing, |
}, |
}, |
'ltitools' => |
'ltitools' => |
{text => 'External Tools (LTI)', |
{text => 'External Tools (LTI)', |
help => 'Domain_Configuration_LTI_Tools', |
help => 'Domain_Configuration_LTI_Tools', |
header => [{col1 => 'Encryption of shared secrets', |
header => [{col1 => 'Encryption of shared secrets', |
Line 638 sub handler {
|
Line 662 sub handler {
|
print => \&print_trust, |
print => \&print_trust, |
modify => \&modify_trust, |
modify => \&modify_trust, |
}, |
}, |
'lti' => |
'lti' => |
{text => 'LTI Link Protection and LTI Consumers', |
{text => 'LTI Link Protection and LTI Consumers', |
help => 'Domain_Configuration_LTI_Provider', |
help => 'Domain_Configuration_LTI_Provider', |
header => [{col1 => 'Encryption of shared secrets', |
header => [{col1 => 'Encryption of shared secrets', |
col2 => 'Settings'}, |
col2 => 'Settings'}, |
{col1 => 'Rules for shared secrets', |
{col1 => 'Rules for shared secrets', |
col2 => 'Settings'}, |
col2 => 'Settings'}, |
{col1 => 'Link Protectors', |
{col1 => 'Link Protectors', |
col2 => 'Settings'}, |
col2 => 'Settings'}, |
Line 652 sub handler {
|
Line 676 sub handler {
|
print => \&print_lti, |
print => \&print_lti, |
modify => \&modify_lti, |
modify => \&modify_lti, |
}, |
}, |
'ipaccess' => |
'ipaccess' => |
{text => 'IP-based access control', |
{text => 'IP-based access control', |
help => 'Domain_Configuration_IP_Access', |
help => 'Domain_Configuration_IP_Access', |
header => [{col1 => 'Setting', |
header => [{col1 => 'Setting', |
Line 858 sub process_changes {
|
Line 882 sub process_changes {
|
} elsif ($action eq 'lti') { |
} elsif ($action eq 'lti') { |
$output = &modify_lti($r,$dom,$action,$lastactref,%domconfig); |
$output = &modify_lti($r,$dom,$action,$lastactref,%domconfig); |
} elsif ($action eq 'privacy') { |
} elsif ($action eq 'privacy') { |
$output = &modify_privacy($dom,%domconfig); |
$output = &modify_privacy($dom,$lastactref,%domconfig); |
} elsif ($action eq 'passwords') { |
} elsif ($action eq 'passwords') { |
$output = &modify_passwords($r,$dom,$confname,$lastactref,%domconfig); |
$output = &modify_passwords($r,$dom,$confname,$lastactref,%domconfig); |
} elsif ($action eq 'wafproxy') { |
} elsif ($action eq 'wafproxy') { |
Line 893 sub print_config_box {
|
Line 917 sub print_config_box {
|
&Apache::lonuserutils::custom_role_privs(\%privs,\%full,\%levels,\%levelscurrent); |
&Apache::lonuserutils::custom_role_privs(\%privs,\%full,\%levels,\%levelscurrent); |
my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); |
my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); |
$output = |
$output = |
&Apache::lonuserutils::custom_roledefs_js($context,$crstype,$formname,\%full, |
&Apache::lonuserutils::custom_roledefs_js($context,$crstype,$formname,\%full, |
\@templateroles); |
\@templateroles); |
} elsif ($action eq 'ltitools') { |
} elsif ($action eq 'ltitools') { |
$output .= &Apache::lonconfigsettings::ltitools_javascript($settings); |
$output .= &Apache::lonconfigsettings::ltitools_javascript($settings); |
Line 3529 sub lti_toggle_js {
|
Line 3553 sub lti_toggle_js {
|
my %servers = &Apache::lonnet::get_servers($dom,'library'); |
my %servers = &Apache::lonnet::get_servers($dom,'library'); |
my $primary = &Apache::lonnet::domain($dom,'primary'); |
my $primary = &Apache::lonnet::domain($dom,'primary'); |
my $course_servers = "'".join("','",keys(%servers))."'"; |
my $course_servers = "'".join("','",keys(%servers))."'"; |
|
|
return <<"ENDSCRIPT"; |
return <<"ENDSCRIPT"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
Line 3628 function toggleLTI(form,setting,item) {
|
Line 3651 function toggleLTI(form,setting,item) {
|
break; |
break; |
} |
} |
} |
} |
} |
} |
} |
} |
if (!setvis) { |
if (!setvis) { |
if (document.getElementById(divid)) { |
if (document.getElementById(divid)) { |
Line 3705 function toggleLTI(form,setting,item) {
|
Line 3728 function toggleLTI(form,setting,item) {
|
var divid = 'lti_menufield_'+item; |
var divid = 'lti_menufield_'+item; |
var setvis = ''; |
var setvis = ''; |
for (var i=0; i<menus.length; i++) { |
for (var i=0; i<menus.length; i++) { |
var radioname = menus[i]; |
var radioname = menus[i]; |
var num = form.elements[radioname].length; |
var num = form.elements[radioname].length; |
if (num) { |
if (num) { |
for (var j=0; j<num; j++) { |
for (var j=0; j<num; j++) { |
Line 3813 sub saml_javascript {
|
Line 3836 sub saml_javascript {
|
return <<"ENDSCRIPT"; |
return <<"ENDSCRIPT"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
function toggleSamlOptions(form,hostid) { |
function toggleSamlOptions(form,hostid) { |
var radioname = 'saml_'+hostid; |
var radioname = 'saml_'+hostid; |
var tablecellon = 'samloptionson_'+hostid; |
var tablecellon = 'samloptionson_'+hostid; |
var tablecelloff = 'samloptionsoff_'+hostid; |
var tablecelloff = 'samloptionsoff_'+hostid; |
var num = form.elements[radioname].length; |
var num = form.elements[radioname].length; |
if (num) { |
if (num) { |
var setvis = ''; |
var setvis = ''; |
for (var i=0; i<num; i++) { |
for (var i=0; i<num; i++) { |
if (form.elements[radioname][i].checked) { |
if (form.elements[radioname][i].checked) { |
if (form.elements[radioname][i].value == '1') { |
if (form.elements[radioname][i].value == '1') { |
if (document.getElementById(tablecellon)) { |
if (document.getElementById(tablecellon)) { |
document.getElementById(tablecellon).style.display=''; |
document.getElementById(tablecellon).style.display=''; |
} |
} |
Line 4590 sub print_contacts {
|
Line 4613 sub print_contacts {
|
map {$excluded{$_} = 1; } @{$lonstatus{'excluded'}}; |
map {$excluded{$_} = 1; } @{$lonstatus{'excluded'}}; |
} |
} |
} |
} |
foreach my $item ('errorthreshold','errorsysmail') { |
foreach my $item ('errorthreshold','errorsysmail') { |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td class="LC_left_item"><span class="LC_nobreak">'. |
'<td class="LC_left_item"><span class="LC_nobreak">'. |
Line 4672 sub print_contacts {
|
Line 4695 sub print_contacts {
|
$includeloc{'override_'.$key} = ''; |
$includeloc{'override_'.$key} = ''; |
$includestr{'override_'.$key} = ''; |
$includestr{'override_'.$key} = ''; |
if ($settings->{'overrides'}{$key}{'include'} ne '') { |
if ($settings->{'overrides'}{$key}{'include'} ne '') { |
($includeloc{'override_'.$key},$includestr{'override_'.$key}) = |
($includeloc{'override_'.$key},$includestr{'override_'.$key}) = |
split(/:/,$settings->{'overrides'}{$key}{'include'},2); |
split(/:/,$settings->{'overrides'}{$key}{'include'},2); |
$includestr{'override_'.$key} = &unescape($includestr{'override_'.$key}); |
$includestr{'override_'.$key} = &unescape($includestr{'override_'.$key}); |
} |
} |
Line 4684 sub print_contacts {
|
Line 4707 sub print_contacts {
|
my $optionsprefix = 'LC_options_helpdesk_'; |
my $optionsprefix = 'LC_options_helpdesk_'; |
|
|
my $onclicktypes = "toggleHelpdeskRow(this.form,'overrides','$customclass','$optionsprefix');"; |
my $onclicktypes = "toggleHelpdeskRow(this.form,'overrides','$customclass','$optionsprefix');"; |
|
|
$datatable .= &insttypes_row($settings,$types,$usertypes,$dom, |
$datatable .= &insttypes_row($settings,$types,$usertypes,$dom, |
$numinrow,$othertitle,'overrides', |
$numinrow,$othertitle,'overrides', |
\$rownum,$onclicktypes,$customclass); |
\$rownum,$onclicktypes,$customclass); |
Line 4751 sub overridden_helpdesk {
|
Line 4773 sub overridden_helpdesk {
|
} |
} |
my $title; |
my $title; |
if (ref($short_titles) eq 'HASH') { |
if (ref($short_titles) eq 'HASH') { |
$title = $short_titles->{$item}; |
$title = $short_titles->{$item}; |
} |
} |
$output .= '<label>'. |
$output .= '<label>'. |
'<input type="checkbox" name="override_'.$type.'"'.$check. |
'<input type="checkbox" name="override_'.$type.'"'.$check. |
Line 4830 function toggleHelpdeskRow(form,checkbox
|
Line 4852 function toggleHelpdeskRow(form,checkbox
|
return; |
return; |
} |
} |
|
|
|
|
// ]]> |
// ]]> |
</script> |
</script> |
|
|
Line 5341 sub ltitools_names {
|
Line 5362 sub ltitools_names {
|
'key' => 'Key', |
'key' => 'Key', |
'lifetime' => 'Nonce lifetime (s)', |
'lifetime' => 'Nonce lifetime (s)', |
'secret' => 'Secret', |
'secret' => 'Secret', |
'icon' => 'Icon', |
'icon' => 'Icon', |
'user' => 'User', |
'user' => 'User', |
'fullname' => 'Full Name', |
'fullname' => 'Full Name', |
'firstname' => 'First Name', |
'firstname' => 'First Name', |
Line 5359 sub ltitools_names {
|
Line 5380 sub ltitools_names {
|
'roster' => 'Tool can retrieve roster:', |
'roster' => 'Tool can retrieve roster:', |
'crstarget' => 'Display target', |
'crstarget' => 'Display target', |
'crslabel' => 'Course label', |
'crslabel' => 'Course label', |
'crstitle' => 'Course title', |
'crstitle' => 'Course title', |
'crslinktext' => 'Link Text', |
'crslinktext' => 'Link Text', |
'crsexplanation' => 'Explanation', |
'crsexplanation' => 'Explanation', |
'crsappend' => 'Provider URL', |
'crsappend' => 'Provider URL', |
Line 6176 sub print_lti {
|
Line 6197 sub print_lti {
|
} elsif ($position eq 'lower') { |
} elsif ($position eq 'lower') { |
$datatable .= &Apache::courseprefs::print_linkprotection($dom,'',$settings,$rowtotal,'','','domain'); |
$datatable .= &Apache::courseprefs::print_linkprotection($dom,'',$settings,$rowtotal,'','','domain'); |
} else { |
} else { |
|
my ($switchserver,$switchmessage); |
|
$switchserver = &check_switchserver($dom); |
|
$switchmessage = &mt("submit from domain's primary library server: [_1].",$switchserver); |
my $maxnum = 0; |
my $maxnum = 0; |
my %ordered; |
my %ordered; |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
Line 6196 sub print_lti {
|
Line 6220 sub print_lti {
|
for (my $i=0; $i<@items; $i++) { |
for (my $i=0; $i<@items; $i++) { |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
my $item = $ordered{$items[$i]}; |
my $item = $ordered{$items[$i]}; |
my ($key,$secret,$lifetime,$consumer,$requser,$crsinc,$current); |
my ($key,$secret,$usable,$lifetime,$consumer,$requser,$crsinc,$current); |
if (ref($settings->{$item}) eq 'HASH') { |
if (ref($settings->{$item}) eq 'HASH') { |
$key = $settings->{$item}->{'key'}; |
$key = $settings->{$item}->{'key'}; |
$secret = $settings->{$item}->{'secret'}; |
$usable = $settings->{$item}->{'usable'}; |
$lifetime = $settings->{$item}->{'lifetime'}; |
$lifetime = $settings->{$item}->{'lifetime'}; |
$consumer = $settings->{$item}->{'consumer'}; |
$consumer = $settings->{$item}->{'consumer'}; |
$requser = $settings->{$item}->{'requser'}; |
$requser = $settings->{$item}->{'requser'}; |
Line 6247 sub print_lti {
|
Line 6271 sub print_lti {
|
'<option value="LTI-1p0" selected="selected">1.1</option></select></span> '. |
'<option value="LTI-1p0" selected="selected">1.1</option></select></span> '. |
(' 'x2). |
(' 'x2). |
'<span class="LC_nobreak">'.$lt{'lifetime'}.':<input type="text" name="lti_lifetime_'.$i.'"'. |
'<span class="LC_nobreak">'.$lt{'lifetime'}.':<input type="text" name="lti_lifetime_'.$i.'"'. |
'value="'.$lifetime.'" size="3" /></span>'. |
'value="'.$lifetime.'" size="3" /></span><br /><br />'; |
(' 'x2). |
if ($key ne '') { |
|
$datatable .= '<span class="LC_nobreak">'.$lt{'key'}; |
|
if ($switchserver) { |
|
$datatable .= ': ['.&mt('[_1] to view/edit',$switchserver).']'; |
|
} else { |
|
$datatable .= ':<input type="text" size="25" name="lti_key_'.$i.'" value="'.$key.'" autocomplete="off" />'; |
|
} |
|
$datatable .= '</span> '.(' 'x2); |
|
} elsif (!$switchserver) { |
|
$datatable .= '<span class="LC_nobreak">'.$lt{'key'}.':'. |
|
'<input type="text" size="25" name="lti_key_'.$i.'" value="'.$key.'" autocomplete="off" />'. |
|
'</span> '.(' 'x2); |
|
} |
|
if ($switchserver) { |
|
if ($usable ne '') { |
|
$datatable .= '<div id="lti_divcurrsecret_'.$i.'" style="display:inline-block" /><span class="LC_nobreak">'. |
|
$lt{'secret'}.': ['.&mt('not shown').'] '.(' 'x2).'</span></div>'. |
|
'<span class="LC_nobreak">'.&mt('Change secret?'). |
|
'<label><input type="radio" value="0" name="lti_changesecret_'.$i.'" onclick="javascript:toggleChgSecret(this.form,'."'$i','secret','lti'".');" checked="checked" />'.&mt('No').'</label>'. |
|
(' 'x2). |
|
'<label><input type="radio" value="1" name="lti_changesecret_'.$i.'" onclick="javascript:toggleChgSecret(this.form,'."'$i','secret','lti'".');" />'.&mt('Yes').'</label>'.(' 'x2). |
|
'</span><div id="lti_divchgsecret_'.$i.'" style="display:none" />'. |
|
'<span class="LC_nobreak"> - '.$switchmessage.'</span>'. |
|
'</div>'; |
|
} elsif ($key eq '') { |
|
$datatable .= '<span class="LC_nobreak">'.&mt('Key and Secret are required').' - '.$switchmessage.'</span>'."\n"; |
|
} else { |
|
$datatable .= '<span class="LC_nobreak">'.&mt('Secret required').' - '.$switchmessage.'</span>'."\n"; |
|
} |
|
} else { |
|
if ($usable ne '') { |
|
$datatable .= '<div id="lti_divcurrsecret_'.$i.'" style="display:inline-block" /><span class="LC_nobreak">'. |
|
$lt{'secret'}.': ['.&mt('not shown').'] '.(' 'x2).'</span></div>'. |
|
'<span class="LC_nobreak">'.&mt('Change?'). |
|
'<label><input type="radio" value="0" name="lti_changesecret_'.$i.'" onclick="javascript:toggleChgSecret(this.form,'."'$i','secret','lti'".');" checked="checked" />'.&mt('No').'</label>'. |
|
(' 'x2). |
|
'<label><input type="radio" value="1" name="lti_changesecret_'.$i.'" onclick="javascript:toggleChgSecret(this.form,'."'$i','secret','lti'".');" />'.&mt('Yes'). |
|
'</label> </span><div id="lti_divchgsecret_'.$i.'" style="display:none" />'. |
|
'<span class="LC_nobreak">'.&mt('New Secret').':'. |
|
'<input type="password" size="20" name="lti_secret_'.$i.'" value="" autocomplete="new-password" />'. |
|
'<label><input type="checkbox" name="lti_visible_'.$i.'" id="lti_visible_'.$i.'" onclick="if (this.checked) { this.form.lti_secret_'.$i.'.type='."'text'".' } else { this.form.lti_secret_'.$i.'.type='."'password'".' }" />'.&mt('Visible input').'</label></span></div>'; |
|
} else { |
|
$datatable .= |
|
'<span class="LC_nobreak">'.$lt{'secret'}.':'. |
|
'<input type="password" size="20" name="lti_secret_'.$i.'" value="" autocomplete="new-password" />'. |
|
'<label><input type="checkbox" name="lti_visible_'.$i.'" id="lti_visible_'.$i.'" onclick="if (this.checked) { this.form.lti_secret_'.$i.'.type='."'text'".' } else { this.form.lti_secret_'.$i.'.type='."'password'".' }" />'.&mt('Visible input').'</label>'; |
|
} |
|
} |
|
$datatable .= '<br /><br />'. |
'<span class="LC_nobreak">'.$lt{'requser'}.':'. |
'<span class="LC_nobreak">'.$lt{'requser'}.':'. |
'<label><input type="radio" name="lti_requser_'.$i.'" value="1"'.$onclickrequser.$checkedrequser{yes}.' />'.&mt('Yes').'</label> '."\n". |
'<label><input type="radio" name="lti_requser_'.$i.'" value="1"'.$onclickrequser.$checkedrequser{yes}.' />'.&mt('Yes').'</label> '."\n". |
'<label><input type="radio" name="lti_requser_'.$i.'" value="0"'.$onclickrequser.$checkedrequser{no}.' />'.&mt('No').'</label></span>'."\n". |
'<label><input type="radio" name="lti_requser_'.$i.'" value="0"'.$onclickrequser.$checkedrequser{no}.' />'.&mt('No').'</label></span>'."\n". |
Line 6257 sub print_lti {
|
Line 6329 sub print_lti {
|
'<label><input type="radio" name="lti_crsinc_'.$i.'" value="1"'.$onclickcrsinc.$checkedcrsinc{yes}.' />'.&mt('Yes').'</label> '."\n". |
'<label><input type="radio" name="lti_crsinc_'.$i.'" value="1"'.$onclickcrsinc.$checkedcrsinc{yes}.' />'.&mt('Yes').'</label> '."\n". |
'<label><input type="radio" name="lti_crsinc_'.$i.'" value="0"'.$onclickcrsinc.$checkedcrsinc{no}.' />'.&mt('No').'</label></span>'."\n". |
'<label><input type="radio" name="lti_crsinc_'.$i.'" value="0"'.$onclickcrsinc.$checkedcrsinc{no}.' />'.&mt('No').'</label></span>'."\n". |
(' 'x4). |
(' 'x4). |
'<span class="LC_nobreak">'.$lt{'key'}. |
|
':<input type="text" size="25" name="lti_key_'.$i.'" value="'.$key.'" /></span> '. |
|
(' 'x2). |
|
'<span class="LC_nobreak">'.$lt{'secret'}.':'. |
|
'<input type="password" size="20" name="lti_secret_'.$i.'" value="'.$secret.'" />'. |
|
'<label><input type="checkbox" name="visible" onclick="if (this.checked) { this.form.lti_secret_'.$i.'.type='."'text'".' } else { this.form.lti_secret_'.$i.'.type='."'password'".' }" />'.&mt('Visible input').'</label>'. |
|
'<input type="hidden" name="lti_id_'.$i.'" value="'.$item.'" /></span>'. |
'<input type="hidden" name="lti_id_'.$i.'" value="'.$item.'" /></span>'. |
'</fieldset>'.<i_options($i,$current,$itemcount,%lt).'</td></tr>'; |
'</fieldset>'.<i_options($i,$current,$itemcount,%lt).'</td></tr>'; |
$itemcount ++; |
$itemcount ++; |
Line 6291 sub print_lti {
|
Line 6357 sub print_lti {
|
'<span class="LC_nobreak">'.$lt{'version'}.':<select name="lti_version_add">'. |
'<span class="LC_nobreak">'.$lt{'version'}.':<select name="lti_version_add">'. |
'<option value="LTI-1p0" selected="selected">1.1</option></select></span> '."\n". |
'<option value="LTI-1p0" selected="selected">1.1</option></select></span> '."\n". |
(' 'x2). |
(' 'x2). |
'<span class="LC_nobreak">'.$lt{'lifetime'}.':<input type="text" size="3" name="lti_lifetime_add" value="300" /></span> '."\n". |
'<span class="LC_nobreak">'.$lt{'lifetime'}.':<input type="text" size="3" name="lti_lifetime_add" value="300" /></span><br /><br />'."\n"; |
(' 'x2). |
if ($switchserver) { |
|
$datatable .= '<span class="LC_nobreak">'.&mt('Key and Secret are required').' - '.$switchmessage.'</span>'."\n"; |
|
} else { |
|
$datatable .= '<span class="LC_nobreak">'.$lt{'key'}.':<input type="text" size="25" name="lti_key_add" value="" autocomplete="off" /></span> '."\n". |
|
(' 'x2). |
|
'<span class="LC_nobreak">'.$lt{'secret'}.':<input type="password" size="20" name="lti_secret_add" value="" autocomplete="new-password" />'. |
|
'<label><input type="checkbox" name="lti_add_visible" id="lti_add_visible" onclick="if (this.checked) { this.form.lti_secret_add.type='."'text'".' } else { this.form.lti_secret_add.type='."'password'".' }" />'.&mt('Visible input').'</label></span> '."\n"; |
|
} |
|
$datatable .= '<br /><br />'. |
'<span class="LC_nobreak">'.$lt{'requser'}.':'. |
'<span class="LC_nobreak">'.$lt{'requser'}.':'. |
'<label><input type="radio" name="lti_requser_add" value="1" onclick="toggleLTI(this.form,'."'requser','add'".');" checked="checked" />'.&mt('Yes').'</label> '."\n". |
'<label><input type="radio" name="lti_requser_add" value="1" onclick="toggleLTI(this.form,'."'requser','add'".');" checked="checked" />'.&mt('Yes').'</label> '."\n". |
'<label><input type="radio" name="lti_requser_add" value="0" onclick="toggleLTI(this.form,'."'requser','add'".');" />'.&mt('No').'</label></span>'."\n". |
'<label><input type="radio" name="lti_requser_add" value="0" onclick="toggleLTI(this.form,'."'requser','add'".');" />'.&mt('No').'</label></span>'."\n". |
Line 6300 sub print_lti {
|
Line 6374 sub print_lti {
|
'<span class="LC_nobreak">'.$lt{'crsinc'}.':'. |
'<span class="LC_nobreak">'.$lt{'crsinc'}.':'. |
'<label><input type="radio" name="lti_crsinc_add" value="1" onclick="toggleLTI(this.form,'."'crsinc','add'".');" checked="checked" />'.&mt('Yes').'</label> '."\n". |
'<label><input type="radio" name="lti_crsinc_add" value="1" onclick="toggleLTI(this.form,'."'crsinc','add'".');" checked="checked" />'.&mt('Yes').'</label> '."\n". |
'<label><input type="radio" name="lti_crsinc_add" value="0" onclick="toggleLTI(this.form,'."'crsinc','add'".');" />'.&mt('No').'</label></span>'."\n". |
'<label><input type="radio" name="lti_crsinc_add" value="0" onclick="toggleLTI(this.form,'."'crsinc','add'".');" />'.&mt('No').'</label></span>'."\n". |
(' 'x4). |
|
'<span class="LC_nobreak">'.$lt{'key'}.':<input type="text" size="25" name="lti_key_add" value="" /></span> '."\n". |
|
(' 'x2). |
|
'<span class="LC_nobreak">'.$lt{'secret'}.':<input type="password" size="20" name="lti_secret_add" value="" />'. |
|
'<label><input type="checkbox" name="visible" onclick="if (this.checked) { this.form.lti_secret_add.type='."'text'".' } else { this.form.lti_secret_add.type='."'password'".' }" />'.&mt('Visible input').'</label></span> '."\n". |
|
'</fieldset>'.<i_options('add',undef,$itemcount,%lt). |
'</fieldset>'.<i_options('add',undef,$itemcount,%lt). |
'</td>'."\n". |
'</td>'."\n". |
'</tr>'."\n"; |
'</tr>'."\n"; |
Line 6377 sub lti_options {
|
Line 6446 sub lti_options {
|
if (($current->{'mapuser'} ne '') && ($current->{'mapuser'} ne 'lis_person_sourcedid')) { |
if (($current->{'mapuser'} ne '') && ($current->{'mapuser'} ne 'lis_person_sourcedid')) { |
$checked{'mapuser'}{'sourcedid'} = ''; |
$checked{'mapuser'}{'sourcedid'} = ''; |
if ($current->{'mapuser'} eq 'lis_person_contact_email_primary') { |
if ($current->{'mapuser'} eq 'lis_person_contact_email_primary') { |
$checked{'mapuser'}{'email'} = ' checked="checked"'; |
$checked{'mapuser'}{'email'} = ' checked="checked"'; |
} else { |
} else { |
$checked{'mapuser'}{'other'} = ' checked="checked"'; |
$checked{'mapuser'}{'other'} = ' checked="checked"'; |
$userfield = $current->{'mapuser'}; |
$userfield = $current->{'mapuser'}; |
Line 6387 sub lti_options {
|
Line 6456 sub lti_options {
|
if (($current->{'mapcrs'} ne '') && ($current->{'mapcrs'} ne 'course_offering_sourcedid')) { |
if (($current->{'mapcrs'} ne '') && ($current->{'mapcrs'} ne 'course_offering_sourcedid')) { |
$checked{'mapcrs'}{'course_offering_sourcedid'} = ''; |
$checked{'mapcrs'}{'course_offering_sourcedid'} = ''; |
if ($current->{'mapcrs'} eq 'context_id') { |
if ($current->{'mapcrs'} eq 'context_id') { |
$checked{'mapcrs'}{'context_id'} = ' checked="checked"'; |
$checked{'mapcrs'}{'context_id'} = ' checked="checked"'; |
} else { |
} else { |
$checked{'mapcrs'}{'other'} = ' checked="checked"'; |
$checked{'mapcrs'}{'other'} = ' checked="checked"'; |
$cidfield = $current->{'mapcrs'}; |
$cidfield = $current->{'mapcrs'}; |
Line 6415 sub lti_options {
|
Line 6484 sub lti_options {
|
$checked{'lcauth'}{$1} = ' checked="checked"'; |
$checked{'lcauth'}{$1} = ' checked="checked"'; |
unless (($current->{'lcauth'} eq 'lti') || ($current->{'lcauth'} eq 'internal')) { |
unless (($current->{'lcauth'} eq 'lti') || ($current->{'lcauth'} eq 'internal')) { |
$lcauthparm = $current->{'lcauthparm'}; |
$lcauthparm = $current->{'lcauthparm'}; |
$lcauthparmstyle = 'display:table-row'; |
$lcauthparmstyle = 'display:table-row'; |
if ($current->{'lcauth'} eq 'localauth') { |
if ($current->{'lcauth'} eq 'localauth') { |
$lcauthparmtext = &mt('Local auth argument'); |
$lcauthparmtext = &mt('Local auth argument'); |
} else { |
} else { |
Line 6432 sub lti_options {
|
Line 6501 sub lti_options {
|
%rolemaps = %{$current->{'maproles'}}; |
%rolemaps = %{$current->{'maproles'}}; |
} |
} |
if ($current->{'section'} ne '') { |
if ($current->{'section'} ne '') { |
$checked{'crssec'}{'Y'} = ' checked="checked"'; |
$checked{'crssec'}{'Y'} = ' checked="checked"'; |
$crssecfieldsty = 'inline-block'; |
$crssecfieldsty = 'inline-block'; |
if ($current->{'section'} eq 'course_section_sourcedid') { |
if ($current->{'section'} eq 'course_section_sourcedid') { |
$checked{'crssecsrc'}{'sourcedid'} = ' checked="checked"'; |
$checked{'crssecsrc'}{'sourcedid'} = ' checked="checked"'; |
Line 6478 sub lti_options {
|
Line 6547 sub lti_options {
|
$checked{'crssec'}{'N'} = ' checked="checked"'; |
$checked{'crssec'}{'N'} = ' checked="checked"'; |
$checked{'callback'}{'N'} = ' checked="checked"'; |
$checked{'callback'}{'N'} = ' checked="checked"'; |
$checked{'topmenu'}{'N'} = ' checked="checked"'; |
$checked{'topmenu'}{'N'} = ' checked="checked"'; |
$checked{'inlinemenu'}{'Y'} = ' checked="checked"'; |
$checked{'inlinemenu'}{'Y'} = ' checked="checked"'; |
$checked{'menuitem'}{'grades'} = ' checked="checked"'; |
$checked{'menuitem'}{'grades'} = ' checked="checked"'; |
$menusty = 'inline-block'; |
$menusty = 'inline-block'; |
} |
} |
my @coursetypes = ('official','unofficial','community','textbook','placement','lti'); |
my @coursetypes = ('official','unofficial','community','textbook','placement','lti'); |
my %coursetypetitles = &Apache::lonlocal::texthash ( |
my %coursetypetitles = &Apache::lonlocal::texthash ( |
Line 6533 sub lti_options {
|
Line 6602 sub lti_options {
|
'<fieldset class="ltioption_usr_'.$num.'" style="display:'.$optionsty.'"><legend>'.&mt('Roles which may create user accounts').'</legend>'; |
'<fieldset class="ltioption_usr_'.$num.'" style="display:'.$optionsty.'"><legend>'.&mt('Roles which may create user accounts').'</legend>'; |
foreach my $ltirole (@ltiroles) { |
foreach my $ltirole (@ltiroles) { |
$output .= '<span class="LC_nobreak"><label><input type="checkbox" name="lti_makeuser_'.$num.'" value="'.$ltirole.'"'. |
$output .= '<span class="LC_nobreak"><label><input type="checkbox" name="lti_makeuser_'.$num.'" value="'.$ltirole.'"'. |
$checked{'makeuser'}{$ltirole}.' />'.$ltirole.'</label> </span> '; |
$checked{'makeuser'}{$ltirole}.' />'.$ltirole.'</label> </span> '; |
} |
} |
$output .= '</fieldset>'. |
$output .= '</fieldset>'. |
'<fieldset class="ltioption_usr_'.$num.'" style="display:'.$optionsty.'"><legend>'.&mt('New user accounts created for LTI users').'</legend>'. |
'<fieldset class="ltioption_usr_'.$num.'" style="display:'.$optionsty.'"><legend>'.&mt('New user accounts created for LTI users').'</legend>'. |
Line 6665 sub lti_options {
|
Line 6734 sub lti_options {
|
if ($extra eq 'passback') { |
if ($extra eq 'passback') { |
$pb1p1chk = ' checked="checked"'; |
$pb1p1chk = ' checked="checked"'; |
$pb1p0chk = ''; |
$pb1p0chk = ''; |
$onclickpb = ' onclick="toggleLTI(this.form,'."'passback','$num'".');"'; |
$onclickpb = ' onclick="toggleLTI(this.form,'."'passback','$num'".');"'; |
} else { |
} else { |
$onclickpb = ''; |
$onclickpb = ''; |
} |
} |
if (ref($current) eq 'HASH') { |
if (ref($current) eq 'HASH') { |
if (($current->{$extra})) { |
if (($current->{$extra})) { |
Line 6713 sub ltimenu_titles {
|
Line 6782 sub ltimenu_titles {
|
); |
); |
} |
} |
|
|
sub check_switchserver { |
|
my ($home) = @_; |
|
my $switchserver; |
|
if ($home ne '') { |
|
my $allowed; |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
|
if (!$allowed) { |
|
$switchserver='<a href="/adm/switchserver?otherserver='.$home.'&role='. |
|
&HTML::Entities::encode($env{'request.role'},'\'<>"&'). |
|
'&destinationurl=/adm/domainprefs">'.&mt('Switch Server').'</a>'; |
|
} |
|
} |
|
return $switchserver; |
|
} |
|
|
|
sub print_coursedefaults { |
sub print_coursedefaults { |
my ($position,$dom,$settings,$rowtotal) = @_; |
my ($position,$dom,$settings,$rowtotal) = @_; |
my ($css_class,$datatable,%checkedon,%checkedoff,%defaultchecked,@toggles); |
my ($css_class,$datatable,%checkedon,%checkedoff,%defaultchecked,@toggles); |
Line 7857 sub password_rules {
|
Line 7910 sub password_rules {
|
if (ref($settings->{chars}) eq 'ARRAY') { |
if (ref($settings->{chars}) eq 'ARRAY') { |
map { $chars{$_} = 1; } (@{$settings->{chars}}); |
map { $chars{$_} = 1; } (@{$settings->{chars}}); |
} |
} |
if ($prefix eq 'passwords') { |
if ($prefix eq 'passwords') { |
if ($settings->{expire}) { |
if ($settings->{expire}) { |
$expire = $settings->{expire}; |
$expire = $settings->{expire}; |
} |
} |
Line 8000 sub print_wafproxy {
|
Line 8053 sub print_wafproxy {
|
my %config = &Apache::lonnet::get_dom('configuration',['wafproxy'],$domain); |
my %config = &Apache::lonnet::get_dom('configuration',['wafproxy'],$domain); |
if (ref($config{'wafproxy'}) eq 'HASH') { |
if (ref($config{'wafproxy'}) eq 'HASH') { |
$aliases{$domain} = $config{'wafproxy'}{'alias'}; |
$aliases{$domain} = $config{'wafproxy'}{'alias'}; |
if (exists($config{'wafproxy'}{'saml'})) { |
if (exists($config{'wafproxy'}{'saml'})) { |
$saml{$domain} = $config{'wafproxy'}{'saml'}; |
$saml{$domain} = $config{'wafproxy'}{'saml'}; |
} |
} |
foreach my $item ('remoteip','ipheader','trusted','vpnint','vpnext') { |
foreach my $item ('remoteip','ipheader','trusted','vpnint','vpnext') { |
Line 8065 sub print_wafproxy {
|
Line 8118 sub print_wafproxy {
|
(' 'x2).'<span class="LC_nobreak">'. |
(' 'x2).'<span class="LC_nobreak">'. |
&mt('Alias used for SSO Auth').': <label>'. |
&mt('Alias used for SSO Auth').': <label>'. |
'<input type="radio" value="0"'.$samloff.' name="wafproxy_alias_saml_'.$server.'" />'. |
'<input type="radio" value="0"'.$samloff.' name="wafproxy_alias_saml_'.$server.'" />'. |
&mt('No').'</label> <label>'. |
&mt('No').'</label> <label>'. |
'<input type="radio" value="1"'.$samlon.' name="wafproxy_alias_saml_'.$server.'" />'. |
'<input type="radio" value="1"'.$samlon.' name="wafproxy_alias_saml_'.$server.'" />'. |
&mt('Yes').'</label></span>'. |
&mt('Yes').'</label></span>'. |
'</td>'; |
'</td>'; |
} |
} |
$aliasrows .= '</tr>'; |
$aliasrows .= '</tr>'; |
$aliasinfo{$dom_in_effect} .= $aliasrows; |
$aliasinfo{$dom_in_effect} .= $aliasrows; |
Line 8978 sub print_loadbalancing {
|
Line 9031 sub print_loadbalancing {
|
no => ' checked="checked"', |
no => ' checked="checked"', |
); |
); |
my %balcookiechecked = ( |
my %balcookiechecked = ( |
no => ' checked="checked"', |
no => ' checked="checked"', |
); |
); |
foreach my $sparetype (@sparestypes) { |
foreach my $sparetype (@sparestypes) { |
my $targettable; |
my $targettable; |
Line 9565 sub print_selfcreation {
|
Line 9618 sub print_selfcreation {
|
($datatable,$itemcount) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked, |
($datatable,$itemcount) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked, |
\%choices,$itemcount,$onclick); |
\%choices,$itemcount,$onclick); |
$$rowtotal += $itemcount; |
$$rowtotal += $itemcount; |
|
|
if (ref($usertypes) eq 'HASH') { |
if (ref($usertypes) eq 'HASH') { |
if (keys(%{$usertypes}) > 0) { |
if (keys(%{$usertypes}) > 0) { |
$datatable .= &insttypes_row($createsettings,$types,$usertypes, |
$datatable .= &insttypes_row($createsettings,$types,$usertypes, |
Line 9702 sub print_selfcreation {
|
Line 9755 sub print_selfcreation {
|
my $currstyle = 'display:none'; |
my $currstyle = 'display:none'; |
if (grep(/^\Q$status\E$/,@ordered)) { |
if (grep(/^\Q$status\E$/,@ordered)) { |
$currstyle = $rowstyle; |
$currstyle = $rowstyle; |
$hidden = 0; |
$hidden = 0; |
} |
} |
$datatable .= &noninst_users($processing,$emailverified,$emailoptions,$emaildomain, |
$datatable .= &noninst_users($processing,$emailverified,$emailoptions,$emaildomain, |
$emailrules,$emailruleorder,$settings,$status,$rowid, |
$emailrules,$emailruleorder,$settings,$status,$rowid, |
Line 9729 sub print_selfcreation {
|
Line 9782 sub print_selfcreation {
|
foreach my $status (@posstypes) { |
foreach my $status (@posstypes) { |
my $rowid = $classprefix.$status; |
my $rowid = $classprefix.$status; |
my $datarowstyle = 'display:none'; |
my $datarowstyle = 'display:none'; |
if (grep(/^\Q$status\E$/,@ordered)) { |
if (grep(/^\Q$status\E$/,@ordered)) { |
$datarowstyle = $rowstyle; |
$datarowstyle = $rowstyle; |
} |
} |
$datatable .= &modifiable_userdata_row('cancreate','emailusername_'.$status,$settings, |
$datatable .= &modifiable_userdata_row('cancreate','emailusername_'.$status,$settings, |
$numinrow,$$rowtotal,\%usertypeshash,$infofields, |
$numinrow,$$rowtotal,\%usertypeshash,$infofields, |
Line 9832 function toggleEmailOptions(form,radio,p
|
Line 9885 function toggleEmailOptions(form,radio,p
|
document.getElementById(altprefix+'_inst_'+status).style.display = 'none'; |
document.getElementById(altprefix+'_inst_'+status).style.display = 'none'; |
document.getElementById(altprefix+'_noninst_'+status).style.display = 'none'; |
document.getElementById(altprefix+'_noninst_'+status).style.display = 'none'; |
if (curr == 'custom') { |
if (curr == 'custom') { |
if (prefix) { |
if (prefix) { |
document.getElementById(prefix+'_'+status).style.display = 'inline'; |
document.getElementById(prefix+'_'+status).style.display = 'inline'; |
} |
} |
} else if (curr == 'inst') { |
} else if (curr == 'inst') { |
Line 9855 ENDSCRIPT
|
Line 9908 ENDSCRIPT
|
|
|
sub noninst_users { |
sub noninst_users { |
my ($processing,$emailverified,$emailoptions,$emaildomain,$emailrules, |
my ($processing,$emailverified,$emailoptions,$emaildomain,$emailrules, |
$emailruleorder,$settings,$type,$rowid,$typetitle,$css_class,$rowstyle,$intdom) = @_; |
$emailruleorder,$settings,$type,$rowid,$typetitle,$css_class,$rowstyle,$intdom) = @_; |
my $class = 'LC_left_item'; |
my $class = 'LC_left_item'; |
if ($css_class) { |
if ($css_class) { |
$css_class = ' class="'.$css_class.'"'; |
$css_class = ' class="'.$css_class.'"'; |
} |
} |
if ($rowid) { |
if ($rowid) { |
$rowid = ' id="'.$rowid.'"'; |
$rowid = ' id="'.$rowid.'"'; |
Line 9873 sub noninst_users {
|
Line 9926 sub noninst_users {
|
$description = &mt('Requests for: [_1] (status self-reported)',$typetitle); |
$description = &mt('Requests for: [_1] (status self-reported)',$typetitle); |
} |
} |
$output = '<tr'.$css_class.$rowid.$rowstyle.'>'. |
$output = '<tr'.$css_class.$rowid.$rowstyle.'>'. |
"<td>$description</td>\n". |
"<td>$description</td>\n". |
'<td class="'.$class.'" colspan="2">'. |
'<td class="'.$class.'" colspan="2">'. |
'<table><tr>'; |
'<table><tr>'; |
my %headers = &Apache::lonlocal::texthash( |
my %headers = &Apache::lonlocal::texthash( |
approve => 'Processing', |
approve => 'Processing', |
email => 'E-mail', |
email => 'E-mail', |
username => 'Username', |
username => 'Username', |
Line 10001 sub noninst_users {
|
Line 10054 sub noninst_users {
|
my $value; |
my $value; |
if (ref($emaildomain) eq 'HASH') { |
if (ref($emaildomain) eq 'HASH') { |
if (ref($emaildomain->{$type}) eq 'HASH') { |
if (ref($emaildomain->{$type}) eq 'HASH') { |
$value = $emaildomain->{$type}->{$option}; |
$value = $emaildomain->{$type}->{$option}; |
} |
} |
} |
} |
if ($value eq '') { |
if ($value eq '') { |
Line 10319 sub print_defaults {
|
Line 10372 sub print_defaults {
|
if ($defaults{$item.'_'.$field}) { |
if ($defaults{$item.'_'.$field}) { |
$checkedon = $checkedoff; |
$checkedon = $checkedoff; |
$checkedoff = ''; |
$checkedoff = ''; |
} |
} |
$datatable .= '<div id="'.$item.'_'.$field.'_div" style="display:'.$portalsty.'">'. |
$datatable .= '<div id="'.$item.'_'.$field.'_div" style="display:'.$portalsty.'">'. |
'<span class="LC_nobreak">'.$titles->{$field}.' '. |
'<span class="LC_nobreak">'.$titles->{$field}.' '. |
'<label><input type="radio" name="'.$item.'_'.$field.'" value="1"'.$checkedon.'/>'.&mt('Yes').'</label>'. |
'<label><input type="radio" name="'.$item.'_'.$field.'" value="1"'.$checkedon.'/>'.&mt('Yes').'</label>'. |
Line 11148 sub defaults_javascript {
|
Line 11201 sub defaults_javascript {
|
function portalExtras(caller) { |
function portalExtras(caller) { |
var x = caller.value; |
var x = caller.value; |
var y = new Array('email','web'); |
var y = new Array('email','web'); |
for (var i=0; i<y.length; i++) { |
for (var i=0; i<y.length; i++) { |
if (document.getElementById('portal_def_'+y[i]+'_div')) { |
if (document.getElementById('portal_def_'+y[i]+'_div')) { |
var z = document.getElementById('portal_def_'+y[i]+'_div'); |
var z = document.getElementById('portal_def_'+y[i]+'_div'); |
if (x.length > 0) { |
if (x.length > 0) { |
Line 11252 sub passwords_javascript {
|
Line 11305 sub passwords_javascript {
|
} |
} |
&js_escape(\%intalert); |
&js_escape(\%intalert); |
my $defmin = $Apache::lonnet::passwdmin; |
my $defmin = $Apache::lonnet::passwdmin; |
my $intauthjs; |
my $intauthjs; |
if ($prefix eq 'passwords') { $intauthjs = <<"ENDSCRIPT"; |
if ($prefix eq 'passwords') { $intauthjs = <<"ENDSCRIPT"; |
|
|
function warnIntAuth(field) { |
function warnIntAuth(field) { |
Line 11646 sub modifiable_userdata_row {
|
Line 11699 sub modifiable_userdata_row {
|
'<td class="LC_left_item" colspan="2"><table>'; |
'<td class="LC_left_item" colspan="2"><table>'; |
my $rem; |
my $rem; |
my %checks; |
my %checks; |
my %current; |
|
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
my $hashref; |
my $hashref; |
if ($context eq 'lti') { |
if ($context eq 'lti') { |
Line 11672 sub modifiable_userdata_row {
|
Line 11724 sub modifiable_userdata_row {
|
} |
} |
} |
} |
} |
} |
if (ref($hashref) eq 'HASH') { |
if (ref($hashref) eq 'HASH') { |
foreach my $field (@fields) { |
foreach my $field (@fields) { |
if ($hashref->{$field}) { |
if ($hashref->{$field}) { |
if ($role eq 'emailusername') { |
if ($role eq 'emailusername') { |
Line 11684 sub modifiable_userdata_row {
|
Line 11736 sub modifiable_userdata_row {
|
} |
} |
} |
} |
} |
} |
|
|
my $total = scalar(@fields); |
my $total = scalar(@fields); |
for (my $i=0; $i<$total; $i++) { |
for (my $i=0; $i<$total; $i++) { |
$rem = $i%($numinrow); |
$rem = $i%($numinrow); |
Line 11848 sub insttypes_row {
|
Line 11899 sub insttypes_row {
|
} else { |
} else { |
$output .= '<td class="LC_left_item">'; |
$output .= '<td class="LC_left_item">'; |
} |
} |
$output .= ' '; |
$output .= ' '; |
} else { |
} else { |
if ($rem == 0) { |
if ($rem == 0) { |
$output .= '<tr>'; |
$output .= '<tr>'; |
Line 12124 sub modify_login {
|
Line 12175 sub modify_login {
|
if ($lang eq $env{'form.loginhelpurl_add_lang'}) { |
if ($lang eq $env{'form.loginhelpurl_add_lang'}) { |
$formelem = 'loginhelpurl_add_file'; |
$formelem = 'loginhelpurl_add_file'; |
} |
} |
(my $result,$newurl{$lang}) = |
(my $result,$newurl{$lang}) = |
&Apache::lonconfigsettings::publishlogo($r,'upload',$formelem,$dom,$confname, |
&Apache::lonconfigsettings::publishlogo($r,'upload',$formelem,$dom,$confname, |
"help/$lang",'','',$newfile{$lang}, |
"help/$lang",'','',$newfile{$lang}, |
$modified); |
$modified); |
Line 12201 sub modify_login {
|
Line 12252 sub modify_login {
|
my $modified = []; |
my $modified = []; |
foreach my $lonhost (@newhosts) { |
foreach my $lonhost (@newhosts) { |
my $formelem = 'loginheadtag_'.$lonhost; |
my $formelem = 'loginheadtag_'.$lonhost; |
(my $result,$newheadtagurls{$lonhost}) = |
(my $result,$newheadtagurls{$lonhost}) = |
&Apache::lonconfigsettings::publishlogo($r,'upload',$formelem,$dom,$confname, |
&Apache::lonconfigsettings::publishlogo($r,'upload',$formelem,$dom,$confname, |
"login/headtag/$lonhost",'','', |
"login/headtag/$lonhost",'','', |
$env{'form.loginheadtag_'.$lonhost.'.filename'}, |
$env{'form.loginheadtag_'.$lonhost.'.filename'}, |
Line 12278 sub modify_login {
|
Line 12329 sub modify_login {
|
$currsaml{$lonhost}{$item} = $env{'form.saml_'.$item.'_'.$lonhost}; |
$currsaml{$lonhost}{$item} = $env{'form.saml_'.$item.'_'.$lonhost}; |
} |
} |
} else { |
} else { |
if ($saml{$lonhost}) { |
if ($saml{$lonhost}) { |
$changes{'saml'}{$lonhost} = 1; |
$changes{'saml'}{$lonhost} = 1; |
delete($currsaml{$lonhost}); |
delete($currsaml{$lonhost}); |
} |
} |
} |
} |
} |
} |
foreach my $posshost (keys(%currsaml)) { |
foreach my $posshost (keys(%currsaml)) { |
unless (exists($domservers{$posshost})) { |
unless (exists($domservers{$posshost})) { |
delete($currsaml{$posshost}); |
delete($currsaml{$posshost}); |
} |
} |
} |
} |
%{$loginhash{'login'}{'saml'}} = %currsaml; |
%{$loginhash{'login'}{'saml'}} = %currsaml; |
Line 12300 sub modify_login {
|
Line 12351 sub modify_login {
|
my $modified = []; |
my $modified = []; |
foreach my $lonhost (@newsamlimgs) { |
foreach my $lonhost (@newsamlimgs) { |
my $formelem = 'saml_img_'.$lonhost; |
my $formelem = 'saml_img_'.$lonhost; |
my ($result,$imgurl) = |
my ($result,$imgurl) = |
&Apache::lonconfigsettings::publishlogo($r,'upload',$formelem,$dom,$confname, |
&Apache::lonconfigsettings::publishlogo($r,'upload',$formelem,$dom,$confname, |
"login/saml/$lonhost",'','', |
"login/saml/$lonhost",'','', |
$env{'form.saml_img_'.$lonhost.'.filename'}, |
$env{'form.saml_img_'.$lonhost.'.filename'}, |
Line 12670 sub modify_ipaccess {
|
Line 12721 sub modify_ipaccess {
|
$possrange =~ s/,+/,/g; |
$possrange =~ s/,+/,/g; |
if ($possrange ne '') { |
if ($possrange ne '') { |
my (@ok,$count); |
my (@ok,$count); |
$count = 0; |
$count = 0; |
foreach my $poss (split(/\,/,$possrange)) { |
foreach my $poss (split(/\,/,$possrange)) { |
$count ++; |
$count ++; |
$poss = &validate_ip_pattern($poss); |
$poss = &validate_ip_pattern($poss); |
Line 12703 sub modify_ipaccess {
|
Line 12754 sub modify_ipaccess {
|
} |
} |
} |
} |
$confhash{$itemid}{'commblocks'} = {}; |
$confhash{$itemid}{'commblocks'} = {}; |
|
|
my %commblocks; |
my %commblocks; |
map { $commblocks{$_} = 1; } &Apache::loncommon::get_env_multiple('form.ipaccess_block_'.$idx); |
map { $commblocks{$_} = 1; } &Apache::loncommon::get_env_multiple('form.ipaccess_block_'.$idx); |
foreach my $type (@{$typeorder}) { |
foreach my $type (@{$typeorder}) { |
if ($commblocks{$type}) { |
if ($commblocks{$type}) { |
$confhash{$itemid}{'commblocks'}{$type} = 'on'; |
$confhash{$itemid}{'commblocks'}{$type} = 'on'; |
Line 12737 sub modify_ipaccess {
|
Line 12788 sub modify_ipaccess {
|
} |
} |
$env{'form.ipaccess_cnum_'.$idx} =~ s/^\s+|\s+$//g; |
$env{'form.ipaccess_cnum_'.$idx} =~ s/^\s+|\s+$//g; |
$env{'form.ipaccess_cdom_'.$idx} =~ s/^\s+|\s+$//g; |
$env{'form.ipaccess_cdom_'.$idx} =~ s/^\s+|\s+$//g; |
if (($env{'form.ipaccess_cnum_'.$idx} =~ /^$match_courseid$/) && |
if (($env{'form.ipaccess_cnum_'.$idx} =~ /^$match_courseid$/) && |
($env{'form.ipaccess_cdom_'.$idx} =~ /^$match_domain$/)) { |
($env{'form.ipaccess_cdom_'.$idx} =~ /^$match_domain$/)) { |
if (&Apache::lonnet::homeserver($env{'form.ipaccess_cnum_'.$idx}, |
if (&Apache::lonnet::homeserver($env{'form.ipaccess_cnum_'.$idx}, |
$env{'form.ipaccess_cdom_'.$idx}) eq 'no_host') { |
$env{'form.ipaccess_cdom_'.$idx}) eq 'no_host') { |
Line 12817 sub modify_ipaccess {
|
Line 12868 sub modify_ipaccess {
|
if (keys(%{$confhash{$itemid}{'courses'}})) { |
if (keys(%{$confhash{$itemid}{'courses'}})) { |
my @courses; |
my @courses; |
foreach my $cid (sort(keys(%{$confhash{$itemid}{'courses'}}))) { |
foreach my $cid (sort(keys(%{$confhash{$itemid}{'courses'}}))) { |
my %courseinfo = &Apache::lonnet::coursedescription($cid,{'one_time' => 1}); |
my %courseinfo = &Apache::lonnet::coursedescription($cid,{'one_time' => 1}); |
push(@courses,$courseinfo{'description'}.' ('.$cid.')'); |
push(@courses,$courseinfo{'description'}.' ('.$cid.')'); |
} |
} |
$resulttext .= '<li>'.&mt('Courses/Communities allowed').':<ul><li>'. |
$resulttext .= '<li>'.&mt('Courses/Communities allowed').':<ul><li>'. |
Line 13412 sub subscribed_hosts {
|
Line 13463 sub subscribed_hosts {
|
|
|
sub check_switchserver { |
sub check_switchserver { |
my ($dom,$confname) = @_; |
my ($dom,$confname) = @_; |
my ($allowed,$switchserver); |
my ($allowed,$switchserver,$home); |
my $home = &Apache::lonnet::homeserver($confname,$dom); |
if ($confname eq '') { |
if ($home eq 'no_host') { |
|
$home = &Apache::lonnet::domain($dom,'primary'); |
$home = &Apache::lonnet::domain($dom,'primary'); |
|
} else { |
|
$home = &Apache::lonnet::homeserver($confname,$dom); |
|
if ($home eq 'no_host') { |
|
$home = &Apache::lonnet::domain($dom,'primary'); |
|
} |
} |
} |
my @ids=&Apache::lonnet::current_machine_ids(); |
my @ids=&Apache::lonnet::current_machine_ids(); |
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
if (!$allowed) { |
if (!$allowed) { |
$switchserver='<a href="/adm/switchserver?otherserver='.$home.'&role=dc./'.$dom.'/&destinationurl=/adm/domainprefs">'.&mt('Switch Server').'</a>'; |
$switchserver='<a href="/adm/switchserver?otherserver='.$home.'&role='. |
|
&HTML::Entities::encode($env{'request.role'},'\'<>"&'). |
|
'&destinationurl=/adm/domainprefs">'.&mt('Switch Server').'</a>'; |
} |
} |
return $switchserver; |
return $switchserver; |
} |
} |
Line 14245 sub modify_ltitools {
|
Line 14302 sub modify_ltitools {
|
$action => { %newtoolsenc } |
$action => { %newtoolsenc } |
); |
); |
&Apache::lonnet::put_dom('encconfig',\%toolsenchash,$dom,undef,1); |
&Apache::lonnet::put_dom('encconfig',\%toolsenchash,$dom,undef,1); |
|
my $cachetime = 24*60*60; |
|
&Apache::lonnet::do_cache_new('ltitoolsenc',$dom,\%newtoolsenc,$cachetime); |
&store_security($dom,'ltitools',\%secchanges,\%newkeyset,\%keystore,$lastactref); |
&store_security($dom,'ltitools',\%secchanges,\%newkeyset,\%keystore,$lastactref); |
} |
} |
$resulttext = &mt('Changes made:').'<ul>'; |
$resulttext = &mt('Changes made:').'<ul>'; |
if (keys(%secchanges) > 0) { |
if (keys(%secchanges) > 0) { |
$resulttext .= <i_security_results('ltitools',\%secchanges,\%newtoolsec,\%newkeyset,\%keystore); |
$resulttext .= <i_security_results($dom,'ltitools',\%secchanges,\%newtoolsec,\%newkeyset,\%keystore); |
} |
} |
if (keys(%ltitoolschg) > 0) { |
if (keys(%ltitoolschg) > 0) { |
$resulttext .= $ltitoolsoutput; |
$resulttext .= $ltitoolsoutput; |
} |
} |
|
my $cachetime = 24*60*60; |
|
&Apache::lonnet::do_cache_new('ltitools',$dom,\%newltitools,$cachetime); |
|
if (ref($lastactref) eq 'HASH') { |
|
$lastactref->{'ltitools'} = 1; |
|
} |
} else { |
} else { |
$errors .= '<li><span class="LC_error">'.&mt('Failed to save changes').'</span></li>'; |
$errors .= '<li><span class="LC_error">'.&mt('Failed to save changes').'</span></li>'; |
} |
} |
Line 14334 sub fetch_secrets {
|
Line 14398 sub fetch_secrets {
|
|
|
foreach my $hostid (keys(%servers)) { |
foreach my $hostid (keys(%servers)) { |
if (($hostid ne '') && (grep(/^\Q$hostid\E$/,@ids))) { |
if (($hostid ne '') && (grep(/^\Q$hostid\E$/,@ids))) { |
my $newkey; |
|
my $keyitem = 'form.'.$context.'_privkey_'.$hostid; |
my $keyitem = 'form.'.$context.'_privkey_'.$hostid; |
if (exists($env{$keyitem})) { |
if (exists($env{$keyitem})) { |
$env{$keyitem} =~ s/(`)/'/g; |
$env{$keyitem} =~ s/(`)/'/g; |
Line 14358 sub fetch_secrets {
|
Line 14421 sub fetch_secrets {
|
} |
} |
|
|
sub store_security { |
sub store_security { |
my ($dom,$context,$secchanges,$newkeyset,$keystore,$lastactref) = @_; |
my ($dom,$context,$secchanges,$newkeyset,$keystore) = @_; |
return unless ((ref($secchanges) eq 'HASH') && (ref($newkeyset) eq 'HASH') && |
return unless ((ref($secchanges) eq 'HASH') && (ref($newkeyset) eq 'HASH') && |
(ref($keystore) eq 'HASH')); |
(ref($keystore) eq 'HASH')); |
if (keys(%{$secchanges})) { |
if (keys(%{$secchanges})) { |
Line 14373 sub store_security {
|
Line 14436 sub store_security {
|
$dom,$hostid); |
$dom,$hostid); |
} |
} |
} |
} |
if (ref($lastactref) eq 'HASH') { |
|
if (($secchanges->{'encrypt'}) || ($secchanges->{'private'})) { |
|
$lastactref->{'domdefaults'} = 1; |
|
} |
|
} |
|
} |
} |
} |
} |
|
|
sub lti_security_results { |
sub lti_security_results { |
my ($context,$secchanges,$newsec,$newkeyset,$keystore) = @_; |
my ($dom,$context,$secchanges,$newsec,$newkeyset,$keystore) = @_; |
my $output; |
my $output; |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
|
my $needs_update; |
foreach my $item (keys(%{$secchanges})) { |
foreach my $item (keys(%{$secchanges})) { |
if ($item eq 'encrypt') { |
if ($item eq 'encrypt') { |
|
$needs_update = 1; |
my %encrypted; |
my %encrypted; |
if ($context eq 'lti') { |
if ($context eq 'lti') { |
%encrypted = ( |
%encrypted = ( |
Line 14417 sub lti_security_results {
|
Line 14478 sub lti_security_results {
|
} |
} |
my @types= ('crs','dom'); |
my @types= ('crs','dom'); |
if ($context eq 'lti') { |
if ($context eq 'lti') { |
|
foreach my $type (@types) { |
|
undef($domdefaults{'linkprotenc_'.$type}); |
|
} |
push(@types,'consumers'); |
push(@types,'consumers'); |
|
undef($domdefaults{'ltienc_consumers'}); |
|
} elsif ($context eq 'ltitools') { |
|
foreach my $type (@types) { |
|
undef($domdefaults{'toolenc_'.$type}); |
|
} |
} |
} |
foreach my $type (@types) { |
foreach my $type (@types) { |
my $shown = $encrypted{$type}{'off'}; |
my $shown = $encrypted{$type}{'off'}; |
if (ref($newsec->{$item}) eq 'HASH') { |
if (ref($newsec->{$item}) eq 'HASH') { |
if ($newsec->{$item}{$type}) { |
if ($newsec->{$item}{$type}) { |
|
if ($context eq 'lti') { |
|
if ($type eq 'consumers') { |
|
$domdefaults{'ltienc_consumers'} = 1; |
|
} else { |
|
$domdefaults{'linkprotenc_'.$type} = 1; |
|
} |
|
} elsif ($context eq 'ltitools') { |
|
$domdefaults{'toolenc_'.$type} = 1; |
|
} |
$shown = $encrypted{$type}{'on'}; |
$shown = $encrypted{$type}{'on'}; |
} |
} |
} |
} |
Line 14466 sub lti_security_results {
|
Line 14544 sub lti_security_results {
|
$output .= '<li>'.&mt('[_1] set to none',$titles{'chars'}).'</li>'; |
$output .= '<li>'.&mt('[_1] set to none',$titles{'chars'}).'</li>'; |
} |
} |
} elsif ($item eq 'private') { |
} elsif ($item eq 'private') { |
|
$needs_update = 1; |
|
if ($context eq 'lti') { |
|
undef($domdefaults{'ltiprivhosts'}); |
|
} elsif ($context eq 'ltitools') { |
|
undef($domdefaults{'toolprivhosts'}); |
|
} |
if (keys(%{$newkeyset})) { |
if (keys(%{$newkeyset})) { |
|
my @privhosts; |
foreach my $hostid (sort(keys(%{$newkeyset}))) { |
foreach my $hostid (sort(keys(%{$newkeyset}))) { |
if ($keystore->{$hostid} eq 'ok') { |
if ($keystore->{$hostid} eq 'ok') { |
$output .= '<li>'.&mt('Encryption key for storage of shared secrets saved for [_1]',$hostid).'</li>'; |
$output .= '<li>'.&mt('Encryption key for storage of shared secrets saved for [_1]',$hostid).'</li>'; |
|
unless (grep(/^\Q$hostid\E$/,@privhosts)) { |
|
push(@privhosts,$hostid); |
|
} |
|
} |
|
} |
|
if (@privhosts) { |
|
if ($context eq 'lti') { |
|
$domdefaults{'ltiprivhosts'} = \@privhosts; |
|
} elsif ($context eq 'ltitools') { |
|
$domdefaults{'toolprivhosts'} = \@privhosts; |
} |
} |
} |
} |
} |
} |
Line 14477 sub lti_security_results {
|
Line 14572 sub lti_security_results {
|
next; |
next; |
} |
} |
} |
} |
|
if ($needs_update) { |
|
my $cachetime = 24*60*60; |
|
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); |
|
} |
return $output; |
return $output; |
} |
} |
|
|
Line 15016 sub process_proctoring_image {
|
Line 15115 sub process_proctoring_image {
|
sub modify_lti { |
sub modify_lti { |
my ($r,$dom,$action,$lastactref,%domconfig) = @_; |
my ($r,$dom,$action,$lastactref,%domconfig) = @_; |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
my ($newid,@allpos,%changes,%confhash,%encconfig,$errors,$resulttext); |
my ($newid,@allpos,%changes,%confhash,%ltienc,$errors,$resulttext); |
my (%posslti,%posslticrs,%posscrstype); |
my (%posslti,%posslticrs,%posscrstype); |
my @courseroles = ('cc','in','ta','ep','st'); |
my @courseroles = ('cc','in','ta','ep','st'); |
my @ltiroles = qw(Learner Instructor ContentDeveloper TeachingAssistant Mentor Member Manager Administrator); |
my @ltiroles = qw(Learner Instructor ContentDeveloper TeachingAssistant Mentor Member Manager Administrator); |
Line 15130 sub modify_lti {
|
Line 15229 sub modify_lti {
|
} |
} |
} |
} |
} |
} |
|
my (%keystore,$secstored); |
|
if ($is_home) { |
|
&store_security($dom,'lti',\%secchanges,\%newkeyset,\%keystore); |
|
} |
|
|
|
my ($cipher,$privnum); |
|
if ((@items > 0) && ($is_home)) { |
|
($cipher,$privnum) = &get_priv_creds($dom,$home,$secchanges{'encrypt'}, |
|
$newltisec{'encrypt'},$keystore{$home}); |
|
} |
foreach my $idx (@items) { |
foreach my $idx (@items) { |
my $itemid = $itemids{$idx}; |
my $itemid = $itemids{$idx}; |
next unless ($itemid); |
next unless ($itemid); |
|
my %currlti; |
|
unless ($idx eq 'add') { |
|
if (ref($domconfig{$action}) eq 'HASH') { |
|
if (ref($domconfig{$action}{$itemid}) eq 'HASH') { |
|
%currlti = %{$domconfig{$action}{$itemid}}; |
|
} |
|
} |
|
} |
my $position = $env{'form.lti_pos_'.$itemid}; |
my $position = $env{'form.lti_pos_'.$itemid}; |
$position =~ s/\D+//g; |
$position =~ s/\D+//g; |
if ($position ne '') { |
if ($position ne '') { |
$allpos[$position] = $itemid; |
$allpos[$position] = $itemid; |
} |
} |
foreach my $item ('consumer','key','secret','lifetime','requser','crsinc') { |
foreach my $item ('consumer','lifetime','requser','crsinc') { |
my $formitem = 'form.lti_'.$item.'_'.$idx; |
my $formitem = 'form.lti_'.$item.'_'.$idx; |
$env{$formitem} =~ s/(`)/'/g; |
$env{$formitem} =~ s/(`)/'/g; |
if ($item eq 'lifetime') { |
if ($item eq 'lifetime') { |
$env{$formitem} =~ s/[^\d.]//g; |
$env{$formitem} =~ s/[^\d.]//g; |
} |
} |
if ($env{$formitem} ne '') { |
if ($env{$formitem} ne '') { |
if (($item eq 'key') || ($item eq 'secret')) { |
$confhash{$itemid}{$item} = $env{$formitem}; |
$encconfig{$itemid}{$item} = $env{$formitem}; |
unless (($idx eq 'add') || ($changes{$itemid})) { |
} else { |
if ($currlti{$item} ne $confhash{$itemid}{$item}) { |
$confhash{$itemid}{$item} = $env{$formitem}; |
$changes{$itemid} = 1; |
unless (($idx eq 'add') || ($changes{$itemid})) { |
|
if ($domconfig{$action}{$itemid}{$item} ne $confhash{$itemid}{$item}) { |
|
$changes{$itemid} = 1; |
|
} |
|
} |
} |
} |
} |
} |
} |
Line 15293 sub modify_lti {
|
Line 15406 sub modify_lti {
|
unless (($idx eq 'add') || ($changes{$itemid})) { |
unless (($idx eq 'add') || ($changes{$itemid})) { |
if ($confhash{$itemid}{'crsinc'}) { |
if ($confhash{$itemid}{'crsinc'}) { |
foreach my $field ('mapcrs','storecrs','makecrs','section','passback','roster') { |
foreach my $field ('mapcrs','storecrs','makecrs','section','passback','roster') { |
if ($domconfig{$action}{$itemid}{$field} ne $confhash{$itemid}{$field}) { |
if ($currlti{$field} ne $confhash{$itemid}{$field}) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
} |
} |
} |
} |
unless ($changes{$itemid}) { |
unless ($changes{$itemid}) { |
if ($domconfig{$action}{$itemid}{'passback'} eq $confhash{$itemid}{'passback'}) { |
if ($currlti{'passback'} eq $confhash{$itemid}{'passback'}) { |
if ($domconfig{$action}{$itemid}{'passbackformat'} ne $confhash{$itemid}{'passbackformat'}) { |
if ($currlti{'passbackformat'} ne $confhash{$itemid}{'passbackformat'}) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
} |
} |
} |
} |
} |
} |
foreach my $field ('mapcrstype','selfenroll') { |
foreach my $field ('mapcrstype','selfenroll') { |
unless ($changes{$itemid}) { |
unless ($changes{$itemid}) { |
if (ref($domconfig{$action}{$itemid}{$field}) eq 'ARRAY') { |
if (ref($currlti{$field}) eq 'ARRAY') { |
if (ref($confhash{$itemid}{$field}) eq 'ARRAY') { |
if (ref($confhash{$itemid}{$field}) eq 'ARRAY') { |
my @diffs = &Apache::loncommon::compare_arrays($domconfig{$action}{$itemid}{$field}, |
my @diffs = &Apache::loncommon::compare_arrays($currlti{$field}, |
$confhash{$itemid}{$field}); |
$confhash{$itemid}{$field}); |
if (@diffs) { |
if (@diffs) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
} |
} |
} elsif (@{$domconfig{$action}{$itemid}{$field}} > 0) { |
} elsif (@{$currlti{$field}} > 0) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
} |
} |
} elsif (ref($confhash{$itemid}{$field}) eq 'ARRAY') { |
} elsif (ref($confhash{$itemid}{$field}) eq 'ARRAY') { |
Line 15324 sub modify_lti {
|
Line 15437 sub modify_lti {
|
} |
} |
} |
} |
unless ($changes{$itemid}) { |
unless ($changes{$itemid}) { |
if (ref($domconfig{$action}{$itemid}{'maproles'}) eq 'HASH') { |
if (ref($currlti{'maproles'}) eq 'HASH') { |
if (ref($confhash{$itemid}{'maproles'}) eq 'HASH') { |
if (ref($confhash{$itemid}{'maproles'}) eq 'HASH') { |
foreach my $ltirole (keys(%{$domconfig{$action}{$itemid}{'maproles'}})) { |
foreach my $ltirole (keys(%{$currlti{'maproles'}})) { |
if ($domconfig{$action}{$itemid}{'maproles'}{$ltirole} ne |
if ($currlti{'maproles'}{$ltirole} ne |
$confhash{$itemid}{'maproles'}{$ltirole}) { |
$confhash{$itemid}{'maproles'}{$ltirole}) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
last; |
last; |
Line 15336 sub modify_lti {
|
Line 15449 sub modify_lti {
|
unless ($changes{$itemid}) { |
unless ($changes{$itemid}) { |
foreach my $ltirole (keys(%{$confhash{$itemid}{'maproles'}})) { |
foreach my $ltirole (keys(%{$confhash{$itemid}{'maproles'}})) { |
if ($confhash{$itemid}{'maproles'}{$ltirole} ne |
if ($confhash{$itemid}{'maproles'}{$ltirole} ne |
$domconfig{$action}{$itemid}{'maproles'}{$ltirole}) { |
$currlti{'maproles'}{$ltirole}) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
last; |
last; |
} |
} |
} |
} |
} |
} |
} elsif (keys(%{$domconfig{$action}{$itemid}{'maproles'}}) > 0) { |
} elsif (keys(%{$currlti{'maproles'}}) > 0) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
} |
} |
} elsif (ref($confhash{$itemid}{'maproles'}) eq 'HASH') { |
} elsif (ref($confhash{$itemid}{'maproles'}) eq 'HASH') { |
Line 15356 sub modify_lti {
|
Line 15469 sub modify_lti {
|
} |
} |
unless ($changes{$itemid}) { |
unless ($changes{$itemid}) { |
foreach my $field ('mapuser','lcauth','lcauthparm','topmenu','inlinemenu','callback') { |
foreach my $field ('mapuser','lcauth','lcauthparm','topmenu','inlinemenu','callback') { |
if ($domconfig{$action}{$itemid}{$field} ne $confhash{$itemid}{$field}) { |
if ($currlti{$field} ne $confhash{$itemid}{$field}) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
} |
} |
} |
} |
unless ($changes{$itemid}) { |
unless ($changes{$itemid}) { |
foreach my $field ('makeuser','lcmenu') { |
foreach my $field ('makeuser','lcmenu') { |
if (ref($domconfig{$action}{$itemid}{$field}) eq 'ARRAY') { |
if (ref($currlti{$field}) eq 'ARRAY') { |
if (ref($confhash{$itemid}{$field}) eq 'ARRAY') { |
if (ref($confhash{$itemid}{$field}) eq 'ARRAY') { |
my @diffs = &Apache::loncommon::compare_arrays($domconfig{$action}{$itemid}{$field}, |
my @diffs = &Apache::loncommon::compare_arrays($currlti{$field}, |
$confhash{$itemid}{$field}); |
$confhash{$itemid}{$field}); |
if (@diffs) { |
if (@diffs) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
} |
} |
} elsif (@{$domconfig{$action}{$itemid}{$field}} > 0) { |
} elsif (@{$currlti{$field}} > 0) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
} |
} |
} elsif (ref($confhash{$itemid}{$field}) eq 'ARRAY') { |
} elsif (ref($confhash{$itemid}{$field}) eq 'ARRAY') { |
Line 15382 sub modify_lti {
|
Line 15495 sub modify_lti {
|
} |
} |
} |
} |
} |
} |
|
if ($is_home) { |
|
my $keyitem = 'form.lti_key_'.$idx; |
|
$env{$keyitem} =~ s/(`)/'/g; |
|
if ($env{$keyitem} ne '') { |
|
$ltienc{$itemid}{'key'} = $env{$keyitem}; |
|
unless ($changes{$itemid}) { |
|
if ($currlti{'key'} ne $env{$keyitem}) { |
|
$changes{$itemid} = 1; |
|
} |
|
} |
|
} |
|
my $secretitem = 'form.lti_secret_'.$idx; |
|
$env{$secretitem} =~ s/(`)/'/g; |
|
if ($currlti{'usable'}) { |
|
if ($env{'form.lti_changesecret_'.$idx}) { |
|
if ($env{$secretitem} ne '') { |
|
if ($privnum && $cipher) { |
|
$ltienc{$itemid}{'secret'} = $cipher->encrypt_hex($env{$secretitem}); |
|
$confhash{$itemid}{'cipher'} = $privnum; |
|
} else { |
|
$ltienc{$itemid}{'secret'} = $env{$secretitem}; |
|
} |
|
$changes{$itemid} = 1; |
|
} |
|
} else { |
|
$ltienc{$itemid}{'secret'} = $currlti{'secret'}; |
|
$confhash{$itemid}{'cipher'} = $currlti{'cipher'}; |
|
} |
|
if (ref($ltienc{$itemid}) eq 'HASH') { |
|
if (($ltienc{$itemid}{'key'} ne '') && ($ltienc{$itemid}{'secret'} ne '')) { |
|
$confhash{$itemid}{'usable'} = 1; |
|
} |
|
} |
|
} elsif ($env{$secretitem} ne '') { |
|
if ($privnum && $cipher) { |
|
$ltienc{$itemid}{'secret'} = $cipher->encrypt_hex($env{$secretitem}); |
|
$confhash{$itemid}{'cipher'} = $privnum; |
|
} else { |
|
$ltienc{$itemid}{'secret'} = $env{$secretitem}; |
|
} |
|
if (ref($ltienc{$itemid}) eq 'HASH') { |
|
if (($ltienc{$itemid}{'key'} ne '') && ($ltienc{$itemid}{'key'} ne '')) { |
|
$confhash{$itemid}{'usable'} = 1; |
|
} |
|
} |
|
$changes{$itemid} = 1; |
|
} |
|
} |
|
unless ($changes{$itemid}) { |
|
foreach my $key (keys(%currlti)) { |
|
if (ref($currlti{$key}) eq 'HASH') { |
|
if (ref($confhash{$itemid}{$key}) eq 'HASH') { |
|
foreach my $innerkey (keys(%{$currlti{$key}})) { |
|
unless (exists($confhash{$itemid}{$key}{$innerkey})) { |
|
$changes{$itemid} = 1; |
|
last; |
|
} |
|
} |
|
} elsif (keys(%{$currlti{$key}}) > 0) { |
|
$changes{$itemid} = 1; |
|
} |
|
} |
|
last if ($changes{$itemid}); |
|
} |
|
} |
} |
} |
if (@allpos > 0) { |
if (@allpos > 0) { |
my $idx = 0; |
my $idx = 0; |
Line 15399 sub modify_lti {
|
Line 15577 sub modify_lti {
|
} |
} |
} |
} |
} |
} |
|
|
|
if ((keys(%changes) == 0) && (keys(%secchanges) == 0)) { |
|
return &mt('No changes made.'); |
|
} |
|
|
my %ltihash = ( |
my %ltihash = ( |
$action => { %confhash } |
$action => { %confhash } |
); |
); |
my %ltienchash = ( |
my %ltienchash; |
$action => { %encconfig } |
|
); |
if ($is_home) { |
|
%ltienchash = ( |
|
$action => { %ltienc } |
|
); |
|
} |
if (keys(%secchanges)) { |
if (keys(%secchanges)) { |
$ltihash{'ltisec'} = \%newltisec; |
$ltihash{'ltisec'} = \%newltisec; |
if ($secchanges{'linkprot'}) { |
if ($secchanges{'linkprot'}) { |
Line 15415 sub modify_lti {
|
Line 15602 sub modify_lti {
|
} |
} |
my $putresult = &Apache::lonnet::put_dom('configuration',\%ltihash,$dom); |
my $putresult = &Apache::lonnet::put_dom('configuration',\%ltihash,$dom); |
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
my %keystore; |
if (keys(%ltienchash)) { |
&store_security($dom,'lti',\%secchanges,\%newkeyset,\%keystore,$lastactref); |
&Apache::lonnet::put_dom('encconfig',\%ltienchash,$dom,undef,1); |
&Apache::lonnet::put_dom('encconfig',\%ltienchash,$dom,undef,1); |
|
if ((keys(%changes) == 0) && (keys(%secchanges) == 0)) { |
|
return &mt('No changes made.'); |
|
} |
} |
$resulttext = &mt('Changes made:').'<ul>'; |
$resulttext = &mt('Changes made:').'<ul>'; |
if (keys(%secchanges) > 0) { |
if (keys(%secchanges) > 0) { |
$resulttext .= <i_security_results('lti',\%secchanges,\%newltisec,\%newkeyset,\%keystore); |
$resulttext .= <i_security_results($dom,'lti',\%secchanges,\%newltisec,\%newkeyset,\%keystore); |
if (exists($secchanges{'linkprot'})) { |
if (exists($secchanges{'linkprot'})) { |
$resulttext .= $linkprotoutput; |
$resulttext .= $linkprotoutput; |
} |
} |
} |
} |
if (keys(%changes) > 0) { |
if (keys(%changes) > 0) { |
my $cachetime = 24*60*60; |
my $cachetime = 24*60*60; |
my %ltiall = %confhash; |
&Apache::lonnet::do_cache_new('lti',$dom,\%confhash,$cachetime); |
foreach my $id (keys(%ltiall)) { |
|
if (ref($encconfig{$id}) eq 'HASH') { |
|
foreach my $item ('key','secret') { |
|
$ltiall{$id}{$item} = $encconfig{$id}{$item}; |
|
} |
|
} |
|
} |
|
&Apache::lonnet::do_cache_new('lti',$dom,\%ltiall,$cachetime); |
|
if (ref($lastactref) eq 'HASH') { |
if (ref($lastactref) eq 'HASH') { |
$lastactref->{'lti'} = 1; |
$lastactref->{'lti'} = 1; |
} |
} |
my %bynum; |
my %bynum; |
foreach my $itemid (sort(keys(%changes))) { |
foreach my $itemid (sort(keys(%changes))) { |
my $position = $confhash{$itemid}{'order'}; |
if (ref($confhash{$itemid}) eq 'HASH') { |
$bynum{$position} = $itemid; |
my $position = $confhash{$itemid}{'order'}; |
|
$bynum{$position} = $itemid; |
|
} |
} |
} |
foreach my $pos (sort { $a <=> $b } keys(%bynum)) { |
foreach my $pos (sort { $a <=> $b } keys(%bynum)) { |
my $itemid = $bynum{$pos}; |
my $itemid = $bynum{$pos}; |
if (ref($confhash{$itemid}) ne 'HASH') { |
if (ref($confhash{$itemid}) eq 'HASH') { |
$resulttext .= '<li>'.&mt('Deleted: [_1]',$changes{$itemid}).'</li>'; |
|
} else { |
|
$resulttext .= '<li><b>'.$confhash{$itemid}{'consumer'}.'</b><ul>'; |
$resulttext .= '<li><b>'.$confhash{$itemid}{'consumer'}.'</b><ul>'; |
my $position = $pos + 1; |
my $position = $pos + 1; |
$resulttext .= '<li>'.&mt('Order: [_1]',$position).'</li>'; |
$resulttext .= '<li>'.&mt('Order: [_1]',$position).'</li>'; |
Line 15460 sub modify_lti {
|
Line 15636 sub modify_lti {
|
$resulttext .= '<li>'.$lt{$item}.': '.$confhash{$itemid}{$item}.'</li>'; |
$resulttext .= '<li>'.$lt{$item}.': '.$confhash{$itemid}{$item}.'</li>'; |
} |
} |
} |
} |
if ($encconfig{$itemid}{'key'} ne '') { |
if ($ltienc{$itemid}{'key'} ne '') { |
$resulttext .= '<li>'.$lt{'key'}.': '.$encconfig{$itemid}{'key'}.'</li>'; |
$resulttext .= '<li>'.$lt{'key'}.': '.$ltienc{$itemid}{'key'}.'</li>'; |
} |
} |
if ($encconfig{$itemid}{'secret'} ne '') { |
if ($ltienc{$itemid}{'secret'} ne '') { |
$resulttext .= '<li>'.$lt{'secret'}.': '; |
$resulttext .= '<li>'.$lt{'secret'}.': ['.&mt('not shown').']</li>'; |
my $num = length($encconfig{$itemid}{'secret'}); |
|
$resulttext .= ('*'x$num).'</li>'; |
|
} |
} |
if ($confhash{$itemid}{'requser'}) { |
if ($confhash{$itemid}{'requser'}) { |
if ($confhash{$itemid}{'callback'}) { |
if ($confhash{$itemid}{'callback'}) { |
Line 15618 sub modify_lti {
|
Line 15792 sub modify_lti {
|
$resulttext .= '</ul></li>'; |
$resulttext .= '</ul></li>'; |
} |
} |
} |
} |
|
if (keys(%deletions)) { |
|
foreach my $itemid (sort { $a <=> $b } keys(%deletions)) { |
|
$resulttext .= '<li>'.&mt('Deleted: [_1]',$changes{$itemid}).'</li>'; |
|
} |
|
} |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
|
if (ref($lastactref) eq 'HASH') { |
|
if (($secchanges{'encrypt'}) || ($secchanges{'private'})) { |
|
$lastactref->{'domdefaults'} = 1; |
|
} |
|
} |
} else { |
} else { |
$errors .= '<li><span class="LC_error">'.&mt('Failed to save changes').'</span></li>'; |
$errors .= '<li><span class="LC_error">'.&mt('Failed to save changes').'</span></li>'; |
} |
} |
Line 15630 sub modify_lti {
|
Line 15814 sub modify_lti {
|
return $resulttext; |
return $resulttext; |
} |
} |
|
|
|
sub get_priv_creds { |
|
my ($dom,$home,$encchg,$encrypt,$storedsec) = @_; |
|
my ($needenc,$cipher,$privnum); |
|
my %domdefs = &Apache::lonnet::get_domain_defaults($dom); |
|
if (($encchg) && (ref($encrypt) eq 'HASH')) { |
|
$needenc = $encrypt->{'consumers'} |
|
} else { |
|
$needenc = $domdefs{'ltienc_consumers'}; |
|
} |
|
if ($needenc) { |
|
if (($storedsec eq 'ok') || ((ref($domdefs{'ltiprivhosts'}) eq 'ARRAY') && |
|
(grep(/^\Q$home\E$/,@{$domdefs{'ltiprivhosts'}})))) { |
|
my %privhash = &Apache::lonnet::restore_dom('lti','private',$dom,$home,1); |
|
my $privkey = $privhash{'key'}; |
|
$privnum = $privhash{'version'}; |
|
if (($privnum) && ($privkey ne '')) { |
|
$cipher = Crypt::CBC->new({'key' => $privkey, |
|
'cipher' => 'DES'}); |
|
} |
|
} |
|
} |
|
return ($cipher,$privnum); |
|
} |
|
|
sub get_lti_id { |
sub get_lti_id { |
my ($domain,$consumer) = @_; |
my ($domain,$consumer) = @_; |
# get lock on lti db |
# get lock on lti db |
Line 16432 sub modify_contacts {
|
Line 16640 sub modify_contacts {
|
$contacts_hash{'contacts'}{'overrides'}{$type}{'include'} = $includeloc{$type}.':'.&escape($includestr{$type}); |
$contacts_hash{'contacts'}{'overrides'}{$type}{'include'} = $includeloc{$type}.':'.&escape($includestr{$type}); |
$newsetting{'override_'.$type}{'include'} = $contacts_hash{'contacts'}{'overrides'}{$type}{'include'}; |
$newsetting{'override_'.$type}{'include'} = $contacts_hash{'contacts'}{'overrides'}{$type}{'include'}; |
} |
} |
} |
} |
} |
} |
} |
} |
if (keys(%currsetting) > 0) { |
if (keys(%currsetting) > 0) { |
Line 16490 sub modify_contacts {
|
Line 16698 sub modify_contacts {
|
} |
} |
} |
} |
if (@statuses) { |
if (@statuses) { |
if (ref($currsetting{'overrides'}) eq 'HASH') { |
if (ref($currsetting{'overrides'}) eq 'HASH') { |
foreach my $key (keys(%{$currsetting{'overrides'}})) { |
foreach my $key (keys(%{$currsetting{'overrides'}})) { |
if (ref($currsetting{'overrides'}{$key}) eq 'HASH') { |
if (ref($currsetting{'overrides'}{$key}) eq 'HASH') { |
if (ref($newsetting{'override_'.$key}) eq 'HASH') { |
if (ref($newsetting{'override_'.$key}) eq 'HASH') { |
foreach my $item (@contacts,'bcc','others','include') { |
foreach my $item (@contacts,'bcc','others','include') { |
if ($currsetting{'overrides'}{$key}{$item} ne $newsetting{'override_'.$key}{$item}) { |
if ($currsetting{'overrides'}{$key}{$item} ne $newsetting{'override_'.$key}{$item}) { |
push(@{$changes{'overrides'}},$key); |
push(@{$changes{'overrides'}},$key); |
last; |
last; |
} |
} |
Line 16512 sub modify_contacts {
|
Line 16720 sub modify_contacts {
|
} |
} |
} else { |
} else { |
foreach my $key (@overrides) { |
foreach my $key (@overrides) { |
push(@{$changes{'overrides'}},$key); |
push(@{$changes{'overrides'}},$key); |
} |
} |
} |
} |
} |
} |
Line 16694 sub modify_contacts {
|
Line 16902 sub modify_contacts {
|
$resulttext .= $bcctext.': <span class="LC_cusr_emph">'.$bcc{$type}.'</span>'; |
$resulttext .= $bcctext.': <span class="LC_cusr_emph">'.$bcc{$type}.'</span>'; |
} elsif (!@text) { |
} elsif (!@text) { |
$resulttext .= &mt('No one'); |
$resulttext .= &mt('No one'); |
} |
} |
if ($includestr{$type} ne '') { |
if ($includestr{$type} ne '') { |
if ($includeloc{$type} eq 'b') { |
if ($includeloc{$type} eq 'b') { |
$resulttext .= '<br />'.&mt('Text automatically added to e-mail body:').' '.$includestr{$type}; |
$resulttext .= '<br />'.&mt('Text automatically added to e-mail body:').' '.$includestr{$type}; |
Line 16718 sub modify_contacts {
|
Line 16926 sub modify_contacts {
|
if (ref($newsetting{'override_'.$type}) eq 'HASH') { |
if (ref($newsetting{'override_'.$type}) eq 'HASH') { |
my @text; |
my @text; |
foreach my $item (@contacts) { |
foreach my $item (@contacts) { |
if ($newsetting{'override_'.$type}{$item}) { |
if ($newsetting{'override_'.$type}{$item}) { |
push(@text,$short_titles->{$item}); |
push(@text,$short_titles->{$item}); |
} |
} |
} |
} |
if ($newsetting{'override_'.$type}{'others'} ne '') { |
if ($newsetting{'override_'.$type}{'others'} ne '') { |
push(@text,$newsetting{'override_'.$type}{'others'}); |
push(@text,$newsetting{'override_'.$type}{'others'}); |
} |
} |
|
|
if (@text) { |
if (@text) { |
$resulttext .= &mt('Helpdesk e-mail sent to: [_1]', |
$resulttext .= &mt('Helpdesk e-mail sent to: [_1]', |
'<span class="LC_cusr_emph">'.join(', ',@text).'</span>'); |
'<span class="LC_cusr_emph">'.join(', ',@text).'</span>'); |
Line 16888 sub modify_contacts {
|
Line 17096 sub modify_contacts {
|
} |
} |
|
|
sub modify_privacy { |
sub modify_privacy { |
my ($dom,%domconfig) = @_; |
my ($dom,$lastactref,%domconfig) = @_; |
my ($resulttext,%current,%changes); |
my ($resulttext,%current,%changes); |
if (ref($domconfig{'privacy'}) eq 'HASH') { |
if (ref($domconfig{'privacy'}) eq 'HASH') { |
%current = %{$domconfig{'privacy'}}; |
%current = %{$domconfig{'privacy'}}; |
Line 17124 sub modify_privacy {
|
Line 17332 sub modify_privacy {
|
} |
} |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
|
if ($changes{'approval'}) { |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
|
delete($domdefaults{'userapprovals'}); |
|
if (ref($privacyhash{'approval'}) eq 'HASH') { |
|
foreach my $domtype ('instdom','extdom') { |
|
if (ref($privacyhash{'approval'}{$domtype}) eq 'HASH') { |
|
foreach my $roletype ('domain','author','course','community') { |
|
if ($privacyhash{'approval'}{$domtype}{$roletype} eq 'user') { |
|
$domdefaults{'userapprovals'} = 1; |
|
last; |
|
} |
|
} |
|
} |
|
last if ($domdefaults{'userapprovals'}); |
|
} |
|
} |
|
my $cachetime = 24*60*60; |
|
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); |
|
if (ref($lastactref) eq 'HASH') { |
|
$lastactref->{'domdefaults'} = 1; |
|
} |
|
} |
} else { |
} else { |
$resulttext = &mt('No changes made to user information settings'); |
$resulttext = &mt('No changes made to user information settings'); |
} |
} |
Line 17566 sub modify_passwords {
|
Line 17796 sub modify_passwords {
|
); |
); |
my $needed = '<ul><li>'. |
my $needed = '<ul><li>'. |
join('</li><li>',map {$rulenames{$_} } @{$confighash{'passwords'}{'chars'}}). |
join('</li><li>',map {$rulenames{$_} } @{$confighash{'passwords'}{'chars'}}). |
'</li></ul>'; |
'</li></ul>'; |
$resulttext .= '<li>'.&mt('[_1] set to: [_2]',$titles{'chars'},$needed).'</li>'; |
$resulttext .= '<li>'.&mt('[_1] set to: [_2]',$titles{'chars'},$needed).'</li>'; |
} else { |
} else { |
$resulttext .= '<li>'.&mt('[_1] set to none',$titles{'chars'}).'</li>'; |
$resulttext .= '<li>'.&mt('[_1] set to none',$titles{'chars'}).'</li>'; |
Line 18049 sub modify_selfcreation {
|
Line 18279 sub modify_selfcreation {
|
if (($chosen eq 'inst') || ($chosen eq 'noninst')) { |
if (($chosen eq 'inst') || ($chosen eq 'noninst')) { |
my $emaildom; |
my $emaildom; |
if ($env{'form.cancreate_emaildomain_'.$chosen.'_'.$type} =~ /^\@[^\@]+$/) { |
if ($env{'form.cancreate_emaildomain_'.$chosen.'_'.$type} =~ /^\@[^\@]+$/) { |
$emaildom = $env{'form.cancreate_emaildomain_'.$chosen.'_'.$type}; |
$emaildom = $env{'form.cancreate_emaildomain_'.$chosen.'_'.$type}; |
$cancreate{'emaildomain'}{$type}{$chosen} = $emaildom; |
$cancreate{'emaildomain'}{$type}{$chosen} = $emaildom; |
if (ref($curremaildom{$type}) eq 'HASH') { |
if (ref($curremaildom{$type}) eq 'HASH') { |
if (exists($curremaildom{$type}{$chosen})) { |
if (exists($curremaildom{$type}{$chosen})) { |
Line 18061 sub modify_selfcreation {
|
Line 18291 sub modify_selfcreation {
|
} |
} |
} elsif ($emaildom ne '') { |
} elsif ($emaildom ne '') { |
push(@{$changes{'cancreate'}},'emaildomain'); |
push(@{$changes{'cancreate'}},'emaildomain'); |
} |
} |
} |
} |
$cancreate{'emailoptions'}{$type} = $env{'form.cancreate_emailoptions_'.$type}; |
$cancreate{'emailoptions'}{$type} = $env{'form.cancreate_emailoptions_'.$type}; |
} elsif ($chosen eq 'custom') { |
} elsif ($chosen eq 'custom') { |
Line 18488 sub modify_selfcreation {
|
Line 18718 sub modify_selfcreation {
|
); |
); |
if (@types) { |
if (@types) { |
if (@statuses) { |
if (@statuses) { |
$chgtext .= &mt('Processing of requests to create account with e-mail verification set as follows:'). |
$chgtext .= &mt('Processing of requests to create account with e-mail verification set as follows:'). |
'<ul>'; |
'<ul>'; |
foreach my $status (@statuses) { |
foreach my $status (@statuses) { |
if ($status eq 'default') { |
if ($status eq 'default') { |
Line 18696 sub modify_selfcreation {
|
Line 18926 sub modify_selfcreation {
|
$typename = $othertitle; |
$typename = $othertitle; |
} else { |
} else { |
$typename = $usertypes{$type}; |
$typename = $usertypes{$type}; |
} |
} |
$chgtext .= &mt('(Affiliation: [_1])',$typename); |
$chgtext .= &mt('(Affiliation: [_1])',$typename); |
} |
} |
if (@{$email_rule{$type}} > 0) { |
if (@{$email_rule{$type}} > 0) { |
Line 19041 sub modify_defaults {
|
Line 19271 sub modify_defaults {
|
} |
} |
if ($item eq 'portal_def') { |
if ($item eq 'portal_def') { |
unless (grep(/^\Q$item\E$/,@errors)) { |
unless (grep(/^\Q$item\E$/,@errors)) { |
if ($newvalues{$item} eq '') { |
if ($newvalues{$item} eq '') { |
foreach my $field ('email','web') { |
foreach my $field ('email','web') { |
if (exists($domdefaults{$item.'_'.$field})) { |
if (exists($domdefaults{$item.'_'.$field})) { |
delete($domdefaults{$item.'_'.$field}); |
delete($domdefaults{$item.'_'.$field}); |
Line 19226 sub modify_defaults {
|
Line 19456 sub modify_defaults {
|
$resulttext =~ s/, $//; |
$resulttext =~ s/, $//; |
$resulttext .= '</li>'; |
$resulttext .= '</li>'; |
} else { |
} else { |
$resulttext .= '<li>'.&mt('Institutional user status types deleted').'</li>'; |
$resulttext .= '<li>'.&mt('Institutional user status types deleted').'</li>'; |
} |
} |
} |
} |
} elsif ($item eq 'unamemap_rule') { |
} elsif ($item eq 'unamemap_rule') { |
Line 20463 sub modify_coursedefaults {
|
Line 20693 sub modify_coursedefaults {
|
} |
} |
my (%newdomexttool,%newexttool,%olddomexttool,%oldexttool); |
my (%newdomexttool,%newexttool,%olddomexttool,%oldexttool); |
map { $newdomexttool{$_} = 1; } &Apache::loncommon::get_env_multiple('form.domexttool'); |
map { $newdomexttool{$_} = 1; } &Apache::loncommon::get_env_multiple('form.domexttool'); |
map { $newexttool{$_} = 1; } &Apache::loncommon::get_env_multiple('form.exttool'); |
map { $newexttool{$_} = 1; } &Apache::loncommon::get_env_multiple('form.exttool'); |
if (ref($domconfig{'coursedefaults'}{'domexttool'}) eq 'HASH') { |
if (ref($domconfig{'coursedefaults'}{'domexttool'}) eq 'HASH') { |
%olddomexttool = %{$domconfig{'coursedefaults'}{'domexttool'}}; |
%olddomexttool = %{$domconfig{'coursedefaults'}{'domexttool'}}; |
} else { |
} else { |
Line 20476 sub modify_coursedefaults {
|
Line 20706 sub modify_coursedefaults {
|
} |
} |
} |
} |
if (ref($domconfig{'coursedefaults'}{'exttool'}) eq 'HASH') { |
if (ref($domconfig{'coursedefaults'}{'exttool'}) eq 'HASH') { |
%oldexttool = %{$domconfig{'coursedefaults'}{'exttool'}}; |
%oldexttool = %{$domconfig{'coursedefaults'}{'exttool'}}; |
} else { |
} else { |
foreach my $type (@types) { |
foreach my $type (@types) { |
if ($staticdefaults{'exttool'}) { |
if ($staticdefaults{'exttool'}) { |
Line 21129 sub modify_wafproxy {
|
Line 21359 sub modify_wafproxy {
|
} |
} |
} elsif ($currvalue{$item}) { |
} elsif ($currvalue{$item}) { |
$changes{$item} = 1; |
$changes{$item} = 1; |
} |
} |
} |
} |
} else { |
} else { |
if (keys(%curralias)) { |
if (keys(%curralias)) { |
Line 21137 sub modify_wafproxy {
|
Line 21367 sub modify_wafproxy {
|
} |
} |
if (keys(%currsaml)) { |
if (keys(%currsaml)) { |
$changes{'saml'} = 1; |
$changes{'saml'} = 1; |
} |
} |
if (keys(%currvalue)) { |
if (keys(%currvalue)) { |
foreach my $key (keys(%currvalue)) { |
foreach my $key (keys(%currvalue)) { |
$changes{$key} = 1; |
$changes{$key} = 1; |
Line 21147 sub modify_wafproxy {
|
Line 21377 sub modify_wafproxy {
|
if (keys(%changes)) { |
if (keys(%changes)) { |
my %defaultshash = ( |
my %defaultshash = ( |
wafproxy => \%wafproxy, |
wafproxy => \%wafproxy, |
); |
); |
my $putresult = &Apache::lonnet::put_dom('configuration',\%defaultshash, |
my $putresult = &Apache::lonnet::put_dom('configuration',\%defaultshash, |
$dom); |
$dom); |
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
Line 21163 sub modify_wafproxy {
|
Line 21393 sub modify_wafproxy {
|
$domdefaults{'waf_'.$item} = $wafproxy{$item}; |
$domdefaults{'waf_'.$item} = $wafproxy{$item}; |
} elsif (exists($domdefaults{'waf_'.$item})) { |
} elsif (exists($domdefaults{'waf_'.$item})) { |
delete($domdefaults{'waf_'.$item}); |
delete($domdefaults{'waf_'.$item}); |
} |
} |
} |
} |
} |
} |
if ($updatedomdefs) { |
if ($updatedomdefs) { |
Line 21230 sub modify_wafproxy {
|
Line 21460 sub modify_wafproxy {
|
$output .= '<li>'.&mt('Aliases deleted for hostnames').'</li>'; |
$output .= '<li>'.&mt('Aliases deleted for hostnames').'</li>'; |
} |
} |
} elsif ($item eq 'saml') { |
} elsif ($item eq 'saml') { |
my $shown; |
my $shown; |
if (ref($wafproxy{'saml'}) eq 'HASH') { |
if (ref($wafproxy{'saml'}) eq 'HASH') { |
if (keys(%{$wafproxy{'saml'}})) { |
if (keys(%{$wafproxy{'saml'}})) { |
$shown = join(', ',sort(keys(%{$wafproxy{'saml'}}))); |
$shown = join(', ',sort(keys(%{$wafproxy{'saml'}}))); |
Line 21560 sub modify_usersessions {
|
Line 21790 sub modify_usersessions {
|
if (($offload eq 'offloadoth') && (@okoffloadoth)) { |
if (($offload eq 'offloadoth') && (@okoffloadoth)) { |
$changes{'offloadoth'} = 1; |
$changes{'offloadoth'} = 1; |
} |
} |
} |
} |
} |
} |
} else { |
} else { |
if (@okoffload) { |
if (@okoffload) { |
Line 22098 sub modify_loadbalancing {
|
Line 22328 sub modify_loadbalancing {
|
} |
} |
if ($env{'form.loadbalancing_cookie_'.$i}) { |
if ($env{'form.loadbalancing_cookie_'.$i}) { |
$defaultshash{'loadbalancing'}{$balancer}{'cookie'} = 1; |
$defaultshash{'loadbalancing'}{$balancer}{'cookie'} = 1; |
if (exists($currbalancer{$balancer})) { |
if (exists($currbalancer{$balancer})) { |
unless ($currcookies{$balancer}) { |
unless ($currcookies{$balancer}) { |
$changes{'curr'}{$balancer}{'cookie'} = 1; |
$changes{'curr'}{$balancer}{'cookie'} = 1; |
} |
} |
Line 22784 function balancerChange(balnum,baltotal,
|
Line 23014 function balancerChange(balnum,baltotal,
|
END |
END |
} |
} |
|
|
|
|
sub new_spares_js { |
sub new_spares_js { |
my @sparestypes = ('primary','default'); |
my @sparestypes = ('primary','default'); |
my $types = join("','",@sparestypes); |
my $types = join("','",@sparestypes); |