WordPress Version: .30
/**
* Outputs the HTML for the notice to say that someone else is editing or has taken over editing of this post.
*
* @since 2.8.5
* @return none
*/
function _admin_notice_post_locked()
{
if (!$post = get_post()) {
return;
}
$user = null;
if ($user_id = wp_check_post_lock($post->ID)) {
$user = get_userdata($user_id);
}
if ($user) {
/**
* Filter whether to show the post locked dialog.
*
* Returning a falsey value to the filter will short-circuit displaying the dialog.
*
* @since 3.6.0
*
* @param bool $display Whether to display the dialog. Default true.
* @param WP_User|bool $user WP_User object on success, false otherwise.
*/
if (!apply_filters('show_post_locked_dialog', true, $post, $user)) {
return;
}
$locked = true;
} else {
$locked = false;
}
if ($locked && ($sendback = wp_get_referer()) && false === strpos($sendback, 'post.php') && false === strpos($sendback, 'post-new.php')) {
$sendback_text = __('Go back');
} else {
$sendback = admin_url('edit.php');
if ('post' != $post->post_type) {
$sendback = add_query_arg('post_type', $post->post_type, $sendback);
}
$sendback_text = get_post_type_object($post->post_type)->labels->all_items;
}
$hidden = $locked ? '' : ' hidden';
?>
<div id="post-lock-dialog" class="notification-dialog-wrap<?php
echo $hidden;
?>">
<div class="notification-dialog-background"></div>
<div class="notification-dialog">
<?php
if ($locked) {
if (get_post_type_object($post->post_type)->public) {
$preview_link = set_url_scheme(add_query_arg('preview', 'true', get_permalink($post->ID)));
if ('publish' == $post->post_status || $user->ID != $post->post_author) {
// Latest content is in autosave
$nonce = wp_create_nonce('post_preview_' . $post->ID);
$preview_link = add_query_arg(array('preview_id' => $post->ID, 'preview_nonce' => $nonce), $preview_link);
}
} else {
$preview_link = '';
}
/** This filter is documented in wp-admin/includes/meta-boxes.php */
$preview_link = apply_filters('preview_post_link', $preview_link, $post);
/**
* Filter whether to allow the post lock to be overridden.
*
* Returning a falsey value to the filter will disable the ability
* to override the post lock.
*
* @since 3.6.0
*
* @param bool $override Whether to allow overriding post locks. Default true.
* @param WP_Post $post Post object.
* @param WP_User $user User object.
*/
$override = apply_filters('override_post_lock', true, $post, $user);
$tab_last = $override ? '' : ' wp-tab-last';
?>
<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
_e('This content is currently locked.');
if ($override) {
printf(' ' . __('If you take over, %s will be blocked from continuing to edit.'), esc_html($user->display_name));
}
?>
</p>
<?php
/**
* Fires inside the post locked dialog before the buttons are displayed.
*
* @since 3.6.0
*
* @param WP_Post $post Post object.
*/
do_action('post_locked_dialog', $post);
?>
<p>
<a class="button" href="<?php
echo esc_url($sendback);
?>"><?php
echo $sendback_text;
?></a>
<?php
if ($preview_link) {
?>
<a class="button<?php
echo $tab_last;
?>" href="<?php
echo esc_url($preview_link);
?>"><?php
_e('Preview');
?></a>
<?php
}
// Allow plugins to prevent some users overriding the post lock
if ($override) {
?>
<a class="button button-primary wp-tab-last" href="<?php
echo esc_url(add_query_arg('get-post-lock', '1', wp_nonce_url(get_edit_post_link($post->ID, 'url'), 'lock-post_' . $post->ID)));
?>"><?php
_e('Take over');
?></a>
<?php
}
?>
</p>
</div>
<?php
} else {
?>
<div class="post-taken-over">
<div class="post-locked-avatar"></div>
<p class="wp-tab-first" tabindex="0">
<span class="currently-editing"></span><br />
<span class="locked-saving hidden"><img src="<?php
echo esc_url(admin_url('images/spinner-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
/**
* Fires inside the dialog displayed when a user has lost the post lock.
*
* @since 3.6.0
*
* @param WP_Post $post Post object.
*/
do_action('post_lock_lost_dialog', $post);
?>
<p><a class="button button-primary wp-tab-last" href="<?php
echo esc_url($sendback);
?>"><?php
echo $sendback_text;
?></a></p>
</div>
<?php
}
?>
</div>
</div>
<?php
}