Make WordPress Core

Changeset 62074


Ignore:
Timestamp:
03/20/2026 03:13:44 PM (6 months ago)
Author:
ellatrix
Message:

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: https://github.com/WordPress/gutenberg/pull/76322.

Developed in: https://github.com/WordPress/wordpress-develop/pull/11234.

See #64622.
Props maxschmeling, czarate, mcsf, shekharnwagh.

Location:
trunk/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/js/_enqueues/admin/inline-edit-post.js

    r59134 r62074  
    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) {
     
    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',
     
    636638                                        row.find('.column-title .locked-avatar').empty().append( avatar );
    637639                                }
    638                                 row.addClass('wp-locked');
    639                         }
    640                 } else if ( row.hasClass('wp-locked') ) {
    641                         row.removeClass( 'wp-locked' ).find( '.locked-info span' ).empty();
     640                                row.addClass( lockedClass );
     641                        }
     642                } else if ( row.hasClass( lockedClass ) ) {
     643                        row.removeClass( lockedClass ).find( '.locked-info span' ).empty();
    642644                }
    643645        });
  • trunk/src/wp-admin/css/list-tables.css

    r61869 r62074  
    636636}
    637637
     638.wp-collaborative-editing .locked-info {
     639        display: block;
     640}
     641
    638642#menu-locations-wrap .widefat {
    639643        width: 60%;
  • trunk/src/wp-admin/includes/class-wp-posts-list-table.php

    r61738 r62074  
    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 = '';
     
    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
     
    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
  • trunk/src/wp-admin/includes/misc.php

    r61644 r62074  
    11341134 */
    11351135function 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'] ) ) {
     
    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
Note: See TracChangeset for help on using the changeset viewer.