WordPress.org

Make WordPress Core

Changeset 38172


Ignore:
Timestamp:
07/31/16 18:10:45 (9 months ago)
Author:
ocean90
Message:

Plugins: Use install_plugins_upload action to print the upload form.

Since [37221] the upload form is added to every plugin install screen via install_plugins_upload(). Previously the form was added through the install_plugins_upload (alias of install_plugins_$tab) action which allowed plugin authors to replace the form. This restores the previous behaviour.

  • Add the form only to non-upload plugin install screens.
  • Replace install_plugins_upload() with the install_plugins_upload and install_plugins_pre_upload actions.
  • Remove $upload_tab_class and add a CSS class for the current tab to .wrap
  • Adjust CSS selectors and toggle the whole container to support upload without an upload-plugin class.

Props DavidAnderson, ocean90.
Fixes #37495.

Location:
trunk/src/wp-admin
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/css/themes.css

    r37872 r38172  
    10271027 
    10281028.upload-view-toggle .browse, 
    1029 .upload-view-toggle.upload-tab .upload { 
     1029.plugin-install-tab-upload .upload-view-toggle .upload { 
    10301030    display: none; 
    10311031} 
    10321032 
    1033 .upload-view-toggle.upload-tab .browse { 
     1033.plugin-install-tab-upload .upload-view-toggle .browse { 
    10341034    display: inline; 
    10351035} 
     
    10491049} 
    10501050 
     1051.upload-plugin-wrap { 
     1052    display: none; 
     1053} 
     1054 
    10511055.show-upload-view .upload-theme, 
    10521056.show-upload-view .upload-plugin, 
    1053 .upload-tab .upload-plugin { 
     1057.show-upload-view .upload-plugin-wrap, 
     1058.plugin-install-tab-upload .upload-plugin { 
    10541059    display: block; 
    10551060} 
  • trunk/src/wp-admin/includes/admin-filters.php

    r38046 r38172  
    7171// Plugin Install hooks. 
    7272add_action( 'install_plugins_featured',               'install_dashboard' ); 
     73add_action( 'install_plugins_upload',                 'install_plugins_upload' ); 
    7374add_action( 'install_plugins_search',                 'display_plugins_table' ); 
    7475add_action( 'install_plugins_popular',                'display_plugins_table' ); 
  • trunk/src/wp-admin/js/plugin-install.js

    r37681 r38172  
    1313        $firstTabbable, 
    1414        $lastTabbable, 
    15         uploadViewToggle = $( '.upload-view-toggle' ), 
     15        $uploadViewToggle = $( '.upload-view-toggle' ), 
     16        $wrap = $ ( '.wrap' ), 
    1617        $body = $( document.body ); 
    1718 
     
    184185     * rather than sending them to the devoted upload plugin page. 
    185186     * The `?tab=upload` page still exists for no-js support and for plugins that 
    186      * might access it directly (?). When we're in this page, let the link behave 
     187     * might access it directly. When we're in this page, let the link behave 
    187188     * like a link. Otherwise we're in the normal plugin installer pages and the 
    188189     * link should behave like a toggle button. 
    189190     */ 
    190     if ( ! uploadViewToggle.hasClass( 'upload-tab' ) ) { 
    191         uploadViewToggle 
     191    if ( ! $wrap.hasClass( 'plugin-install-tab-upload' ) ) { 
     192        $uploadViewToggle 
    192193            .attr({ 
    193194                role: 'button', 
     
    197198                event.preventDefault(); 
    198199                $body.toggleClass( 'show-upload-view' ); 
    199                 uploadViewToggle.attr( 'aria-expanded', $body.hasClass( 'show-upload-view' ) ); 
     200                $uploadViewToggle.attr( 'aria-expanded', $body.hasClass( 'show-upload-view' ) ); 
    200201            }); 
    201202    } 
  • trunk/src/wp-admin/plugin-install.php

    r38119 r38172  
    6767do_action( "install_plugins_pre_$tab" ); 
    6868 
     69/* 
     70 * Call the pre upload action on every non-upload plugin install screen 
     71 * because the form is always displayed on these screens. 
     72 */ 
     73if ( 'upload' !== $tab ) { 
     74    /** This action is documented in wp-admin/plugin-install.php */ 
     75    do_action( 'install_plugins_pre_upload' ); 
     76} 
     77 
    6978get_current_screen()->add_help_tab( array( 
    7079'id'        => 'overview', 
     
    102111include(ABSPATH . 'wp-admin/admin-header.php'); 
    103112?> 
    104 <div class="wrap"> 
     113<div class="wrap <?php echo esc_attr( "plugin-install-tab-$tab" ); ?>"> 
    105114<h1> 
    106115    <?php 
    107116    echo esc_html( $title ); 
    108117    if ( ! empty( $tabs['upload'] ) && current_user_can( 'upload_plugins' ) ) { 
    109         if ( $tab === 'upload' ) { 
    110             $href = self_admin_url( 'plugin-install.php' ); 
    111             $upload_tab_class = ' upload-tab'; 
    112         } else { 
    113             $href = self_admin_url( 'plugin-install.php?tab=upload' ); 
    114             $upload_tab_class = ''; 
    115         } 
    116  
    117         printf( ' <a href="%s" class="upload-view-toggle page-title-action%s"><span class="upload">%s</span><span class="browse">%s</span></a>', 
    118             $href, 
    119             $upload_tab_class, 
     118        printf( ' <a href="%s" class="upload-view-toggle page-title-action"><span class="upload">%s</span><span class="browse">%s</span></a>', 
     119            ( 'upload' === $tab ) ? self_admin_url( 'plugin-install.php' ) : self_admin_url( 'plugin-install.php?tab=upload' ), 
    120120            __( 'Upload Plugin' ), 
    121121            __( 'Browse Plugins' ) 
     
    125125</h1> 
    126126 
    127 <div class="upload-plugin-wrap<?php echo $upload_tab_class; ?>"> 
    128127<?php 
    129128/* 
    130  * Output the upload plugin form on every plugin install screen, so it can be 
     129 * Output the upload plugin form on every non-upload plugin install screen, so it can be 
    131130 * displayed via JavaScript rather then opening up the devoted upload plugin page. 
    132131 */ 
    133 install_plugins_upload(); ?> 
    134 </div> 
     132if ( $tab !== 'upload' ) { 
     133    ?> 
     134    <div class="upload-plugin-wrap"> 
     135        <?php 
     136        /** This action is documented in wp-admin/plugin-install.php */ 
     137        do_action( 'install_plugins_upload' ); 
     138        ?> 
     139    </div> 
     140    <?php 
     141} 
    135142 
    136 <?php 
    137143if ( $tab !== 'upload' ) { 
    138144    $wp_list_table->views(); 
Note: See TracChangeset for help on using the changeset viewer.