--- loncom/auth/lonlogout.pm 2011/11/19 19:10:34 1.42.2.2 +++ loncom/auth/lonlogout.pm 2015/03/12 00:47:49 1.48 @@ -1,7 +1,7 @@ # The LearningOnline Network # Logout Handler # -# $Id: lonlogout.pm,v 1.42.2.2 2011/11/19 19:10:34 raeburn Exp $ +# $Id: lonlogout.pm,v 1.48 2015/03/12 00:47:49 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -70,6 +70,9 @@ sub handler { my $lonidsdir=$r->dir_config('lonIDsDir'); &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle); unlink("$lonidsdir/$handle.id"); + if (!$Apache::lonlocal::lh) { + &Apache::lonlocal::get_language_handle($r); + } my %temp=('logout' => time); &Apache::lonnet::put('email_status',\%temp); &Apache::lonnet::log($env{'user.domain'}, @@ -89,8 +92,6 @@ sub handler { return OK if $r->header_only; # -------------------------------------------------------- Menu script and info - my $windowinfo=&Apache::lonmenu::close(); - $windowinfo.=&Apache::lonnavmaps::close(); # ---------------------------------------------------------------- Get handover &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['handover']); my $switch=''; @@ -102,14 +103,28 @@ sub handler { $start_page=&Apache::loncommon::start_page('Switching Server ...', $switch); } else { - $start_page=&Apache::loncommon::start_page('Logged Out',undef, - {'no_inline_link' => 1, - 'no_nav_bar' => 1,}); + my $domain = $env{'user.domain'}; + my $headextra; + if ($env{'request.sso.login'} + && defined($r->dir_config("lonSSOUserLogoutHeadFile_$domain"))) { + if (open(my $fh,$r->dir_config("lonSSOUserLogoutHeadFile_$domain"))) { + $headextra = join('',<$fh>); + close($fh); + } + } + if ($env{'request.sso.login'} + && defined($r->dir_config('lonSSOUserLogoutHeadFile'))) { + if (open(my $fh,$r->dir_config('lonSSOUserLogoutHeadFile'))) { + $headextra.= join('',<$fh>); + close($fh); + } + } + $start_page=&Apache::loncommon::start_page('Logged Out',$headextra, + {'no_nav_bar' => 1,}); $relogmessage.='

'.&mt('Goodbye').'

' .'

'.&mt('Thank you for using LON-CAPA.').'

'; - my $domain = $env{'user.domain'}; if (!$env{'request.sso.norelogin'}) { my ($relogin_server,$login_url); if ($env{'request.sso.reloginserver'}) { @@ -120,11 +135,21 @@ sub handler { $login_url = $domdefaults{'portal_def'}; } else { my $checkloginvia = 1; - my ($lonhost,$server,$path) = + my ($lonhost,$server,$path,$isredirect) = &Apache::lonnet::choose_server($domain,$checkloginvia); if ($server && $lonhost) { $login_url = $Apache::lonnet::protocol{$lonhost}. '://'.$server.$path; + if (($path eq '') && (!$isredirect)) { + my $serverhomeID = + &Apache::lonnet::get_server_homeID($server); + my $serverhomedom = + &Apache::lonnet::host_domain($serverhomeID); + if ($serverhomedom ne $domain) { + $path = '/adm/login'; + $login_url .= $path; + } + } if ($path eq '/adm/login' && $domain ne '') { $login_url .= '?domain='.$domain; } @@ -154,21 +179,23 @@ Due to security reasons in new web brows } if ($env{'request.sso.login'} && defined($r->dir_config("lonSSOUserLogoutMessageFile_$domain"))) { - open(my $fh,$r->dir_config("lonSSOUserLogoutMessageFile_$domain")); - $relogmessage.= join('',<$fh>); + if (open(my $fh,$r->dir_config("lonSSOUserLogoutMessageFile_$domain"))) { + $relogmessage.= join('',<$fh>); + close($fh); + } } if ($env{'request.sso.login'} && defined($r->dir_config('lonSSOUserLogoutMessageFile'))) { - open(my $fh,$r->dir_config('lonSSOUserLogoutMessageFile')); - $relogmessage.= join('',<$fh>); + if (open(my $fh,$r->dir_config('lonSSOUserLogoutMessageFile'))) { + $relogmessage.= join('',<$fh>); + close($fh); + } } - } my $end_page=&Apache::loncommon::end_page(); # --------------------------------------------------------------- Screen Output $r->print(<