Skip to content

Commit 87c17b8

Browse files
committed
Real-time collaboration: Remove post list lock icon and replace user-specific lock text when RTC is enabled.
When RTC is enabled, the post list should not show an exclusive lock icon or user-specific lock text since multiple users can collaboratively edit the same post. Merges a fix from Gutenberg: WordPress/gutenberg#76322. Developed in: WordPress/wordpress-develop#11234. See #64622. Props maxschmeling, czarate, mcsf, shekharnwagh. Built from https://develop.svn.wordpress.org/trunk@62074 git-svn-id: http://core.svn.wordpress.org/trunk@61356 1a063a9b-81f0-0310-95a4-ce76da25c4cd
1 parent f54d1d8 commit 87c17b8

File tree

9 files changed

+68
-28
lines changed

9 files changed

+68
-28
lines changed

wp-admin/css/list-tables-rtl.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,10 @@ tr.wp-locked .row-actions .trash {
636636
display: none;
637637
}
638638

639+
.wp-collaborative-editing .locked-info {
640+
display: block;
641+
}
642+
639643
#menu-locations-wrap .widefat {
640644
width: 60%;
641645
}

wp-admin/css/list-tables-rtl.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wp-admin/css/list-tables.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,10 @@ tr.wp-locked .row-actions .trash {
635635
display: none;
636636
}
637637

638+
.wp-collaborative-editing .locked-info {
639+
display: block;
640+
}
641+
638642
#menu-locations-wrap .widefat {
639643
width: 60%;
640644
}

