--- loncom/interface/domainprefs.pm 2021/09/27 03:26:24 1.387 +++ loncom/interface/domainprefs.pm 2021/11/22 22:19:58 1.390 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.387 2021/09/27 03:26:24 raeburn Exp $ +# $Id: domainprefs.pm,v 1.390 2021/11/22 22:19:58 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -3177,14 +3177,16 @@ sub lti_javascript { return $togglejs; } my (%ordered,$total,%jstext); - $total = 0; + $total = scalar(keys(%{$settings})); foreach my $item (keys(%{$settings})) { if (ref($settings->{$item}) eq 'HASH') { my $num = $settings->{$item}{'order'}; + if ($num eq '') { + $num = $total - 1; + } $ordered{$num} = $item; } } - $total = scalar(keys(%{$settings})); my @jsarray = (); foreach my $item (sort {$a <=> $b } (keys(%ordered))) { push(@jsarray,$ordered{$item}); @@ -5937,6 +5939,9 @@ sub print_lti { foreach my $item (keys(%{$settings})) { if (ref($settings->{$item}) eq 'HASH') { my $num = $settings->{$item}{'order'}; + if ($num eq '') { + $num = scalar(keys(%{$settings})); + } $ordered{$num} = $item; } } @@ -7518,7 +7523,7 @@ sub print_wafproxy { my $itemcount = 0; my $datatable; my %servers = &Apache::lonnet::internet_dom_servers($dom); - my (%othercontrol,%otherdoms,%aliases,%values,$setdom,$showdom); + my (%othercontrol,%otherdoms,%aliases,%saml,%values,$setdom,$showdom); my %lt = &wafproxy_titles(); foreach my $server (sort(keys(%servers))) { my $serverhome = &Apache::lonnet::get_server_homeID($servers{$server}); @@ -7543,6 +7548,9 @@ sub print_wafproxy { $showdom = 1; } } + if (ref($settings->{'saml'}) eq 'HASH') { + $saml{$dom} = $settings->{'saml'}; + } } } } @@ -7562,6 +7570,9 @@ sub print_wafproxy { my %config = &Apache::lonnet::get_dom('configuration',['wafproxy'],$domain); if (ref($config{'wafproxy'}) eq 'HASH') { $aliases{$domain} = $config{'wafproxy'}{'alias'}; + if (exists($config{'wafproxy'}{'saml'})) { + $saml{$domain} = $config{'wafproxy'}{'saml'}; + } foreach my $item ('remoteip','ipheader','trusted','vpnint','vpnext') { $values{$domain}{$item} = $config{'wafproxy'}{$item}; } @@ -7580,14 +7591,22 @@ sub print_wafproxy { ''.&Apache::lonnet::hostname($server).' '; if ($othercontrol{$server}) { $dom_in_effect = $othercontrol{$server}; - my $current; + my ($current,$forsaml); if (ref($aliases{$dom_in_effect}) eq 'HASH') { $current = $aliases{$dom_in_effect}{$server}; } + if (ref($saml{$dom_in_effect}) eq 'HASH') { + if ($saml{$dom_in_effect}{$server}) { + $forsaml = 1; + } + } $aliasrows .= ''. &mt('Alias').': '; if ($current) { $aliasrows .= $current; + if ($forsaml) { + $aliasrows .= ' ('.&mt('also for Shibboleth').')'; + } } else { $aliasrows .= &mt('None'); } @@ -7596,16 +7615,30 @@ sub print_wafproxy { ''.$dom_in_effect.'').')'; } else { $dom_in_effect = $dom; - my $current; + my ($current,$samlon,$samloff); + $samloff = ' checked="checked"'; if (ref($aliases{$dom}) eq 'HASH') { if ($aliases{$dom}{$server}) { $current = $aliases{$dom}{$server}; } } + if (ref($saml{$dom}) eq 'HASH') { + if ($saml{$dom}{$server}) { + $samlon = $samloff; + undef($samloff); + } + } $aliasrows .= ''. &mt('Alias').': '. ''; + 'value="'.$current.'" size="30" />'. + (' 'x2).''. + &mt('Alias used for Shibboleth').':  '. + ''; } $aliasrows .= ''; $aliasinfo{$dom_in_effect} .= $aliasrows; @@ -11717,7 +11750,10 @@ sub modify_login { $currsaml{$lonhost}{$item} = $env{'form.saml_'.$item.'_'.$lonhost}; } } else { - delete($currsaml{$lonhost}); + if ($saml{$lonhost}) { + $changes{'saml'}{$lonhost} = 1; + delete($currsaml{$lonhost}); + } } } foreach my $posshost (keys(%currsaml)) { @@ -14716,15 +14752,15 @@ sub modify_lti { map { $deletions{$_} = 1; } @todelete; } my $maxnum = $env{'form.lti_maxnum'}; - for (my $i=0; $i<=$maxnum; $i++) { + for (my $i=0; $i<$maxnum; $i++) { my $itemid = $env{'form.lti_id_'.$i}; $itemid =~ s/\D+//g; if (ref($domconfig{$action}{$itemid}) eq 'HASH') { if ($deletions{$itemid}) { $changes{$itemid} = $domconfig{$action}{$itemid}{'consumer'}; } else { - push(@items,$i); - $itemids{$i} = $itemid; + push(@items,$i); + $itemids{$i} = $itemid; } } } @@ -14732,7 +14768,7 @@ sub modify_lti { foreach my $idx (@items) { my $itemid = $itemids{$idx}; next unless ($itemid); - my $position = $env{'form.lti_pos_'.$idx}; + my $position = $env{'form.lti_pos_'.$itemid}; $position =~ s/\D+//g; if ($position ne '') { $allpos[$position] = $itemid; @@ -14995,7 +15031,7 @@ sub modify_lti { if (ref($confhash{$itemid}) ne 'HASH') { $resulttext .= '
  • '.&mt('Deleted: [_1]',$changes{$itemid}).'
  • '; } else { - $resulttext .= '
  • '.$confhash{$itemid}{'consumer'}.'