Logged out warnings:

- Replace the Close button with an always visible "X" icon in the top/right corner.
- Check if the user is still logged in every 3 min. by default.
- Add 'wp_auth_check_interval' filter so the interval can be set from PHP.
See #23295.

git-svn-id: http://core.svn.wordpress.org/trunk@24695 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Andrew Ozz 2013-07-12 23:32:32 +00:00
parent 57a8322792
commit b96efc779a
5 changed files with 44 additions and 40 deletions

View File

@ -7187,7 +7187,7 @@ body.interim-login {
.interim-login #login { .interim-login #login {
padding: 0; padding: 0;
margin: 25px auto 20px; margin: 5px auto 20px;
} }
.interim-login.login h1 a { .interim-login.login h1 a {

View File

@ -24,10 +24,10 @@
overflow: hidden; overflow: hidden;
top: 40px; top: 40px;
bottom: 20px; bottom: 20px;
max-height: 435px; max-height: 415px;
width: 380px; width: 380px;
margin: 0 0 0 -190px; margin: 0 0 0 -190px;
padding: 0; padding: 30px 0 0;
background-color: #fbfbfb; background-color: #fbfbfb;
-webkit-border-radius: 3px; -webkit-border-radius: 3px;
border-radius: 3px; border-radius: 3px;
@ -40,7 +40,7 @@
} }
#wp-auth-check-wrap #wp-auth-check-form { #wp-auth-check-wrap #wp-auth-check-form {
background: url('../images/wpspin-2x.gif') no-repeat center center; background: url(../images/wpspin-2x.gif) no-repeat center center;
background-size: 16px 16px; background-size: 16px 16px;
height: 100%; height: 100%;
} }
@ -52,10 +52,19 @@
} }
#wp-auth-check-wrap .wp-auth-check-close { #wp-auth-check-wrap .wp-auth-check-close {
bottom: 10px;
display: none;
position: absolute; position: absolute;
right: 30px; top: 8px;
right: 8px;
height: 14px;
width: 14px;
cursor: pointer;
background-image: url(../images/uploader-icons.png);
background-repeat: no-repeat;
background-position: -100px 0;
}
#wp-auth-check-wrap .wp-auth-check-close:focus {
outline: 1px dotted #888;
} }
#wp-auth-check-wrap .wp-auth-fallback-expired { #wp-auth-check-wrap .wp-auth-fallback-expired {
@ -65,7 +74,7 @@
#wp-auth-check-wrap .wp-auth-fallback { #wp-auth-check-wrap .wp-auth-fallback {
font-size: 14px; font-size: 14px;
line-height: 21px; line-height: 21px;
padding: 10px 25px; padding: 0 25px;
display: none; display: none;
} }
@ -74,3 +83,12 @@
display: block; display: block;
} }
@media print,
(-o-min-device-pixel-ratio: 5/4),
(-webkit-min-device-pixel-ratio: 1.25),
(min-resolution: 120dpi) {
#wp-auth-check-wrap .wp-auth-check-close {
background-image: url(../images/uploader-icons-2x.png);
background-size: 134px 15px;
}
}

View File