wp-admin/css/list-tables.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wp-admin/includes/class-wp-posts-list-table.php

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,10 +1119,16 @@ public function column_title( $post ) {
11191119
$lock_holder = wp_check_post_lock( $post->ID );
11201120

11211121
if ( $lock_holder ) {
1122-
$lock_holder = get_userdata( $lock_holder );
1123-
$locked_avatar = get_avatar( $lock_holder->ID, 18 );
1124-
/* translators: %s: User's display name. */
1125-
$locked_text = esc_html( sprintf( __( '%s is currently editing' ), $lock_holder->display_name ) );
1122+
if ( get_option( 'wp_collaboration_enabled' ) ) {
1123+
$locked_avatar = '';
1124+
/* translators: Collaboration status message for a singular post in the post list. Can be any type of post. */
1125+
$locked_text = esc_html_x( 'Currently being edited', 'post list' );
1126+
} else {
1127+
$lock_holder = get_userdata( $lock_holder );
1128+
$locked_avatar = get_avatar( $lock_holder->ID, 18 );
1129+
/* translators: %s: User's display name. */
1130+
$locked_text = esc_html( sprintf( __( '%s is currently editing' ), $lock_holder->display_name ) );
1131+
}
11261132
} else {
11271133
$locked_avatar = '';
11281134
$locked_text = '';
@@ -1427,7 +1433,11 @@ public function single_row( $post, $level = 0 ) {
14271433
$lock_holder = wp_check_post_lock( $post->ID );
14281434

14291435
if ( $lock_holder ) {
1430-
$classes .= ' wp-locked';
1436+
if ( get_option( 'wp_collaboration_enabled' ) ) {
1437+
$classes .= ' wp-collaborative-editing';
1438+
} else {
1439+
$classes .= ' wp-locked';
1440+
}
14311441
}
14321442

14331443
if ( $post->post_parent ) {
@@ -1481,12 +1491,23 @@ protected function handle_row_actions( $item, $column_name, $primary ) {
14811491
$title = _draft_or_post_title();
14821492

14831493
if ( $can_edit_post && 'trash' !== $post->post_status ) {
1494+
$is_rtc_locked = get_option( 'wp_collaboration_enabled' ) && wp_check_post_lock( $post->ID );
1495+
14841496
$actions['edit'] = sprintf(
14851497
'<a href="%s" aria-label="%s">%s</a>',
14861498
get_edit_post_link( $post->ID ),
1487-
/* translators: %s: Post title. */
1488-
esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $title ) ),
1489-
__( 'Edit' )
1499+
esc_attr(
1500+
sprintf(
1501+
$is_rtc_locked
1502+
/* translators: %s: Post title. */
1503+
? __( 'Join editing &#8220;%s&#8221;', 'post list' )
1504+
/* translators: %s: Post title. */
1505+
: __( 'Edit &#8220;%s&#8221;' ),
1506+
$title
1507+
)
1508+
),
1509+
/* translators: Action link text for a singular post in the post list. Can be any type of post. */
1510+
$is_rtc_locked ? _x( 'Join', 'post list' ) : __( 'Edit' )
14901511
);
14911512

14921513
/**

wp-admin/includes/misc.php

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,7 +1133,8 @@ function _customizer_mobile_viewport_meta( $viewport_meta ) {
11331133
* @return array The Heartbeat response.
11341134
*/
11351135
function wp_check_locked_posts( $response, $data, $screen_id ) {
1136-
$checked = array();
1136+
$checked = array();
1137+
$is_rtc_enabled = (bool) get_option( 'wp_collaboration_enabled' );
11371138

11381139
if ( array_key_exists( 'wp-check-locked-posts', $data ) && is_array( $data['wp-check-locked-posts'] ) ) {
11391140
foreach ( $data['wp-check-locked-posts'] as $key ) {
@@ -1149,15 +1150,23 @@ function wp_check_locked_posts( $response, $data, $screen_id ) {
11491150
$user = get_userdata( $user_id );
11501151

11511152
if ( $user && current_user_can( 'edit_post', $post_id ) ) {
1152-
$send = array(
1153-
'name' => $user->display_name,
1154-
/* translators: %s: User's display name. */
1155-
'text' => sprintf( __( '%s is currently editing' ), $user->display_name ),
1156-
);
1157-
1158-
if ( get_option( 'show_avatars' ) ) {
1159-
$send['avatar_src'] = get_avatar_url( $user->ID, array( 'size' => 18 ) );
1160-
$send['avatar_src_2x'] = get_avatar_url( $user->ID, array( 'size' => 36 ) );
1153+
if ( $is_rtc_enabled ) {
1154+
$send = array(
1155+
/* translators: Collaboration status message for a singular post in the post list. Can be any type of post. */
1156+
'text' => _x( 'Currently being edited', 'post list' ),
1157+
'collaborative' => true,
1158+
);
1159+
} else {
1160+
$send = array(
1161+
'name' => $user->display_name,
1162+
/* translators: %s: User's display name. */
1163+
'text' => sprintf( __( '%s is currently editing' ), $user->display_name ),
1164+
);
1165+
1166+
if ( get_option( 'show_avatars' ) ) {
1167+
$send['avatar_src'] = get_avatar_url( $user->ID, array( 'size' => 18 ) );
1168+
$send['avatar_src_2x'] = get_avatar_url( $user->ID, array( 'size' => 36 ) );
1169+
}
11611170
}
11621171

11631172
$checked[ $key ] = $send;

wp-admin/js/inline-edit-post.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -613,18 +613,20 @@ $( function() {
613613
wp.heartbeat.interval( 10 );
614614
}
615615
}).on( 'heartbeat-tick.wp-check-locked-posts', function( e, data ) {
616-
var locked = data['wp-check-locked-posts'] || {};
616+
var locked = data['wp-check-locked-posts'] || {},
617+
isRtc = window._wpCollaborationEnabled,
618+
lockedClass = isRtc ? 'wp-collaborative-editing' : 'wp-locked';
617619

618620
$('#the-list tr').each( function(i, el) {
619621
var key = el.id, row = $(el), lock_data, avatar;
620622

621623
if ( locked.hasOwnProperty( key ) ) {
622-
if ( ! row.hasClass('wp-locked') ) {
624+
if ( ! row.hasClass( lockedClass ) ) {
623625
lock_data = locked[key];
624626
row.find('.column-title .locked-text').text( lock_data.text );
625627
row.find('.check-column checkbox').prop('checked', false);
626628

627-
if ( lock_data.avatar_src ) {
629+
if ( ! isRtc && lock_data.avatar_src ) {
628630
avatar = $( '<img />', {
629631
'class': 'avatar avatar-18 photo',
630632
width: 18,
@@ -635,10 +637,10 @@ $( function() {
635637
} );
636638
row.find('.column-title .locked-avatar').empty().append( avatar );
637639
}
638-
row.addClass('wp-locked');
640+
row.addClass( lockedClass );
639641
}
640-
} else if ( row.hasClass('wp-locked') ) {
641-
row.removeClass( 'wp-locked' ).find( '.locked-info span' ).empty();
642+
} else if ( row.hasClass( lockedClass ) ) {
643+
row.removeClass( lockedClass ).find( '.locked-info span' ).empty();
642644
}
643645
});
644646
}).on( 'heartbeat-send.wp-check-locked-posts', function( e, data ) {

wp-admin/js/inline-edit-post.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wp-includes/version.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*
1717
* @global string $wp_version
1818
*/
19-
$wp_version = '7.0-beta5-62073';
19+
$wp_version = '7.0-beta5-62074';
2020

2121
/**
2222
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.

0 commit comments

Comments
 (0)