diff -r c7c34916027a -r 177826044cd9 wp/wp-admin/includes/revision.php --- a/wp/wp-admin/includes/revision.php Mon Oct 14 18:06:33 2019 +0200 +++ b/wp/wp-admin/includes/revision.php Mon Oct 14 18:28:13 2019 +0200 @@ -20,38 +20,45 @@ * Or, false on failure. */ function wp_get_revision_ui_diff( $post, $compare_from, $compare_to ) { - if ( ! $post = get_post( $post ) ) + if ( ! $post = get_post( $post ) ) { return false; + } if ( $compare_from ) { - if ( ! $compare_from = get_post( $compare_from ) ) + if ( ! $compare_from = get_post( $compare_from ) ) { return false; + } } else { // If we're dealing with the first revision... $compare_from = false; } - if ( ! $compare_to = get_post( $compare_to ) ) + if ( ! $compare_to = get_post( $compare_to ) ) { return false; + } // If comparing revisions, make sure we're dealing with the right post parent. // The parent post may be a 'revision' when revisions are disabled and we're looking at autosaves. - if ( $compare_from && $compare_from->post_parent !== $post->ID && $compare_from->ID !== $post->ID ) + if ( $compare_from && $compare_from->post_parent !== $post->ID && $compare_from->ID !== $post->ID ) { return false; - if ( $compare_to->post_parent !== $post->ID && $compare_to->ID !== $post->ID ) + } + if ( $compare_to->post_parent !== $post->ID && $compare_to->ID !== $post->ID ) { return false; + } if ( $compare_from && strtotime( $compare_from->post_date_gmt ) > strtotime( $compare_to->post_date_gmt ) ) { - $temp = $compare_from; + $temp = $compare_from; $compare_from = $compare_to; - $compare_to = $temp; + $compare_to = $temp; } // Add default title if title field is empty - if ( $compare_from && empty( $compare_from->post_title ) ) + if ( $compare_from && empty( $compare_from->post_title ) ) { $compare_from->post_title = __( '(no title)' ); - if ( empty( $compare_to->post_title ) ) + } + if ( empty( $compare_to->post_title ) ) { $compare_to->post_title = __( '(no title)' ); + } $return = array(); @@ -76,7 +83,7 @@ $content_to = apply_filters( "_wp_post_revision_field_{$field}", $compare_to->$field, $field, $compare_to, 'to' ); $args = array( - 'show_split_view' => true + 'show_split_view' => true, ); /** @@ -104,14 +111,26 @@ // It's a better user experience to still show the Title, even if it didn't change. // No, you didn't see this. $diff = ''; - $diff .= ''; + + // In split screen mode, show the title before/after side by side. + if ( true === $args['show_split_view'] ) { + $diff .= ''; + } else { + $diff .= ''; + + // In single column mode, only show the title once if unchanged. + if ( $compare_from->post_title !== $compare_to->post_title ) { + $diff .= ''; + } + } + $diff .= ''; $diff .= '
' . esc_html( $compare_from->post_title ) . '' . esc_html( $compare_to->post_title ) . '' . esc_html( $compare_from->post_title ) . '' . esc_html( $compare_to->post_title ) . '' . esc_html( $compare_from->post_title ) . '
' . esc_html( $compare_to->post_title ) . '
'; } if ( $diff ) { $return[] = array( - 'id' => $field, + 'id' => $field, 'name' => $name, 'diff' => $diff, ); @@ -123,7 +142,7 @@ * * @since 4.1.0 * - * @param array $return Revision UI fields. Each item is an array of id, name and diff. + * @param array[] $return Array of revision UI fields. Each item is an array of id, name, and diff. * @param WP_Post $compare_from The revision post to compare from. * @param WP_Post $compare_to The revision post to compare to. */ @@ -143,16 +162,23 @@ * @return array An associative array of revision data and related settings. */ function wp_prepare_revisions_for_js( $post, $selected_revision_id, $from = null ) { - $post = get_post( $post ); + $post = get_post( $post ); $authors = array(); $now_gmt = time(); - $revisions = wp_get_post_revisions( $post->ID, array( 'order' => 'ASC', 'check_enabled' => false ) ); + $revisions = wp_get_post_revisions( + $post->ID, + array( + 'order' => 'ASC', + 'check_enabled' => false, + ) + ); // If revisions are disabled, we only want autosaves and the current post. if ( ! wp_revisions_enabled( $post ) ) { foreach ( $revisions as $revision_id => $revision ) { - if ( ! wp_is_post_autosave( $revision ) ) + if ( ! wp_is_post_autosave( $revision ) ) { unset( $revisions[ $revision_id ] ); + } } $revisions = array( $post->ID => $post ) + $revisions; } @@ -162,37 +188,43 @@ cache_users( wp_list_pluck( $revisions, 'post_author' ) ); $can_restore = current_user_can( 'edit_post', $post->ID ); - $current_id = false; + $current_id = false; foreach ( $revisions as $revision ) { - $modified = strtotime( $revision->post_modified ); + $modified = strtotime( $revision->post_modified ); $modified_gmt = strtotime( $revision->post_modified_gmt . ' +0000' ); if ( $can_restore ) { - $restore_link = str_replace( '&', '&', wp_nonce_url( - add_query_arg( - array( 'revision' => $revision->ID, - 'action' => 'restore' ), + $restore_link = str_replace( + '&', + '&', + wp_nonce_url( + add_query_arg( + array( + 'revision' => $revision->ID, + 'action' => 'restore', + ), admin_url( 'revision.php' ) - ), - "restore-post_{$revision->ID}" - ) ); + ), + "restore-post_{$revision->ID}" + ) + ); } if ( ! isset( $authors[ $revision->post_author ] ) ) { $authors[ $revision->post_author ] = array( - 'id' => (int) $revision->post_author, + 'id' => (int) $revision->post_author, 'avatar' => $show_avatars ? get_avatar( $revision->post_author, 32 ) : '', - 'name' => get_the_author_meta( 'display_name', $revision->post_author ), + 'name' => get_the_author_meta( 'display_name', $revision->post_author ), ); } $autosave = (bool) wp_is_post_autosave( $revision ); - $current = ! $autosave && $revision->post_modified_gmt === $post->post_modified_gmt; + $current = ! $autosave && $revision->post_modified_gmt === $post->post_modified_gmt; if ( $current && ! empty( $current_id ) ) { // If multiple revisions have the same post_modified_gmt, highest ID is current. if ( $current_id < $revision->ID ) { $revisions[ $current_id ]['current'] = false; - $current_id = $revision->ID; + $current_id = $revision->ID; } else { $current = false; } @@ -253,7 +285,7 @@ 'current' => true, 'restoreUrl' => false, ); - $current_id = $post->ID; + $current_id = $post->ID; } /* @@ -288,21 +320,23 @@ $from = absint( $from ); - $diffs = array( array( - 'id' => $from . ':' . $selected_revision_id, - 'fields' => wp_get_revision_ui_diff( $post->ID, $from, $selected_revision_id ), - )); + $diffs = array( + array( + 'id' => $from . ':' . $selected_revision_id, + 'fields' => wp_get_revision_ui_diff( $post->ID, $from, $selected_revision_id ), + ), + ); return array( - 'postId' => $post->ID, - 'nonce' => wp_create_nonce( 'revisions-ajax-nonce' ), - 'revisionData' => array_values( $revisions ), - 'to' => $selected_revision_id, - 'from' => $from, - 'diffData' => $diffs, - 'baseUrl' => parse_url( admin_url( 'revision.php' ), PHP_URL_PATH ), - 'compareTwoMode' => absint( $compare_two_mode ), // Apparently booleans are not allowed - 'revisionIds' => array_keys( $revisions ), + 'postId' => $post->ID, + 'nonce' => wp_create_nonce( 'revisions-ajax-nonce' ), + 'revisionData' => array_values( $revisions ), + 'to' => $selected_revision_id, + 'from' => $from, + 'diffData' => $diffs, + 'baseUrl' => parse_url( admin_url( 'revision.php' ), PHP_URL_PATH ), + 'compareTwoMode' => absint( $compare_two_mode ), // Apparently booleans are not allowed + 'revisionIds' => array_keys( $revisions ), ); } @@ -357,14 +391,32 @@ {{{ data.attributes.author.avatar }}}
<# if ( data.attributes.autosave ) { #> - {{ data.attributes.author.name }}' ); ?> + + {{ data.attributes.author.name }}' + ); + ?> + <# } else if ( data.attributes.current ) { #> - {{ data.attributes.author.name }}' ); ?> + + {{ data.attributes.author.name }}' + ); + ?> + <# } else { #> - {{ data.attributes.author.name }}' ); ?> + + {{ data.attributes.author.name }}' + ); + ?> + <# } #> {{ data.attributes.timeAgo }} ({{ data.attributes.dateShort }}) @@ -399,5 +451,6 @@ {{{ field.diff }}} <# }); #>
- +