Post locks:
- Show 'Saving revision...' while autosaving after a post has been taken over. Change to 'Your latest changes were saved as a revision.' when autosave completes. - Make sure a user exists before using $user->display_name. - Add 'post_lock_text' action for extending the message text. git-svn-id: http://core.svn.wordpress.org/trunk@24042 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
2a4474f4de
commit
d2a8f064aa
|
@ -3399,6 +3399,7 @@ td.plugin-title p {
|
|||
width: 450px;
|
||||
margin-left: -225px;
|
||||
background: #fff;
|
||||
line-height: 1.5;
|
||||
z-index: 1000005;
|
||||
}
|
||||
|
||||
|
@ -3425,14 +3426,22 @@ td.plugin-title p {
|
|||
|
||||
#notification-dialog .post-locked-avatar {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
margin: 0 20px 20px 0;
|
||||
}
|
||||
|
||||
#notification-dialog .currently-editing {
|
||||
margin-bottom: 20px;
|
||||
#notification-dialog .wp-tab-first {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
#notification-dialog .locked-saving img {
|
||||
float: left;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
#notification-dialog-wrap.saving .locked-saving,
|
||||
#notification-dialog-wrap.saved .locked-saved {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
11.1 - Custom Fields
|
||||
|
|
|
@ -574,12 +574,11 @@ function wp_check_locked_posts( $response, $data, $screen_id ) {
|
|||
$post_id = (int) substr( $key, 5 );
|
||||
|
||||
if ( current_user_can( 'edit_post', $post_id ) && ( $user_id = wp_check_post_lock( $post_id ) ) && ( $user = get_userdata( $user_id ) ) ) {
|
||||
$send = array();
|
||||
$send = array( 'text' => sprintf( __( '%s is currently editing' ), $user->display_name ) );
|
||||
|
||||
if ( ( $avatar = get_avatar( $user->ID, 18 ) ) && preg_match( "|src='([^']+)'|", $avatar, $matches ) )
|
||||
$send['avatar_src'] = $matches[1];
|
||||
|
||||
$send['text'] = sprintf( __( '%s is currently editing' ), $user->display_name );
|
||||
$checked[$key] = $send;
|
||||
}
|
||||
}
|
||||
|
@ -608,9 +607,7 @@ function wp_refresh_post_lock( $response, $data, $screen_id ) {
|
|||
if ( !current_user_can('edit_post', $post_id) )
|
||||
return $response;
|
||||
|
||||
if ( $user_id = wp_check_post_lock( $post_id ) ) {
|
||||
$user = get_userdata( $user_id );
|
||||
|
||||
if ( ( $user_id = wp_check_post_lock( $post_id ) ) && ( $user = get_userdata( $user_id ) ) ) {
|
||||
$error = array(
|
||||
'text' => sprintf( __( '%s has taken over and is currently editing.' ), $user->display_name )
|
||||
);
|
||||
|
|
|
@ -1197,8 +1197,7 @@ function _admin_notice_post_locked() {
|
|||
if ( ! $post = get_post() )
|
||||
return;
|
||||
|
||||
if ( $user = wp_check_post_lock( $post->ID ) ) {
|
||||
$user = get_userdata( $user );
|
||||
if ( ( $user_id = wp_check_post_lock( $post->ID ) ) && ( $user = get_userdata( $user_id ) ) ) {
|
||||
$locked = apply_filters( 'show_post_locked_dialog', true, $post, $user );
|
||||
} else {
|
||||
$locked = false;
|
||||
|
@ -1229,6 +1228,7 @@ function _admin_notice_post_locked() {
|
|||
<div class="post-locked-message">
|
||||
<div class="post-locked-avatar"><?php echo get_avatar( $user->ID, 64 ); ?></div>
|
||||
<p class="currently-editing wp-tab-first" tabindex="0"><?php esc_html_e( sprintf( __( 'This content is currently locked. If you take over, %s will be blocked from continuing to edit.' ), $user->display_name ) ); ?></p>
|
||||
<?php do_action( 'post_lock_text', $post ); ?>
|
||||
<p>
|
||||
<a class="button" href="<?php echo esc_url( wp_get_referer() ); ?>"><?php _e('Go back'); ?></a>
|
||||
<a class="button<?php echo $tab_last; ?>" href="<?php echo esc_url( $preview_link ); ?>"><?php _e('Preview'); ?></a>
|
||||
|
@ -1249,7 +1249,12 @@ function _admin_notice_post_locked() {
|
|||
?>
|
||||
<div class="post-taken-over">
|
||||
<div class="post-locked-avatar"></div>
|
||||
<p class="currently-editing wp-tab-first" tabindex="0"></p>
|
||||
<p class="wp-tab-first" tabindex="0">
|
||||
<span class="currently-editing"></span><br>
|
||||
<span class="locked-saving hidden"><img src="images/wpspin_light-2x.gif" width="16" height="16" /> <?php _e('Saving revision...'); ?></span>
|
||||
<span class="locked-saved hidden"><?php _e('Your latest changes were saved as a revision.'); ?></span>
|
||||
</p>
|
||||
<?php do_action( 'post_lock_text', $post ); ?>
|
||||
<p><a class="button button-primary wp-tab-last" href="<?php echo esc_url( admin_url('edit.php') ); ?>"><?php _e('Go to All Posts'); ?></a></p>
|
||||
</div>
|
||||
<?php
|
||||
|
|
|
@ -277,15 +277,26 @@ $(document).on( 'heartbeat-tick.refresh-lock', function( e, data ) {
|
|||
wrap = $('#notification-dialog-wrap');
|
||||
|
||||
if ( wrap.length && ! wrap.is(':visible') ) {
|
||||
if ( typeof autosave == 'function' )
|
||||
if ( typeof autosave == 'function' ) {
|
||||
$(document).on('autosave-disable-buttons.post-lock', function() {
|
||||
wrap.addClass('saving');
|
||||
}).on('autosave-enable-buttons.post-lock', function() {
|
||||
wrap.removeClass('saving').addClass('saved');
|
||||
window.onbeforeunload = null;
|
||||
});
|
||||
|
||||
// Save the latest changes and disable
|
||||
autosave();
|
||||
autosave = function(){};
|
||||
}
|
||||
|
||||
if ( received.lock_error.avatar_src ) {
|
||||
avatar = $('<img class="avatar avatar-64 photo" width="64" height="64" />').attr( 'src', received.lock_error.avatar_src.replace(/&/g, '&') );
|
||||
wrap.find('div.post-locked-avatar').empty().append( avatar );
|
||||
}
|
||||
|
||||
wrap.show().find('p.currently-editing').text( received.lock_error.text ).focus();
|
||||
wrap.show().find('.currently-editing').text( received.lock_error.text );
|
||||
wrap.find('.wp-tab-first').focus();
|
||||
}
|
||||
} else if ( received.new_lock ) {
|
||||
$('#active_post_lock').val( received.new_lock );
|
||||
|
|
|
@ -227,6 +227,7 @@ function autosave_loading() {
|
|||
}
|
||||
|
||||
function autosave_enable_buttons() {
|
||||
jQuery(document).trigger('autosave-enable-buttons');
|
||||
if ( ! wp.heartbeat.connectionLost ) {
|
||||
// delay that a bit to avoid some rare collisions while the DOM is being updated.
|
||||
setTimeout(function(){
|
||||
|
@ -238,6 +239,7 @@ function autosave_enable_buttons() {
|
|||
}
|
||||
|
||||
function autosave_disable_buttons() {
|
||||
jQuery(document).trigger('autosave-disable-buttons');
|
||||
jQuery('#submitpost').find(':button, :submit').prop('disabled', true);
|
||||
// Re-enable 5 sec later. Just gives autosave a head start to avoid collisions.
|
||||
setTimeout( autosave_enable_buttons, 5000 );
|
||||
|
|
Loading…
Reference in New Issue