WordPress.org

Make WordPress Core

Ticket #28753: 28753.3.diff

File 28753.3.diff, 21.6 KB (added by paulwilde, 4 years ago)
  • trunk/src/wp-admin/css/forms.css

     
    751751        margin: -3px 3px;
    752752}
    753753
     754/*------------------------------------------------------------------------------
     755  21.0 - Upload File
     756------------------------------------------------------------------------------*/
     757
     758.wp-upload-container {
     759        -webkit-box-sizing: border-box;
     760        -moz-box-sizing: border-box;
     761        box-sizing: border-box;
     762        margin: 0px 0 0;
     763        padding: 0;
     764        width: 100%;
     765        overflow: hidden;
     766        position: relative;
     767        top: 10px;
     768}
     769.wp-upload-container-hidden {
     770        display: none;
     771}
     772.wp-upload-container .wp-upload-form {
     773        background: #fafafa;
     774        border: 1px solid #e5e5e5;
     775        padding: 30px;
     776        margin: 30px auto;
     777        max-width: 380px;
     778}
     779.wp-upload-container .install-help {
     780        color: #999;
     781        font-size: 18px;
     782        font-style: normal;
     783        margin: 0;
     784        padding: 40px 0 0;
     785        text-align: center;
     786}
     787
     788body.show-upload-container .hide-on-upload,
     789body.show-upload-container .wp-upload-show {
     790        display: none;
     791}
     792body.show-upload-container .wp-upload-container-hidden {
     793        display: block;
     794}
     795
     796.wp-upload-hide {
     797        display: none;
     798}
     799body.show-upload-container .wp-upload-hide {
     800        display: inline;
     801}
     802
    754803/* =Media Queries
    755804-------------------------------------------------------------- */
    756805
     806@media only screen and (max-width: 1120px) {
     807        .wp-upload-container .wp-upload-form {
     808                margin: 20px 0;
     809                max-width: 100%;
     810        }
     811        .wp-upload-container .install-help {
     812                font-size: 15px;
     813                padding: 20px 0 0;
     814                text-align: left;
     815        }
     816}
     817
    757818@media screen and ( max-width: 782px ) {
    758819        /* Input Elements */
    759820        textarea {
  • trunk/src/wp-admin/css/themes.css

     
    11031103        position: relative;
    11041104        width: 100%;
    11051105}
    1106 .theme-install-php a.upload,
    1107 .theme-install-php a.browse-themes {
    1108         cursor: pointer;
    1109 }
    1110 .theme-install-php a.browse-themes,
    1111 .theme-install-php.show-upload-theme a.upload {
    1112         display: none;
    1113 }
    1114 .theme-install-php.show-upload-theme a.browse-themes {
    1115         display: inline;
    1116 }
    1117 .upload-theme {
    1118         -webkit-box-sizing: border-box;
    1119         -moz-box-sizing: border-box;
    1120         box-sizing: border-box;
    1121         display: none;
    1122         margin: 0px 0 0;
    1123         padding: 0;
    1124         width: 100%;
    1125         overflow: hidden;
    1126         position: relative;
    1127         top: 10px;
    1128 }
    1129 body.show-upload-theme .upload-theme {
    1130         display: block;
    1131 }
    1132 .upload-theme .wp-upload-form {
    1133         background: #fafafa;
    1134         border: 1px solid #e5e5e5;
    1135         padding: 30px;
    1136         margin: 30px auto;
    1137         max-width: 380px;
    1138 }
    1139 .upload-theme .install-help {
    1140         color: #999;
    1141         font-size: 18px;
    1142         font-style: normal;
    1143         margin: 0;
    1144         padding: 40px 0 0;
    1145         text-align: center;
    1146 }
    1147 body.show-upload-theme .upload-theme + .theme-navigation,
    1148 body.show-upload-theme .upload-theme + .theme-navigation + .theme-browser {
    1149         display: none;
    1150 }
    11511106.theme-navigation .theme-count {
    11521107        margin-left: 0;
    11531108        position: absolute;
     
    13401295body.no-results p.no-themes {
    13411296        display: block;
    13421297}
    1343 body.show-upload-theme p.no-themes {
     1298body.show-upload-container p.no-themes {
    13441299        display: none !important;
    13451300}
    13461301
     
    13581313        .more-filters-container {
    13591314                border-bottom: 1px solid #eee;
    13601315        }
    1361         .upload-theme .wp-upload-form {
    1362                 margin: 20px 0;
    1363                 max-width: 100%;
    1364         }
    1365         .upload-theme .install-help {
    1366                 font-size: 15px;
    1367                 padding: 20px 0 0;
    1368                 text-align: left;
    1369         }
    13701316        .more-filters-container .filters-group {
    13711317                margin-bottom: 0;
    13721318                margin-top: 5px;
  • trunk/src/wp-admin/includes/class-wp-plugin-install-list-table.php

     
    2727                // These are the tabs which are shown on the page
    2828                $tabs = array();
    2929                $tabs['dashboard'] = __( 'Search' );
    30                 if ( 'search' == $tab )
     30                if ( 'search' == $tab ) {
    3131                        $tabs['search'] = __( 'Search Results' );
    32                 $tabs['upload']    = __( 'Upload' );
     32                }
    3333                $tabs['featured']  = _x( 'Featured', 'Plugin Installer' );
    3434                $tabs['popular']   = _x( 'Popular', 'Plugin Installer' );
    3535                $tabs['new']       = _x( 'Newest', 'Plugin Installer' );
     
    4646                 * @since 2.7.0
    4747                 *
    4848                 * @param array $tabs The tabs shown on the Plugin Install screen. Defaults are 'dashboard', 'search',
    49                  *                    'upload', 'featured', 'popular', 'new', and 'favorites'.
     49                 *                    'featured', 'popular', 'new', and 'favorites'.
    5050                 */
    5151                $tabs = apply_filters( 'install_plugins_tabs', $tabs );
    5252
     
    112112                 * Filter API request arguments for each Plugin Install screen tab.
    113113                 *
    114114                 * The dynamic portion of the hook name, $tab, refers to the plugin install tabs.
    115                  * Default tabs are 'dashboard', 'search', 'upload', 'featured', 'popular', 'new',
     115                 * Default tabs are 'dashboard', 'search', 'featured', 'popular', 'new',
    116116                 * and 'favorites'.
    117117                 *
    118118                 * @since 3.7.0
  • trunk/src/wp-admin/includes/plugin-install.php

     
    126126
    127127function install_dashboard() {
    128128        ?>
    129         <p><?php printf( __( 'Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the <a href="%1$s">WordPress Plugin Directory</a> or upload a plugin in .zip format via <a href="%2$s">this page</a>.' ), 'https://wordpress.org/plugins/', self_admin_url( 'plugin-install.php?tab=upload' ) ); ?></p>
     129        <p><?php printf( __( 'Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the <a href="%1$s">WordPress Plugin Directory</a> or <a href="%2$s" class="wp-upload-show">upload a plugin</a> in .zip format.' ), 'https://wordpress.org/plugins/', self_admin_url( 'plugin-install.php?upload' ) ); ?></p>
    130130
    131131        <h4><?php _e('Search') ?></h4>
    132132        <?php install_search_form( false ); ?>
     
    187187 */
    188188function install_plugins_upload( $page = 1 ) {
    189189?>
    190         <h4><?php _e('Install a plugin in .zip format'); ?></h4>
    191         <p class="install-help"><?php _e('If you have a plugin in a .zip format, you may install it by uploading it here.'); ?></p>
    192         <form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url('update.php?action=upload-plugin'); ?>">
    193                 <?php wp_nonce_field( 'plugin-upload'); ?>
    194                 <label class="screen-reader-text" for="pluginzip"><?php _e('Plugin zip file'); ?></label>
    195                 <input type="file" id="pluginzip" name="pluginzip" />
    196                 <?php submit_button( __( 'Install Now' ), 'button', 'install-plugin-submit', false ); ?>
    197         </form>
     190        <div class="wp-upload-container wp-upload-container-hidden">
     191                <p class="install-help"><?php _e( 'If you have a plugin in a .zip format, you may install it by uploading it here.' ); ?></p>
     192                <form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url( 'update.php?action=upload-plugin' ); ?>">
     193                        <?php wp_nonce_field( 'plugin-upload' ); ?>
     194                        <label class="screen-reader-text" for="pluginzip"><?php _e( 'Plugin zip file' ); ?></label>
     195                        <input type="file" id="pluginzip" name="pluginzip" />
     196                        <?php submit_button( __( 'Install Now' ), 'button', 'install-plugin-submit', false ); ?>
     197                </form>
     198        </div>
    198199<?php
    199200}
    200201add_action('install_plugins_upload', 'install_plugins_upload', 10, 1);
  • trunk/src/wp-admin/includes/theme-install.php

     
    136136
    137137function install_themes_upload() {
    138138?>
    139 <p class="install-help"><?php _e('If you have a theme in a .zip format, you may install it by uploading it here.'); ?></p>
    140 <form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url('update.php?action=upload-theme'); ?>">
    141         <?php wp_nonce_field( 'theme-upload'); ?>
    142         <input type="file" name="themezip" />
    143         <?php submit_button( __( 'Install Now' ), 'button', 'install-theme-submit', false ); ?>
    144 </form>
    145         <?php
     139        <div class="wp-upload-container wp-upload-container-hidden">
     140                <p class="install-help"><?php _e( 'If you have a theme in a .zip format, you may install it by uploading it here.' ); ?></p>
     141                <form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url( 'update.php?action=upload-theme' ); ?>">
     142                        <?php wp_nonce_field( 'theme-upload' ); ?>
     143                        <input type="file" name="themezip" />
     144                        <?php submit_button( __( 'Install Now' ), 'button', 'install-theme-submit', false ); ?>
     145                </form>
     146        </div>
     147<?php
    146148}
    147149// add_action('install_themes_upload', 'install_themes_upload', 10, 0);
    148150
  • trunk/src/wp-admin/js/plugin-install.js

     
    1 /* global plugininstallL10n, tb_click, confirm */
    2 
    3 /* Plugin Browser Thickbox related JS*/
    4 var tb_position;
    5 jQuery( document ).ready( function( $ ) {
    6         tb_position = function() {
    7                 var tbWindow = $( '#TB_window' ),
    8                         width = $( window ).width(),
    9                         H = $( window ).height() - ( ( 850 < width ) ? 60 : 20 ),
    10                         W = ( 850 < width ) ? 830 : width - 20;
    11 
    12                 if ( tbWindow.size() ) {
    13                         tbWindow.width( W ).height( H );
    14                         $( '#TB_iframeContent' ).width( W ).height( H );
    15                         tbWindow.css({
    16                                 'margin-left': '-' + parseInt( ( W / 2 ), 10 ) + 'px'
    17                         });
    18                         if ( typeof document.body.style.maxWidth !== 'undefined' ) {
    19                                 tbWindow.css({
    20                                         'top': ( ( 850 < width ) ? 30 : 10 ) + 'px',
    21                                         'margin-top': '0'
    22                                 });
    23                         }
    24                 }
    25 
    26                 return $( 'a.thickbox' ).each( function() {
    27                         var href = $( this ).attr( 'href' );
    28                         if ( ! href ) {
    29                                 return;
    30                         }
    31                         href = href.replace( /&width=[0-9]+/g, '' );
    32                         href = href.replace( /&height=[0-9]+/g, '' );
    33                         $(this).attr( 'href', href + '&width=' + W + '&height=' + ( H ) );
    34                 });
    35         };
    36 
    37         $( window ).resize( function() {
    38                 tb_position();
    39         });
    40 
    41         $('.plugins').on( 'click', 'a.thickbox', function() {
    42                 tb_click.call(this);
    43 
    44                 $('#TB_title').css({'background-color':'#222','color':'#cfcfcf'});
    45                 $('#TB_ajaxWindowTitle').html('<strong>' + plugininstallL10n.plugin_information + '</strong>&nbsp;' + $(this).attr('title') );
    46                 return false;
    47         });
    48 
    49         /* Plugin install related JS*/
    50         $( '#plugin-information-tabs a' ).click( function( event ) {
    51                 var tab = $( this ).attr( 'name' );
    52                 event.preventDefault();
    53                 //Flip the tab
    54                 $( '#plugin-information-tabs a.current' ).removeClass( 'current' );
    55                 $( this ).addClass( 'current' );
    56                 //Only show the fyi box in the description section, on smaller screen, where it's otherwise always displayed at the top.
    57                 if ( 'description' != $( this ).attr( 'name' ) && $( 'body').width() < 830 )
    58                         $( '#plugin-information-content div.fyi' ).hide();
    59                 else
    60                         $( '#plugin-information-content div.fyi' ).show();
    61                 //Flip the content.
    62                 $( '#section-holder div.section' ).hide(); //Hide 'em all
    63                 $( '#section-' + tab ).show();
    64         });
    65 
    66         $( 'a.install-now' ).click( function() {
    67                 return confirm( plugininstallL10n.ays );
    68         });
    69 });
  • trunk/src/wp-admin/js/plugin.js

     
     1window.wp = window.wp || {};
     2
     3(function($) {
     4
     5// Set up our namespace...
     6var plugins, l10n;
     7plugins = wp.plugins = wp.plugins || {};
     8
     9// Store the plugin data and settings for organized and quick access
     10plugins.data = _wpPluginSettings;
     11l10n = plugins.data.l10n;
     12
     13// Setup app structure
     14_.extend( plugins, {  view: {}, routes: {} });
     15
     16plugins.InstallerRouter = Backbone.Router.extend({
     17
     18        routes: {
     19                'plugin-install.php?upload': 'upload',
     20                'plugin-install.php': 'sort'
     21        },
     22
     23        baseUrl: function( url ) {
     24                return 'plugin-install.php' + url;
     25        },
     26       
     27        navigate: function() {
     28                if ( Backbone.history._hasPushState ) {
     29                        Backbone.Router.prototype.navigate.apply( this, arguments );
     30                }
     31        }
     32
     33});
     34
     35plugins.view.Installer = wp.Backbone.View.extend({
     36
     37        // Initial render method
     38        render: function() {
     39                var self = this;
     40
     41                this.uploader();
     42        },
     43       
     44        uploader: function() {
     45                $( '.wp-upload-show' ).on( 'click', function( event ) {
     46                        event.preventDefault();
     47                        $( 'body' ).addClass( 'show-upload-container' );
     48                        plugins.router.navigate( plugins.router.baseUrl( '?upload' ), { replace: true } );
     49                });
     50                $( '.wp-upload-hide' ).on( 'click', function( event ) {
     51                        event.preventDefault();
     52                        $( 'body' ).removeClass( 'show-upload-container' );
     53                        plugins.router.navigate( plugins.router.baseUrl( '' ), { replace: true } );
     54                });
     55        },
     56
     57});
     58
     59plugins.RunInstaller = {
     60
     61        init: function() {
     62                this.view = new plugins.view.Installer();
     63                this.render();
     64        },
     65
     66        render: function() {
     67                this.routes();
     68                this.view.render();
     69               
     70                Backbone.history.start({
     71                        root: plugins.data.settings.adminUrl,
     72                        pushState: true,
     73                        hashChange: false
     74                });
     75        },
     76
     77        routes: function() {
     78                var self = this,
     79                        request = {};
     80
     81                // Bind to our global `wp.plugins` object
     82                plugins.router = new plugins.InstallerRouter();
     83
     84                // Support the `upload` route by going straight to upload section
     85                plugins.router.on( 'route:upload', function() {
     86                        $( '.wp-upload-show' ).trigger( 'click' );
     87                });
     88        },
     89
     90}
     91
     92// Ready...
     93$( document ).ready(function() {
     94
     95        plugins.RunInstaller.init();
     96
     97});
     98
     99// Plugin Browser Thickbox related JS
     100var tb_position;
     101$( document ).ready(function() {
     102        tb_position = function() {
     103                var tbWindow = $( '#TB_window' ),
     104                        width = $( window ).width(),
     105                        H = $( window ).height() - ( ( 850 < width ) ? 60 : 20 ),
     106                        W = ( 850 < width ) ? 830 : width - 20;
     107
     108                if ( tbWindow.size() ) {
     109                        tbWindow.width( W ).height( H );
     110                        $( '#TB_iframeContent' ).width( W ).height( H );
     111                        tbWindow.css({
     112                                'margin-left': '-' + parseInt( ( W / 2 ), 10 ) + 'px'
     113                        });
     114                        if ( typeof document.body.style.maxWidth !== 'undefined' ) {
     115                                tbWindow.css({
     116                                        'top': ( ( 850 < width ) ? 30 : 10 ) + 'px',
     117                                        'margin-top': '0'
     118                                });
     119                        }
     120                }
     121
     122                return $( 'a.thickbox' ).each( function() {
     123                        var href = $( this ).attr( 'href' );
     124                        if ( ! href ) {
     125                                return;
     126                        }
     127                        href = href.replace( /&width=[0-9]+/g, '' );
     128                        href = href.replace( /&height=[0-9]+/g, '' );
     129                        $(this).attr( 'href', href + '&width=' + W + '&height=' + ( H ) );
     130                });
     131        };
     132
     133        $( window ).resize( function() {
     134                tb_position();
     135        });
     136
     137        $('.plugins').on( 'click', 'a.thickbox', function() {
     138                tb_click.call(this);
     139
     140                $('#TB_title').css({'background-color':'#222','color':'#cfcfcf'});
     141                $('#TB_ajaxWindowTitle').html('<strong>' + l10n.pluginInformation + '</strong>&nbsp;' + $(this).attr('title') );
     142                return false;
     143        });
     144
     145        /* Plugin install related JS*/
     146        $( '#plugin-information-tabs a' ).click( function( event ) {
     147                var tab = $( this ).attr( 'name' );
     148                event.preventDefault();
     149                //Flip the tab
     150                $( '#plugin-information-tabs a.current' ).removeClass( 'current' );
     151                $( this ).addClass( 'current' );
     152                //Only show the fyi box in the description section, on smaller screen, where it's otherwise always displayed at the top.
     153                if ( 'description' != $( this ).attr( 'name' ) && $( 'body').width() < 830 )
     154                        $( '#plugin-information-content div.fyi' ).hide();
     155                else
     156                        $( '#plugin-information-content div.fyi' ).show();
     157                //Flip the content.
     158                $( '#section-holder div.section' ).hide(); //Hide 'em all
     159                $( '#section-' + tab ).show();
     160        });
     161
     162        $( 'a.install-now' ).click( function() {
     163                return confirm( l10n.ays );
     164        });
     165});
     166
     167})( jQuery );
     168 No newline at end of file
  • trunk/src/wp-admin/js/theme.js

     
    14971497        searchContainer: $( '.theme-navigation' ),
    14981498
    14991499        uploader: function() {
    1500                 $( 'a.upload' ).on( 'click', function( event ) {
     1500                $( '.wp-upload-show' ).on( 'click', function( event ) {
    15011501                        event.preventDefault();
    1502                         $( 'body' ).addClass( 'show-upload-theme' );
     1502                        $( 'body' ).addClass( 'show-upload-container' );
    15031503                        themes.router.navigate( themes.router.baseUrl( '?upload' ), { replace: true } );
    15041504                });
    1505                 $( 'a.browse-themes' ).on( 'click', function( event ) {
     1505                $( '.wp-upload-hide' ).on( 'click', function( event ) {
    15061506                        event.preventDefault();
    1507                         $( 'body' ).removeClass( 'show-upload-theme' );
     1507                        $( 'body' ).removeClass( 'show-upload-container' );
    15081508                        themes.router.navigate( themes.router.baseUrl( '' ), { replace: true } );
    15091509                });
    15101510        },
     
    16421642
    16431643                // Support the `upload` route by going straight to upload section
    16441644                themes.router.on( 'route:upload', function() {
    1645                         $( 'a.upload' ).trigger( 'click' );
     1645                        $( '.wp-upload-show' ).trigger( 'click' );
    16461646                });
    16471647
    16481648                // The `search` route event. The router populates the input field.
  • trunk/src/wp-admin/plugin-install.php

     
    2929$title = __('Install Plugins');
    3030$parent_file = 'plugins.php';
    3131
    32 wp_enqueue_script( 'plugin-install' );
     32wp_localize_script( 'plugin', '_wpPluginSettings', array(
     33        'plugins' => false,
     34        'settings' => array(
     35                'isInstall'     => true,
     36                'canInstall'    => current_user_can( 'install_plugins' ),
     37                'installURI'    => current_user_can( 'install_plugins' ) ? self_admin_url( 'plugin-install.php' ) : null,
     38                'adminUrl'      => parse_url( self_admin_url(), PHP_URL_PATH )
     39        ),
     40        'l10n' => array(
     41                'pluginInformation' => __('Plugin Information:'),
     42                'ays' => __('Are you sure you want to install this plugin?')
     43        ),
     44) );
     45
     46wp_enqueue_script( 'plugin' );
     47
    3348if ( 'plugin-information' != $tab )
    3449        add_thickbox();
    3550
     
    7388include(ABSPATH . 'wp-admin/admin-header.php');
    7489?>
    7590<div class="wrap">
    76 <h2><?php echo esc_html( $title ); ?></h2>
     91        <h2>
     92                <?php echo esc_html( $title ); ?>
     93               
     94                <a href="#" class="wp-upload-show add-new-h2"><?php echo __( 'Upload Plugin' ); ?></a>
     95                <a href="#" class="wp-upload-hide add-new-h2"><?php echo __( 'Browse', 'plugins' ); ?></a>
     96        </h2>
    7797
    78 <?php $wp_list_table->views(); ?>
     98        <?php install_plugins_upload(); ?>
    7999
    80 <br class="clear" />
    81 <?php
    82 /**
    83  * Fires after the plugins list table in each tab of the Install Plugins screen.
    84  *
    85  * The dynamic portion of the action hook, $tab, allows for targeting
    86  * individual tabs, for instance 'install_plugins_plugin-information'.
    87  *
    88  * @since 2.7.0
    89  *
    90  * @param int $paged The current page number of the plugins list table.
    91  */
    92 ?>
    93 <?php do_action( "install_plugins_$tab", $paged ); ?>
     100        <div class="hide-on-upload">
     101                <?php $wp_list_table->views(); ?>
     102       
     103                <br class="clear" />
     104       
     105                <?php
     106                /**
     107                 * Fires after the plugins list table in each tab of the Install Plugins screen.
     108                 *
     109                 * The dynamic portion of the action hook, $tab, allows for targeting
     110                 * individual tabs, for instance 'install_plugins_plugin-information'.
     111                 *
     112                 * @since 2.7.0
     113                 *
     114                 * @param int $paged The current page number of the plugins list table.
     115                 */
     116                do_action( "install_plugins_$tab", $paged ); ?>
     117        </div>
    94118</div>
    95119<?php
    96120/**
  • trunk/src/wp-admin/theme-install.php

     
    125125                 */
    126126                $tabs = apply_filters( 'install_themes_tabs', $tabs );
    127127                foreach ( $tabs as $tab_slug => $tab_name ) {
    128                         echo '<a href="#" class="' . esc_attr( $tab_slug ) . ' add-new-h2">' . $tab_name . '</a>';
     128                        $visibility = $tab_slug == 'upload' ? ' wp-upload-show' : ' wp-upload-hide';
     129                       
     130                        echo '<a href="#" class="' . esc_attr( $tab_slug ) . $visibility . ' add-new-h2">' . $tab_name . '</a>';
    129131                }
    130132                ?>
    131133        </h2>
    132134
    133         <div class="upload-theme">
    134135        <?php install_themes_upload(); ?>
    135         </div>
    136 
    137         <div class="theme-navigation">
     136       
     137        <div class="theme-navigation hide-on-upload">
    138138                <span class="theme-count"></span>
    139139                <a class="theme-section" href="#" data-sort="featured"><?php _ex( 'Featured', 'themes' ); ?></a>
    140140                <a class="theme-section" href="#" data-sort="popular"><?php _ex( 'Popular', 'themes' ); ?></a>
     
    175175                        </div>
    176176                </div>
    177177        </div>
    178         <div class="theme-browser"></div>
     178        <div class="theme-browser hide-on-upload"></div>
    179179        <div class="theme-install-overlay wp-full-overlay expanded"></div>
    180180
    181181        <p class="no-themes"><?php _e( 'No themes found. Try a different search.' ); ?></p>
  • trunk/src/wp-includes/script-loader.php

     
    486486                        'error' => __('Error while saving the changes.')
    487487                ) );
    488488
    489                 $scripts->add( 'plugin-install', "/wp-admin/js/plugin-install$suffix.js", array( 'jquery', 'thickbox' ), false, 1 );
    490                 did_action( 'init' ) && $scripts->localize( 'plugin-install', 'plugininstallL10n', array(
    491                         'plugin_information' => __('Plugin Information:'),
    492                         'ays' => __('Are you sure you want to install this plugin?')
    493                 ) );
     489                $scripts->add( 'plugin', "/wp-admin/js/plugin$suffix.js", array( 'wp-backbone' ), false, 1 );
    494490
    495491                $scripts->add( 'updates', "/wp-admin/js/updates$suffix.js", array( 'jquery' ) );
    496492