Make WordPress Core


Ignore:
Timestamp:
07/14/2015 05:46:13 PM (11 years ago)
Author:
wonderboymusic
Message:

List Tables:

  • In ->handle_row_actions(), bail immediately if $primary and $column_name do not match. Saves us a nesting level and avoids declaring code that is unusable.
  • In WP_List_Table::single_row_columns(), allow _column_{$name} to be called dynamically by core to avoid having to override the entirety of ->single_row_columns() in WP_MS_Users_List_Table and WP_Posts_List_Table
  • In WP_MS_Sites_List_Table, id is not a column.

Props wonderboymusic, paulwilde.
Fixes #29881.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/class-wp-ms-users-list-table.php

    r33195 r33270  
    258258
    259259        /**
     260         * @since 4.3.0
     261         * @access protected
     262         *
     263         * @param WP_User $user
     264         * @param string  $classes
     265         * @param string  $data
     266         * @param string  $primary
     267         */
     268        protected function _column_blogs( $user, $classes, $data, $primary ) {
     269                echo '<td class="', $classes, ' has-row-actions" ', $data, '>';
     270                echo $this->column_blogs( $user );
     271                echo $this->handle_row_actions( $user, 'blogs', $primary );
     272                echo '</td>';
     273        }
     274
     275        /**
    260276         * Handles the blogs/sites column output.
    261277         *
    … …  
    336352        }
    337353
    338         /**
    339          * Handles columns output for a single row in the table.
    340          *
    341          * @since 4.3.0
    342          * @access public
    343          *
    344          * @param WP_User $item The current WP_User object.
    345          */
    346         public function single_row_columns( $item ) {
    347                 list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info();
    348 
    349                 foreach ( $columns as $column_name => $column_display_name ) {
    350                         $classes = "$column_name column-$column_name";
    351                         if ( $primary === $column_name || 'blogs' === $column_name ) {
    352                                 $classes .= ' has-row-actions';
    353                         }
    354 
    355                         if ( $primary === $column_name ) {
    356                                 $classes .= ' column-primary';
    357                         }
    358 
    359                         if ( in_array( $column_name, $hidden ) ) {
    360                                 $classes .= ' hidden';
    361                         }
    362 
    363                         $data = 'data-colname="' . wp_strip_all_tags( $column_display_name ) . '"';
    364 
    365                         $attributes = "class='$classes' $data";
    366 
    367                         if ( 'cb' === $column_name ) {
    368                                 echo '<th scope="row" class="check-column">';
    369 
    370                                 $this->column_cb( $item );
    371 
    372                                 echo '</th>';
    373                         } elseif ( method_exists( $this, 'column_' . $column_name ) ) {
    374                                 echo "<td $attributes>";
    375 
    376                                 call_user_func( array( $this, 'column_' . $column_name ), $item );
    377 
    378                                 echo $this->handle_row_actions( $item, $column_name, $primary );
    379                                 echo "</td>";
    380                         } else {
    381                                 echo "<td $attributes>";
    382 
    383                                 $this->column_default( $item, $column_name );
    384 
    385                                 echo $this->handle_row_actions( $item, $column_name, $primary );
    386                                 echo "</td>";
    387                         }
    388                 }
    389         }
    390 
    391354        public function display_rows() {
    392355                foreach ( $this->items as $user ) {
    … …  
    433396         */
    434397        protected function handle_row_actions( $user, $column_name, $primary ) {
     398                if ( $primary !== $column_name ) {
     399                        return '';
     400                }
     401
    435402                $super_admins = get_super_admins();
    436403                $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user->ID ) ) );
    437404
    438                 if ( $primary === $column_name ) {
    439                         $actions = array();
    440                         $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
    441 
    442                         if ( current_user_can( 'delete_user', $user->ID ) && ! in_array( $user->user_login, $super_admins ) ) {
    443                                 $actions['delete'] = '<a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'users.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user->ID ) ) ) . '" class="delete">' . __( 'Delete' ) . '</a>';
    444                         }
    445 
    446                         /**
    447                          * Filter the action links displayed under each user in the Network Admin Users list table.
    448                          *
    449                          * @since 3.2.0
    450                          *
    451                          * @param array   $actions An array of action links to be displayed.
    452                          *                         Default 'Edit', 'Delete'.
    453                          * @param WP_User $user    WP_User object.
    454                          */
    455                         $actions = apply_filters( 'ms_user_row_actions', $actions, $user );
    456                         return $this->row_actions( $actions );
    457                 }
     405                $actions = array();
     406                $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
     407
     408                if ( current_user_can( 'delete_user', $user->ID ) && ! in_array( $user->user_login, $super_admins ) ) {
     409                        $actions['delete'] = '<a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'users.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user->ID ) ) ) . '" class="delete">' . __( 'Delete' ) . '</a>';
     410                }
     411
     412                /**
     413                 * Filter the action links displayed under each user in the Network Admin Users list table.
     414                 *
     415                 * @since 3.2.0
     416                 *
     417                 * @param array   $actions An array of action links to be displayed.
     418                 *                         Default 'Edit', 'Delete'.
     419                 * @param WP_User $user    WP_User object.
     420                 */
     421                $actions = apply_filters( 'ms_user_row_actions', $actions, $user );
     422                return $this->row_actions( $actions );
    458423        }
    459424}
Note: See TracChangeset for help on using the changeset viewer.