Make WordPress Core

Ticket #49715: 49715.2.diff

File 49715.2.diff, 8.7 KB (added by audrasjb, 4 years ago)

Provide alternate table views (compact/extended) for Posts, users, media and comments screens

  • src/wp-admin/includes/class-wp-comments-list-table.php

    diff --git a/src/wp-admin/includes/class-wp-comments-list-table.php b/src/wp-admin/includes/class-wp-comments-list-table.php
    index e3678b60d5..19fc44690f 100644
    a b class WP_Comments_List_Table extends WP_List_Table { 
    124124                        $start += $_REQUEST['offset'];
    125125                }
    126126
     127                if ( ! empty( $_REQUEST['mode'] ) ) {
     128                        $mode = 'extended' === $_REQUEST['mode'] ? 'extended' : 'list';
     129                        set_user_setting( 'posts_list_mode', $mode );
     130                } else {
     131                        $mode = get_user_setting( 'posts_list_mode', 'list' );
     132                }
     133
    127134                $status_map = array(
    128135                        'mine'      => '',
    129136                        'moderated' => 'hold',
    class WP_Comments_List_Table extends WP_List_Table { 
    751758                /** This filter is documented in wp-admin/includes/dashboard.php */
    752759                $actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment );
    753760
     761                $always_visible = false;
     762                $mode = get_user_setting( 'posts_list_mode', 'list' );
     763                if ( 'extended' === $mode ) {
     764                        $always_visible = true;
     765                }
     766
    754767                $i    = 0;
    755                 $out .= '<div class="row-actions">';
     768                $out .= '<div class="' . ( $always_visible ? 'row-actions visible' : 'row-actions' ) . '">';
    756769                foreach ( $actions as $action => $link ) {
    757770                        ++$i;
    758771                        ( ( ( 'approve' === $action || 'unapprove' === $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ';
  • src/wp-admin/includes/class-wp-list-table.php

    diff --git a/src/wp-admin/includes/class-wp-list-table.php b/src/wp-admin/includes/class-wp-list-table.php
    index 791ee7c159..7736652ce4 100644
    a b class WP_List_Table { 
    166166
    167167                if ( empty( $this->modes ) ) {
    168168                        $this->modes = array(
    169                                 'list'    => __( 'List View' ),
    170                                 'excerpt' => __( 'Excerpt View' ),
     169                                'list'  => __( 'Compact view' ),
     170                                'extended' => __( 'Extended view' ),
    171171                        );
    172172                }
    173173        }
    class WP_List_Table { 
    517517                        return '';
    518518                }
    519519
     520                $mode = get_user_setting( 'posts_list_mode', 'list' );
     521                if ( 'extended' === $mode ) {
     522                        $always_visible = true;
     523                }
     524
    520525                $out = '<div class="' . ( $always_visible ? 'row-actions visible' : 'row-actions' ) . '">';
    521526                foreach ( $actions as $action => $link ) {
    522527                        ++$i;
  • src/wp-admin/includes/class-wp-posts-list-table.php

    diff --git a/src/wp-admin/includes/class-wp-posts-list-table.php b/src/wp-admin/includes/class-wp-posts-list-table.php
    index 3b29dce7d2..e2132fdb7b 100644
    a b class WP_Posts_List_Table extends WP_List_Table { 
    178178                }
    179179
    180180                if ( ! empty( $_REQUEST['mode'] ) ) {
    181                         $mode = 'excerpt' === $_REQUEST['mode'] ? 'excerpt' : 'list';
     181                        $mode = 'extended' === $_REQUEST['mode'] ? 'extended' : 'list';
    182182                        set_user_setting( 'posts_list_mode', $mode );
    183183                } else {
    184184                        $mode = get_user_setting( 'posts_list_mode', 'list' );
    class WP_Posts_List_Table extends WP_List_Table { 
    10401040                }
    10411041                echo "</strong>\n";
    10421042
    1043                 if ( ! is_post_type_hierarchical( $this->screen->post_type ) && 'excerpt' === $mode && current_user_can( 'read_post', $post->ID ) ) {
     1043                if ( ! is_post_type_hierarchical( $this->screen->post_type ) && 'extended' === $mode && current_user_can( 'read_post', $post->ID ) ) {
    10441044                        if ( post_password_required( $post ) ) {
    10451045                                echo '<span class="protected-post-excerpt">' . esc_html( get_the_excerpt() ) . '</span>';
    10461046                        } else {
    class WP_Posts_List_Table extends WP_List_Table { 
    11001100                 * @param string  $status      The status text.
    11011101                 * @param WP_Post $post        Post object.
    11021102                 * @param string  $column_name The column name.
    1103                  * @param string  $mode        The list display mode ('excerpt' or 'list').
     1103                 * @param string  $mode        The list display mode ('extended' or 'list').
    11041104                 */
    11051105                $status = apply_filters( 'post_date_column_status', $status, $post, 'date', $mode );
    11061106
    class WP_Posts_List_Table extends WP_List_Table { 
    11081108                        echo $status . '<br />';
    11091109                }
    11101110
    1111                 if ( 'excerpt' === $mode ) {
     1111                if ( 'extended' === $mode || 'excerpt' === $mode ) {
    11121112                        /**
    11131113                         * Filters the published time of the post.
    11141114                         *
    1115                          * If `$mode` equals 'excerpt', the published time and date are both displayed.
     1115                         * If `$mode` equals 'extended', the published time and date are both displayed.
    11161116                         * If `$mode` equals 'list' (default), the publish date is displayed, with the
    11171117                         * time and date together available as an abbreviation definition.
    11181118                         *
    class WP_Posts_List_Table extends WP_List_Table { 
    11211121                         * @param string  $t_time      The published time.
    11221122                         * @param WP_Post $post        Post object.
    11231123                         * @param string  $column_name The column name.
    1124                          * @param string  $mode        The list display mode ('excerpt' or 'list').
     1124                         * @param string  $mode        The list display mode ('extended' or 'list').
    11251125                         */
    11261126                        echo apply_filters( 'post_date_column_time', $t_time, $post, 'date', $mode );
    11271127                } else {
    class WP_Posts_List_Table extends WP_List_Table { 
    14561456         *
    14571457         * @since 3.1.0
    14581458         *
    1459          * @global string $mode List table view mode.
     1459         * @global string $mode Compact table view mode.
    14601460         */
    14611461        public function inline_edit() {
    14621462                global $mode;
    class WP_Posts_List_Table extends WP_List_Table { 
    14961496                        }
    14971497                }
    14981498
    1499                 $m            = ( isset( $mode ) && 'excerpt' === $mode ) ? 'excerpt' : 'list';
     1499                $m            = ( isset( $mode ) && 'extended' === $mode ) ? 'extended' : 'list';
    15001500                $can_publish  = current_user_can( $post_type_object->cap->publish_posts );
    15011501                $core_columns = array(
    15021502                        'cb'         => true,
  • src/wp-admin/includes/class-wp-screen.php

    diff --git a/src/wp-admin/includes/class-wp-screen.php b/src/wp-admin/includes/class-wp-screen.php
    index e3a2fcd7a6..0f86425218 100644
    a b final class WP_Screen { 
    12881288        public function render_view_mode() {
    12891289                $screen = get_current_screen();
    12901290
    1291                 // Currently only enabled for posts lists.
    1292                 if ( 'edit' !== $screen->base ) {
     1291                // Currently only enabled for posts and comments lists.
     1292                if ( 'edit' !== $screen->base && 'edit-comments' !== $screen->base && 'users' !== $screen->base ) {
    12931293                        return;
    12941294                }
    12951295
    1296                 $view_mode_post_types = get_post_types(
    1297                         array(
    1298                                 'hierarchical' => false,
    1299                                 'show_ui'      => true,
    1300                         )
    1301                 );
     1296                $view_mode_post_types = get_post_types( array( 'show_ui' => true ) );
    13021297
    13031298                /**
    13041299                 * Filters the post types that have different view mode options.
    final class WP_Screen { 
    13061301                 * @since 4.4.0
    13071302                 *
    13081303                 * @param string[] $view_mode_post_types Array of post types that can change view modes.
    1309                  *                                       Default non-hierarchical post types with show_ui on.
     1304                 *                                       Default post types with show_ui on.
    13101305                 */
    13111306                $view_mode_post_types = apply_filters( 'view_mode_post_types', $view_mode_post_types );
    13121307
    1313                 if ( ! in_array( $this->post_type, $view_mode_post_types, true ) ) {
     1308                if ( 'edit' === $screen->base && ! in_array( $this->post_type, $view_mode_post_types, true ) ) {
    13141309                        return;
    13151310                }
    13161311
    1317                 global $mode;
     1312                $mode = get_user_setting( 'posts_list_mode', 'list' );
     1313
     1314                // Set 'list' as default value if $mode is not set.
     1315                $mode = ( isset( $mode ) && 'extended' === $mode ) ? 'extended' : 'list';
    13181316
    13191317                // This needs a submit button.
    13201318                add_filter( 'screen_options_show_submit', '__return_true' );
    final class WP_Screen { 
    13231321                <legend><?php _e( 'View Mode' ); ?></legend>
    13241322                                <label for="list-view-mode">
    13251323                                        <input id="list-view-mode" type="radio" name="mode" value="list" <?php checked( 'list', $mode ); ?> />
    1326                                         <?php _e( 'List View' ); ?>
     1324                                        <?php _e( 'Compact view' ); ?>
    13271325                                </label>
    13281326                                <label for="excerpt-view-mode">
    1329                                         <input id="excerpt-view-mode" type="radio" name="mode" value="excerpt" <?php checked( 'excerpt', $mode ); ?> />
    1330                                         <?php _e( 'Excerpt View' ); ?>
     1327                                        <input id="excerpt-view-mode" type="radio" name="mode" value="extended" <?php checked( 'extended', $mode ); ?> />
     1328                                        <?php _e( 'Extended View' ); ?>
    13311329                                </label>
    13321330                </fieldset>
    13331331                <?php
  • src/wp-admin/includes/class-wp-users-list-table.php

    diff --git a/src/wp-admin/includes/class-wp-users-list-table.php b/src/wp-admin/includes/class-wp-users-list-table.php
    index 018654bdd2..731e9304e5 100644
    a b class WP_Users_List_Table extends WP_List_Table { 
    127127                        $args['order'] = $_REQUEST['order'];
    128128                }
    129129
     130                if ( ! empty( $_REQUEST['mode'] ) ) {
     131                        $mode = 'extended' === $_REQUEST['mode'] ? 'extended' : 'list';
     132                        set_user_setting( 'posts_list_mode', $mode );
     133                } else {
     134                        $mode = get_user_setting( 'posts_list_mode', 'list' );
     135                }
     136
    130137                /**
    131138                 * Filters the query arguments used to retrieve users for the current users list table.
    132139                 *