Make WordPress Core

Changeset 38172


Ignore:
Timestamp:
07/31/2016 06:10:45 PM (8 years 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.