--- loncom/interface/domainprefs.pm 2022/02/27 02:54:35 1.160.6.118.2.8 +++ loncom/interface/domainprefs.pm 2022/08/30 20:03:05 1.160.6.118.2.9 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.160.6.118.2.8 2022/02/27 02:54:35 raeburn Exp $ +# $Id: domainprefs.pm,v 1.160.6.118.2.9 2022/08/30 20:03:05 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1471,7 +1471,7 @@ sub print_login { '<table><tr><th>'.$choices{'hostid'}.'</th>'. '<th>'.$choices{'samllanding'}.'</th>'. '<th>'.$choices{'samloptions'}.'</th></tr>'."\n"; - my (%saml,%samltext,%samlimg,%samlalt,%samlurl,%samltitle,%samlnotsso,%styleon,%styleoff); + my (%saml,%samltext,%samlimg,%samlalt,%samlurl,%samltitle,%samlwindow,%samlnotsso,%styleon,%styleoff); foreach my $lonhost (keys(%domservers)) { $samlurl{$lonhost} = '/adm/sso'; $styleon{$lonhost} = 'display:none'; @@ -1486,6 +1486,7 @@ sub print_login { $samlalt{$lonhost} = $settings->{'saml'}{$lonhost}{'alt'}; $samlurl{$lonhost} = $settings->{'saml'}{$lonhost}{'url'}; $samltitle{$lonhost} = $settings->{'saml'}{$lonhost}{'title'}; + $samlwindow{$lonhost} = $settings->{'saml'}{$lonhost}{'window'}; $samlnotsso{$lonhost} = $settings->{'saml'}{$lonhost}{'notsso'}; $styleon{$lonhost} = ''; $styleoff{$lonhost} = 'display:none'; @@ -1503,6 +1504,12 @@ sub print_login { $samlon = $samloff; $samloff = ' '; } + my $samlwinon = ''; + my $samlwinoff = ' checked="checked"'; + if ($samlwindow{$lonhost}) { + $samlwinon = $samlwinoff; + $samlwinoff = ''; + } my $css_class = $itemcount%2?' class="LC_odd_row"':''; $datatable .= '<tr'.$css_class.'><td><span class="LC_nobreak">'.$domservers{$lonhost}.'</span></td>'. '<td><span class="LC_nobreak"><label><input type="radio" name="saml_'.$lonhost.'"'.$samloff. @@ -1512,12 +1519,10 @@ sub print_login { 'onclick="toggleSamlOptions(this.form,'."'$lonhost'".');" value="1" />'. &mt('Yes').'</label></span></td>'. '<td id="samloptionson_'.$lonhost.'" style="'.$styleon{$lonhost}.'" width="100%">'. - '<table><tr><th colspan="5" align="center">'.&mt('SSO').'</th><th align="center">'. - '<span class="LC_nobreak">'.&mt('Non-SSO').'</span></th></tr>'. + '<table width="100%"><tr><th colspan="3" align="center">'.&mt('SSO').'</th></tr>'. '<tr><th>'.&mt('Text').'</th><th>'.&mt('Image').'</th>'. - '<th>'.&mt('Alt Text').'</th><th>'.&mt('URL').'</th>'. - '<th>'.&mt('Tool Tip').'</th><th>'.&mt('Text').'</th></tr>'. - '<tr'.$css_class.'><td><input type="text" name="saml_text_'.$lonhost.'" size="8" value="'. + '<th>'.&mt('Alt Text').'</th></tr>'. + '<tr'.$css_class.'><td><input type="text" name="saml_text_'.$lonhost.'" size="20" value="'. $samltext{$lonhost}.'" /></td><td>'; if ($samlimg{$lonhost}) { $datatable .= '<img src="'.$samlimg{$lonhost}.'" /><br />'. @@ -1534,13 +1539,21 @@ sub print_login { $datatable .= '<input type="file" name="saml_img_'.$lonhost.'" />'; } $datatable .= '</td>'. - '<td><input type="text" name="saml_alt_'.$lonhost.'" size="20" '. - 'value="'.$samlalt{$lonhost}.'" /></td>'. - '<td><input type="text" name="saml_url_'.$lonhost.'" size="8" '. + '<td><input type="text" name="saml_alt_'.$lonhost.'" size="25" '. + 'value="'.$samlalt{$lonhost}.'" /></td></tr></table><br />'. + '<table width="100%"><tr><th colspan="3" align="center">'.&mt('SSO').'</th><th align="center">'. + '<span class="LC_nobreak">'.&mt('Non-SSO').'</span></th></tr>'. + '<tr><th>'.&mt('URL').'</th><th>'.&mt('Tool Tip').'</th>'. + '<th>'.&mt('Pop-up if iframe').'</th><th>'.&mt('Text').'</th></tr>'. + '<tr'.$css_class.'>'. + '<td><input type="text" name="saml_url_'.$lonhost.'" size="30" '. 'value="'.$samlurl{$lonhost}.'" /></td>'. - '<td><textarea name="saml_title_'.$lonhost.'" rows="3" cols="15">'. + '<td><textarea name="saml_title_'.$lonhost.'" rows="3" cols="20">'. $samltitle{$lonhost}.'</textarea></td>'. - '<td><input type="text" name="saml_notsso_'.$lonhost.'" size="8" '. + '<td><label><input type="radio" name="saml_window_'.$lonhost.'" value=""'.$samlwinoff.'>'. + &mt('No').'</label>'.(' 'x2).'<label><input type="radio" '. + 'name="saml_window_'.$lonhost.'" value="1"'.$samlwinon.'>'.&mt('Yes').'</label></td>'. + '<td><input type="text" name="saml_notsso_'.$lonhost.'" size="12" '. 'value="'.$samlnotsso{$lonhost}.'" /></td></tr>'. '</table></td>'. '<td id="samloptionsoff_'.$lonhost.'" style="'.$styleoff{$lonhost}.'" width="100%"> </td></tr>'; @@ -10004,7 +10017,7 @@ sub modify_login { my ($r,$dom,$confname,$lastactref,%domconfig) = @_; my ($resulttext,$errors,$colchgtext,%changes,%colchanges,%newfile,%newurl, %curr_loginvia,%loginhash,@currlangs,@newlangs,$addedfile,%title,@offon, - %currsaml,%saml,%samltext,%samlimg,%samlalt,%samlurl,%samltitle,%samlnotsso); + %currsaml,%saml,%samltext,%samlimg,%samlalt,%samlurl,%samltitle,%samlwindow,%samlnotsso); %title = ( coursecatalog => 'Display course catalog', adminmail => 'Display administrator E-mail address', helpdesk => 'Display "Contact Helpdesk" link', @@ -10028,6 +10041,7 @@ sub modify_login { $samlalt{$lonhost} = $domconfig{login}{'saml'}{$lonhost}{'alt'}; $samlimg{$lonhost} = $domconfig{login}{'saml'}{$lonhost}{'img'}; $samltitle{$lonhost} = $domconfig{login}{'saml'}{$lonhost}{'title'}; + $samlwindow{$lonhost} = $domconfig{login}{'saml'}{$lonhost}{'window'}; $samlnotsso{$lonhost} = $domconfig{login}{'saml'}{$lonhost}{'notsso'}; } } @@ -10285,10 +10299,13 @@ sub modify_login { if ($env{'form.saml_img_'.$lonhost.'.filename'}) { push(@newsamlimgs,$lonhost); } - foreach my $item ('text','alt','url','title','notsso') { + foreach my $item ('text','alt','url','title','window','notsso') { $env{'form.saml_'.$item.'_'.$lonhost} =~ s/^\s+|\s+$//g; } if ($saml{$lonhost}) { + if ($env{'form.saml_window_'.$lonhost} ne '1') { + $env{'form.saml_window_'.$lonhost} = ''; + } if (grep(/^\Q$lonhost\E$/,@delsamlimg)) { #FIXME Need to obsolete published image delete($currsaml{$lonhost}{'img'}); @@ -10306,13 +10323,16 @@ sub modify_login { if ($env{'form.saml_title_'.$lonhost} ne $samltitle{$lonhost}) { $changes{'saml'}{$lonhost} = 1; } + if ($env{'form.saml_window_'.$lonhost} ne $samlwindow{$lonhost}) { + $changes{'saml'}{$lonhost} = 1; + } if ($env{'form.saml_notsso_'.$lonhost} ne $samlnotsso{$lonhost}) { $changes{'saml'}{$lonhost} = 1; } } else { $changes{'saml'}{$lonhost} = 1; } - foreach my $item ('text','alt','url','title','notsso') { + foreach my $item ('text','alt','url','title','window','notsso') { $currsaml{$lonhost}{$item} = $env{'form.saml_'.$item.'_'.$lonhost}; } } else { @@ -10513,19 +10533,22 @@ sub modify_login { alt => 'Alt text for button image', url => 'SSO URL', title => 'Tooltip for SSO link', + window => 'Pop-up window if iframe', notsso => 'Text for non-SSO log-in', ); foreach my $lonhost (sort(keys(%{$changes{$item}}))) { if (ref($currsaml{$lonhost}) eq 'HASH') { $resulttext .= '<li>'.&mt("$title{$item} in use for [_1]","<b>$lonhost</b>"). '<ul>'; - foreach my $key ('text','img','alt','url','title','notsso') { + foreach my $key ('text','img','alt','url','title','window','notsso') { if ($currsaml{$lonhost}{$key} eq '') { $resulttext .= '<li>'.&mt("$notlt{$key} not in use").'</li>'; } else { my $value = "'$currsaml{$lonhost}{$key}'"; if ($key eq 'img') { $value = '<img src="'.$currsaml{$lonhost}{$key}.'" />'; + } elsif ($key eq 'window') { + $value = 'On'; } $resulttext .= '<li>'.&mt("$notlt{$key} set to: [_1]", $value).'</li>';