Make WordPress Core

Changeset 62074


Ignore:
Timestamp:
03/20/2026 03:13:44 PM (8 days 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.