WordPress.org

Make WordPress Core

Changeset 16347


Ignore:
Timestamp:
11/13/10 16:30:20 (3 years ago)
Author:
scribu
Message:

Introduce WP_Plugins_List_table:single_row(). See #15318

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/class-wp-plugins-list-table.php

    r16346 r16347  
    303303 
    304304    function display_rows() { 
     305        global $status; 
     306 
     307        $screen = get_current_screen(); 
     308 
     309        if ( is_multisite() && !$screen->is_network && in_array( $status, array( 'mustuse', 'dropins' ) ) ) 
     310            return; 
     311 
     312        foreach ( $this->items as $plugin_file => $plugin_data ) 
     313            $this->single_row( $plugin_file, $plugin_data ); 
     314    } 
     315 
     316    function single_row( $plugin_file, $plugin_data ) { 
    305317        global $status, $page, $s; 
    306318 
     
    309321        $screen = get_current_screen(); 
    310322 
    311         if ( is_multisite() && !$screen->is_network && in_array( $context, array( 'mustuse', 'dropins' ) ) ) 
    312             return; 
    313  
    314         foreach ( $this->items as $plugin_file => $plugin_data ) { 
    315             // preorder 
    316             $actions = array( 
    317                 'network_deactivate' => '', 'deactivate' => '', 
    318                 'network_only' => '', 'activate' => '', 
    319                 'network_activate' => '', 
    320                 'edit' => '', 
    321                 'delete' => '', 
    322             ); 
    323  
    324             if ( 'mustuse' == $context ) { 
     323        // preorder 
     324        $actions = array( 
     325            'network_deactivate' => '', 'deactivate' => '', 
     326            'network_only' => '', 'activate' => '', 
     327            'network_activate' => '', 
     328            'edit' => '', 
     329            'delete' => '', 
     330        ); 
     331 
     332        if ( 'mustuse' == $context ) { 
     333            $is_active = true; 
     334        } elseif ( 'dropins' == $context ) { 
     335            $dropins = _get_dropins(); 
     336            $plugin_name = $plugin_file; 
     337            if ( $plugin_file != $plugin_data['Name'] ) 
     338                $plugin_name .= '<br/>' . $plugin_data['Name']; 
     339            if ( true === ( $dropins[ $plugin_file ][1] ) ) { // Doesn't require a constant 
    325340                $is_active = true; 
    326             } elseif ( 'dropins' == $context ) { 
    327                 $dropins = _get_dropins(); 
    328                 $plugin_name = $plugin_file; 
    329                 if ( $plugin_file != $plugin_data['Name'] ) 
    330                     $plugin_name .= '<br/>' . $plugin_data['Name']; 
    331                 if ( true === ( $dropins[ $plugin_file ][1] ) ) { // Doesn't require a constant 
    332                     $is_active = true; 
    333                     $description = '<p><strong>' . $dropins[ $plugin_file ][0] . '</strong></p>'; 
    334                 } elseif ( constant( $dropins[ $plugin_file ][1] ) ) { // Constant is true 
    335                     $is_active = true; 
    336                     $description = '<p><strong>' . $dropins[ $plugin_file ][0] . '</strong></p>'; 
     341                $description = '<p><strong>' . $dropins[ $plugin_file ][0] . '</strong></p>'; 
     342            } elseif ( constant( $dropins[ $plugin_file ][1] ) ) { // Constant is true 
     343                $is_active = true; 
     344                $description = '<p><strong>' . $dropins[ $plugin_file ][0] . '</strong></p>'; 
     345            } else { 
     346                $is_active = false; 
     347                $description = '<p><strong>' . $dropins[ $plugin_file ][0] . ' <span class="attention">' . __('Inactive:') . '</span></strong> ' . sprintf( __( 'Requires <code>%s</code> in <code>wp-config.php</code>.' ), "define('" . $dropins[ $plugin_file ][1] . "', true);" ) . '</p>'; 
     348            } 
     349            if ( $plugin_data['Description'] ) 
     350                $description .= '<p>' . $plugin_data['Description'] . '</p>'; 
     351        } else { 
     352            $is_active_for_network = is_plugin_active_for_network($plugin_file); 
     353            if ( $screen->is_network ) 
     354                $is_active = $is_active_for_network; 
     355            else 
     356                $is_active = is_plugin_active( $plugin_file ); 
     357 
     358            if ( $is_active_for_network && !is_super_admin() && !$screen->is_network ) 
     359                return; 
     360 
     361            if ( $screen->is_network ) { 
     362                if ( $is_active_for_network ) { 
     363                    if ( current_user_can( 'manage_network_plugins' ) ) 
     364                        $actions['network_deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;networkwide=1&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . __('Deactivate this plugin') . '">' . __('Network Deactivate') . '</a>'; 
    337365                } else { 
    338                     $is_active = false; 
    339                     $description = '<p><strong>' . $dropins[ $plugin_file ][0] . ' <span class="attention">' . __('Inactive:') . '</span></strong> ' . sprintf( __( 'Requires <code>%s</code> in <code>wp-config.php</code>.' ), "define('" . $dropins[ $plugin_file ][1] . "', true);" ) . '</p>'; 
     366                    if ( current_user_can( 'manage_network_plugins' ) ) 
     367                        $actions['network_activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;networkwide=1&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . __('Activate this plugin for all sites in this network') . '" class="edit">' . __('Network Activate') . '</a>'; 
     368                    if ( current_user_can('delete_plugins') ) 
     369                        $actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . __('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>'; 
    340370                } 
    341                 if ( $plugin_data['Description'] ) 
    342                     $description .= '<p>' . $plugin_data['Description'] . '</p>'; 
    343371            } else { 
    344                 $is_active_for_network = is_plugin_active_for_network($plugin_file); 
    345                 if ( $screen->is_network ) 
    346                     $is_active = $is_active_for_network; 
    347                 else 
    348                     $is_active = is_plugin_active( $plugin_file ); 
    349  
    350                 if ( $is_active_for_network && !is_super_admin() && !$screen->is_network ) 
    351                     continue; 
    352  
    353                 if ( $screen->is_network ) { 
    354                     if ( $is_active_for_network ) { 
    355                         if ( current_user_can( 'manage_network_plugins' ) ) 
    356                             $actions['network_deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;networkwide=1&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . __('Deactivate this plugin') . '">' . __('Network Deactivate') . '</a>'; 
    357                     } else { 
    358                         if ( current_user_can( 'manage_network_plugins' ) ) 
    359                             $actions['network_activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;networkwide=1&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . __('Activate this plugin for all sites in this network') . '" class="edit">' . __('Network Activate') . '</a>'; 
    360                         if ( current_user_can('delete_plugins') ) 
    361                             $actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . __('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>'; 
    362                     } 
     372                if ( $is_active ) { 
     373                    $actions['deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . __('Deactivate this plugin') . '">' . __('Deactivate') . '</a>'; 
    363374                } else { 
    364                     if ( $is_active ) { 
    365                         $actions['deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . __('Deactivate this plugin') . '">' . __('Deactivate') . '</a>'; 
    366                     } else { 
    367                         if ( is_network_only_plugin( $plugin_file ) && !$screen->is_network ) 
    368                             continue; 
    369  
    370                         $actions['activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . __('Activate this plugin') . '" class="edit">' . __('Activate') . '</a>'; 
    371  
    372                         if ( ! is_multisite() && current_user_can('delete_plugins') ) 
    373                             $actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . __('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>'; 
    374                     } // end if $is_active 
    375                  } // end if $screen->is_network 
    376  
    377                 if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) ) 
    378                     $actions['edit'] = '<a href="plugin-editor.php?file=' . $plugin_file . '" title="' . __('Open this file in the Plugin Editor') . '" class="edit">' . __('Edit') . '</a>'; 
    379             } // end if $context 
    380  
    381             $actions = apply_filters( 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context ); 
    382             $actions = apply_filters( "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context ); 
    383  
    384             $class = $is_active ? 'active' : 'inactive'; 
    385             $checkbox_id = md5($plugin_data['Name']) . "_checkbox"; 
    386             $checkbox = in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : "<input type='checkbox' name='checked[]' value='" . esc_attr( $plugin_file ) . "' id='" . $checkbox_id . "' /><label class='screen-reader-text' for='" . $checkbox_id . "' >" . __('Select') . " " . $plugin_data['Name'] . "</label>"; 
    387             if ( 'dropins' != $status ) { 
    388                 $description = '<p>' . $plugin_data['Description'] . '</p>'; 
    389                 $plugin_name = $plugin_data['Name']; 
    390             } 
    391  
    392             $id = sanitize_title( $plugin_name ); 
    393  
    394             echo " 
    395         <tr id='$id' class='$class'> 
    396             <th scope='row' class='check-column'>$checkbox</th> 
    397             <td class='plugin-title'> 
    398                 <strong>$plugin_name</strong> 
    399             "; 
    400              
    401             echo $this->row_actions( $actions, true ); 
    402  
    403             echo " 
    404             </td> 
    405             <td class='column-description desc'> 
    406                 <div class='plugin-description'> 
    407                     $description 
    408                 </div> 
    409                 <div class='$class second plugin-version-author-uri'> 
    410                     "; 
     375                    if ( is_network_only_plugin( $plugin_file ) && !$screen->is_network ) 
     376                        return; 
     377 
     378                    $actions['activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . __('Activate this plugin') . '" class="edit">' . __('Activate') . '</a>'; 
     379 
     380                    if ( ! is_multisite() && current_user_can('delete_plugins') ) 
     381                        $actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . __('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>'; 
     382                } // end if $is_active 
     383             } // end if $screen->is_network 
     384 
     385            if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) ) 
     386                $actions['edit'] = '<a href="plugin-editor.php?file=' . $plugin_file . '" title="' . __('Open this file in the Plugin Editor') . '" class="edit">' . __('Edit') . '</a>'; 
     387        } // end if $context 
     388 
     389        $actions = apply_filters( 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context ); 
     390        $actions = apply_filters( "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context ); 
     391 
     392        $class = $is_active ? 'active' : 'inactive'; 
     393        $checkbox_id = md5($plugin_data['Name']) . "_checkbox"; 
     394        $checkbox = in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : "<input type='checkbox' name='checked[]' value='" . esc_attr( $plugin_file ) . "' id='" . $checkbox_id . "' /><label class='screen-reader-text' for='" . $checkbox_id . "' >" . __('Select') . " " . $plugin_data['Name'] . "</label>"; 
     395        if ( 'dropins' != $status ) { 
     396            $description = '<p>' . $plugin_data['Description'] . '</p>'; 
     397            $plugin_name = $plugin_data['Name']; 
     398        } 
     399 
     400        $id = sanitize_title( $plugin_name ); 
     401 
     402 
     403        echo " 
     404    <tr id='$id' class='$class'> 
     405        <th scope='row' class='check-column'>$checkbox</th> 
     406        <td class='plugin-title'> 
     407            <strong>$plugin_name</strong> 
     408        "; 
    411409         
    412                     $plugin_meta = array(); 
    413                     if ( !empty( $plugin_data['Version'] ) ) 
    414                         $plugin_meta[] = sprintf( __( 'Version %s' ), $plugin_data['Version'] ); 
    415                     if ( !empty( $plugin_data['Author'] ) ) { 
    416                         $author = $plugin_data['Author']; 
    417                         if ( !empty( $plugin_data['AuthorURI'] ) ) 
    418                             $author = '<a href="' . $plugin_data['AuthorURI'] . '" title="' . __( 'Visit author homepage' ) . '">' . $plugin_data['Author'] . '</a>'; 
    419                         $plugin_meta[] = sprintf( __( 'By %s' ), $author ); 
    420                     } 
    421                     if ( ! empty( $plugin_data['PluginURI'] ) ) 
    422                         $plugin_meta[] = '<a href="' . $plugin_data['PluginURI'] . '" title="' . __( 'Visit plugin site' ) . '">' . __( 'Visit plugin site' ) . '</a>'; 
    423          
    424                     $plugin_meta = apply_filters( 'plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $status ); 
    425                     echo implode( ' | ', $plugin_meta ); 
    426  
    427                     echo " 
    428                 </div> 
    429             </td> 
    430         </tr> 
     410        echo $this->row_actions( $actions, true ); 
     411 
     412        echo " 
     413        </td> 
     414        <td class='column-description desc'> 
     415            <div class='plugin-description'> 
     416                $description 
     417            </div> 
     418            <div class='$class second plugin-version-author-uri'> 
     419                "; 
     420     
     421                $plugin_meta = array(); 
     422                if ( !empty( $plugin_data['Version'] ) ) 
     423                    $plugin_meta[] = sprintf( __( 'Version %s' ), $plugin_data['Version'] ); 
     424                if ( !empty( $plugin_data['Author'] ) ) { 
     425                    $author = $plugin_data['Author']; 
     426                    if ( !empty( $plugin_data['AuthorURI'] ) ) 
     427                        $author = '<a href="' . $plugin_data['AuthorURI'] . '" title="' . __( 'Visit author homepage' ) . '">' . $plugin_data['Author'] . '</a>'; 
     428                    $plugin_meta[] = sprintf( __( 'By %s' ), $author ); 
     429                } 
     430                if ( ! empty( $plugin_data['PluginURI'] ) ) 
     431                    $plugin_meta[] = '<a href="' . $plugin_data['PluginURI'] . '" title="' . __( 'Visit plugin site' ) . '">' . __( 'Visit plugin site' ) . '</a>'; 
     432     
     433                $plugin_meta = apply_filters( 'plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $status ); 
     434                echo implode( ' | ', $plugin_meta ); 
     435 
     436                echo " 
     437            </div> 
     438        </td> 
     439    </tr> 
    431440"; 
    432441 
    433             do_action( 'after_plugin_row', $plugin_file, $plugin_data, $status ); 
    434             do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status ); 
    435         } 
     442        do_action( 'after_plugin_row', $plugin_file, $plugin_data, $status ); 
     443        do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status ); 
    436444    } 
    437445} 
Note: See TracChangeset for help on using the changeset viewer.