@ -3943,6 +3943,7 @@ function wp_auth_check_html() {
<div id="wp-auth-check-wrap" class="<?php echo $wrap_class; ?>"> <div id="wp-auth-check-wrap" class="<?php echo $wrap_class; ?>">
<div id="wp-auth-check-bg"></div> <div id="wp-auth-check-bg"></div>
<div id="wp-auth-check"> <div id="wp-auth-check">
<div class="wp-auth-check-close" tabindex="0" title="<?php esc_attr_e('Close'); ?>"></div>
<?php <?php
if ( $same_domain ) { if ( $same_domain ) {
@ -3957,7 +3958,6 @@ function wp_auth_check_html() {
<p><a href="<?php echo esc_url( $login_url ); ?>" target="_blank"><?php _e('Please log in again.'); ?></a> <p><a href="<?php echo esc_url( $login_url ); ?>" target="_blank"><?php _e('Please log in again.'); ?></a>
<?php _e('The login page will open in a new window. After logging in you can close it and return to this page.'); ?></p> <?php _e('The login page will open in a new window. After logging in you can close it and return to this page.'); ?></p>
</div> </div>
<p class="wp-auth-check-close"><a href="#" class="button button-primary"><?php _e('Close'); ?></a></p>
</div> </div>
</div> </div>
<?php <?php
@ -3974,9 +3974,9 @@ function wp_auth_check( $response, $data ) {
// If the user is logged in and we are outside the login grace period, bail. // If the user is logged in and we are outside the login grace period, bail.
if ( is_user_logged_in() && empty( $GLOBALS['login_grace_period'] ) ) if ( is_user_logged_in() && empty( $GLOBALS['login_grace_period'] ) )
return $response; return array_merge( $response, array( 'wp-auth-check' => '1' ) );
return array_merge( $response, array( 'wp-auth-check' => '1' ) ); return array_merge( $response, array( 'wp-auth-check' => 'show' ) );
} }
/** /**
@ -4018,4 +4018,4 @@ function _canonical_charset( $charset ) {
return 'ISO-8859-1'; return 'ISO-8859-1';
return $charset; return $charset;
} }

View File

@ -1,6 +1,6 @@
// Interim login dialog // Interim login dialog
(function($){ (function($){
var wrap, check, scheduleTimeout; var wrap, check, next;
function show() { function show() {
var parent = $('#wp-auth-check'), form = $('#wp-auth-check-form'), noframe = wrap.find('.wp-auth-fallback-expired'), frame, loaded = false; var parent = $('#wp-auth-check'), form = $('#wp-auth-check-form'), noframe = wrap.find('.wp-auth-fallback-expired'), frame, loaded = false;
@ -32,7 +32,7 @@
if ( body && body.hasClass('interim-login-success') ) if ( body && body.hasClass('interim-login-success') )
hide(); hide();
else else
parent.css( 'max-height', height + 60 + 'px' ); parent.css( 'max-height', height + 40 + 'px' );
} else if ( ! body || ! body.length ) { } else if ( ! body || ! body.length ) {
// Catch "silent" iframe origin exceptions in WebKit after another page is loaded in the iframe // Catch "silent" iframe origin exceptions in WebKit after another page is loaded in the iframe
wrap.addClass('fallback'); wrap.addClass('fallback');
@ -74,49 +74,34 @@
} }
wrap.fadeOut( 200, function() { wrap.fadeOut( 200, function() {
wrap.addClass('hidden').css('display', '').find('.wp-auth-check-close').css('display', ''); wrap.addClass('hidden').css('display', '');
$('#wp-auth-check-frame').remove(); $('#wp-auth-check-frame').remove();
}); });
} }
function schedule() { function schedule() {
check = false; var interval = parseInt( window.authcheckL10n.interval, 10 ) || 180; // in seconds, default 3 min.
window.clearTimeout( scheduleTimeout ); next = ( new Date() ).getTime() + ( interval * 1000 );
scheduleTimeout = window.setTimeout( function(){ check = 1; }, 300000 ); // 5 min.
} }
$( document ).on( 'heartbeat-tick.wp-auth-check', function( e, data ) { $( document ).on( 'heartbeat-tick.wp-auth-check', function( e, data ) {
if ( check === 2 ) if ( data['wp-auth-check'] ) {
schedule(); schedule();
if ( data['wp-auth-check'] && wrap.hasClass('hidden') ) { if ( data['wp-auth-check'] == 'show' && wrap.hasClass('hidden') )
show(); show();
} else if ( ! data['wp-auth-check'] && ! wrap.hasClass('hidden') ) { else if ( data['wp-auth-check'] != 'show' && ! wrap.hasClass('hidden') )
hide(); hide();
} }
}).on( 'heartbeat-send.wp-auth-check', function( e, data ) {
if ( ( new Date() ).getTime() > next )
data['wp-auth-check'] = 1;
}).ready( function() { }).ready( function() {
schedule(); schedule();
wrap = $('#wp-auth-check-wrap'); wrap = $('#wp-auth-check-wrap');
wrap.find('.wp-auth-check-close').on( 'click', function(e) { wrap.find('.wp-auth-check-close').on( 'click', function(e) {
hide(); hide();
}); });
// Bind later
$( document ).on( 'heartbeat-send.wp-auth-check', function( e, data ) {
var i, empty = true;
// Check if something is using heartbeat. If yes, trigger the logged out check too.
for ( i in data ) {
if ( data.hasOwnProperty( i ) ) {
empty = false;
break;
}
}
if ( check || ! empty )
data['wp-auth-check'] = 1;
if ( check )
check = 2;
});
}); });
}(jQuery)); }(jQuery));

View File

@ -113,6 +113,7 @@ function wp_default_scripts( &$scripts ) {
$scripts->add( 'wp-auth-check', "/wp-includes/js/wp-auth-check$suffix.js", array('heartbeat'), false, 1 ); $scripts->add( 'wp-auth-check', "/wp-includes/js/wp-auth-check$suffix.js", array('heartbeat'), false, 1 );
did_action( 'init' ) && $scripts->localize( 'wp-auth-check', 'authcheckL10n', array( did_action( 'init' ) && $scripts->localize( 'wp-auth-check', 'authcheckL10n', array(
'beforeunload' => __('Your session has expired. You can log in again from this page or go to the login page.'), 'beforeunload' => __('Your session has expired. You can log in again from this page or go to the login page.'),
'interval' => apply_filters( 'wp_auth_check_interval', 3 * MINUTE_IN_SECONDS ),
) ); ) );
$scripts->add( 'wp-lists', "/wp-includes/js/wp-lists$suffix.js", array( 'wp-ajax-response', 'jquery-color' ), false, 1 ); $scripts->add( 'wp-lists', "/wp-includes/js/wp-lists$suffix.js", array( 'wp-ajax-response', 'jquery-color' ), false, 1 );