WordPress.org

Make WordPress Core

Ticket #13071: 13071.2.diff

File 13071.2.diff, 10.9 KB (added by swissspidy, 5 years ago)
  • src/wp-admin/includes/class-wp-ms-themes-list-table.php

    diff --git src/wp-admin/includes/class-wp-ms-themes-list-table.php src/wp-admin/includes/class-wp-ms-themes-list-table.php
    index 82eafee..0f3865a 100644
    class WP_MS_Themes_List_Table extends WP_List_Table { 
    150150                $total_this_page = $totals[ $status ];
    151151
    152152                wp_localize_script( 'updates', '_wpUpdatesItemCounts', array(
    153                         'totals' => $totals,
     153                        'themes' => $totals,
     154                        'totals' => wp_get_update_data(),
    154155                ) );
    155156
    156157                if ( $orderby ) {
  • src/wp-admin/includes/class-wp-plugins-list-table.php

    diff --git src/wp-admin/includes/class-wp-plugins-list-table.php src/wp-admin/includes/class-wp-plugins-list-table.php
    index 7e2a3d3..6aa8788 100644
    class WP_Plugins_List_Table extends WP_List_Table { 
    253253
    254254                wp_localize_script( 'updates', '_wpUpdatesItemCounts', array(
    255255                        'plugins' => $js_plugins,
     256                        'totals'  => wp_get_update_data(),
    256257                ) );
    257258
    258259                if ( ! $orderby ) {
  • src/wp-admin/js/updates.js

    diff --git src/wp-admin/js/updates.js src/wp-admin/js/updates.js
    index 200241b..59ac1f8 100644
     
    2121 * @param {Array}   settings.plugins.inactive           Base names of inactive plugins.
    2222 * @param {Array}   settings.plugins.upgrade            Base names of plugins with updates available.
    2323 * @param {Array}   settings.plugins.recently_activated Base names of recently activated plugins.
    24  * @param {object=} settings.totals                     Plugin/theme status information or null.
    25  * @param {number}  settings.totals.all                 Amount of all plugins or themes.
    26  * @param {number}  settings.totals.upgrade             Amount of plugins or themes with updates available.
    27  * @param {number}  settings.totals.disabled            Amount of disabled themes.
     24 * @param {object=} settings.themes                     Plugin/theme status information or null.
     25 * @param {number}  settings.themes.all                 Amount of all themes.
     26 * @param {number}  settings.themes.upgrade             Amount of themes with updates available.
     27 * @param {number}  settings.themes.disabled            Amount of disabled themes.
     28 * @param {object=} settings.totals                     Combined information for available update counts.
     29 * @param {number}  settings.totals.count               Holds the amount of available updates.
    2830 */
    2931(function( $, wp, settings ) {
    3032        var $document = $( document );
     
    256258                }
    257259        };
    258260
    259         /**
    260          * Decrements the update counts throughout the various menus.
    261          *
    262          * This includes the toolbar, the "Updates" menu item and the menu items
    263          * for plugins and themes.
    264          *
    265          * @since 3.9.0
    266          *
    267          * @param {string} type The type of item that was updated or deleted.
    268          *                      Can be 'plugin', 'theme'.
    269          */
    270         wp.updates.decrementCount = function( type ) {
    271                 var $adminBarUpdates             = $( '#wp-admin-bar-updates' ),
    272                         $dashboardNavMenuUpdateCount = $( 'a[href="update-core.php"] .update-plugins' ),
    273                         count                        = $adminBarUpdates.find( '.ab-label' ).text(),
    274                         $menuItem, $itemCount, itemCount;
    275 
    276                 count = parseInt( count, 10 ) - 1;
    277 
    278                 if ( count < 0 || isNaN( count ) ) {
    279                         return;
    280                 }
     261        wp.updates.refreshCount = function() {
     262                var $adminBarUpdates              = $( '#wp-admin-bar-updates' ),
     263                    $dashboardNavMenuUpdateCount  = $( 'a[href="update-core.php"] .update-plugins' ),
     264                    $pluginsNavMenuUpdateCount    = $( 'a[href="plugins.php"] .update-plugins' ),
     265                    $appearanceNavMenuUpdateCount = $( 'a[href="themes.php"] .update-plugins' ),
     266                    itemCount;
    281267
    282268                $adminBarUpdates.find( '.ab-item' ).removeAttr( 'title' );
    283                 $adminBarUpdates.find( '.ab-label' ).text( count );
     269                $adminBarUpdates.find( '.ab-label' ).text( settings.totals.counts.total );
    284270
    285271                // Remove the update count from the toolbar if it's zero.
    286                 if ( ! count ) {
     272                if ( 0 === settings.totals.counts.total ) {
    287273                        $adminBarUpdates.find( '.ab-label' ).parents( 'li' ).remove();
    288274                }
    289275
    290276                // Update the "Updates" menu item.
    291277                $dashboardNavMenuUpdateCount.each( function( index, element ) {
    292                         element.className = element.className.replace( /count-\d+/, 'count-' + count );
     278                        element.className = element.className.replace( /count-\d+/, 'count-' + settings.totals.counts.total );
    293279                } );
    294 
    295                 $dashboardNavMenuUpdateCount.removeAttr( 'title' );
    296                 $dashboardNavMenuUpdateCount.find( '.update-count' ).text( count );
    297 
    298                 if ( 'plugin' === type ) {
    299                         $menuItem  = $( '#menu-plugins' );
    300                         $itemCount = $menuItem.find( '.plugin-count' );
    301                 } else if ( 'theme' === type ) {
    302                         $menuItem  = $( '#menu-appearance' );
    303                         $itemCount = $menuItem.find( '.theme-count' );
     280                if ( 0 < settings.totals.counts.total ) {
     281                        $dashboardNavMenuUpdateCount.find( '.update-count' ).text( settings.totals.counts.total );
     282                } else {
     283                        $dashboardNavMenuUpdateCount.remove();
    304284                }
    305285
    306                 // Decrement the counter of the other menu items.
    307                 if ( $itemCount ) {
    308                         itemCount = $itemCount.eq( 0 ).text();
    309                         itemCount = parseInt( itemCount, 10 ) - 1;
     286                // Update the "Plugins" menu item.
     287                $pluginsNavMenuUpdateCount.each( function( index, element ) {
     288                        element.className = element.className.replace( /count-\d+/, 'count-' + settings.totals.counts.plugins );
     289                } );
     290                if ( 0 < settings.totals.counts.total ) {
     291                        $pluginsNavMenuUpdateCount.find( '.plugin-count' ).text( settings.totals.counts.plugins );
     292                } else {
     293                        $pluginsNavMenuUpdateCount.remove();
    310294                }
    311295
    312                 if ( itemCount < 0 || isNaN( itemCount ) ) {
    313                         return;
     296                // Update the "Appearance" menu item.
     297                $appearanceNavMenuUpdateCount.each( function( index, element ) {
     298                        element.className = element.className.replace( /count-\d+/, 'count-' + settings.totals.counts.themes );
     299                } );
     300                if ( 0 < settings.totals.counts.total ) {
     301                        $appearanceNavMenuUpdateCount.find( '.theme-count' ).text( settings.totals.counts.themes );
     302                } else {
     303                        $appearanceNavMenuUpdateCount.remove();
    314304                }
    315305
    316                 if ( itemCount > 0 ) {
    317                         $( '.subsubsub .upgrade .count' ).text( '(' + itemCount + ')' );
     306                // Update list table filter navigation.
     307                if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
     308                        itemCount = settings.totals.counts.plugins;
     309                } else if ( 'themes' === pagenow || 'themes-network' === pagenow ) {
     310                        itemCount = settings.totals.counts.themes;
     311                }
    318312
    319                         $itemCount.text( itemCount );
    320                         $menuItem.find( '.update-plugins' ).each( function( index, element ) {
    321                                 element.className = element.className.replace( /count-\d+/, 'count-' + itemCount );
    322                         } );
     313                if ( 0 < itemCount ) {
     314                        $( '.subsubsub .upgrade .count' ).text( '(' + settings.totals.counts.themes + ')' );
    323315                } else {
    324316                        $( '.subsubsub .upgrade' ).remove();
    325                         $menuItem.find( '.update-plugins' ).remove();
    326317                }
     318        }
     319
     320        /**
     321         * Decrements the update counts throughout the various menus.
     322         *
     323         * This includes the toolbar, the "Updates" menu item and the menu items
     324         * for plugins and themes.
     325         *
     326         * @since 3.9.0
     327         *
     328         * @param {string} type The type of item that was updated or deleted.
     329         *                      Can be 'plugin', 'theme'.
     330         */
     331        wp.updates.decrementCount = function( type ) {
     332                settings.totals.counts.total = Math.max( --settings.totals.counts.total, 0 );
     333
     334                if ( 'plugin' === type ) {
     335                        settings.totals.counts.plugins = Math.max( --settings.totals.counts.plugins, 0 );
     336                } else if ( 'theme' === type ) {
     337                        settings.totals.counts.themes = Math.max( --settings.totals.counts.themes, 0 );
     338                }
     339
     340                wp.updates.refreshCount( type );
    327341        };
    328342
    329343        /**
     
    12171231                        $themeRows.css( { backgroundColor: '#faafaa' } ).fadeOut( 350, function() {
    12181232                                var $views     = $( '.subsubsub' ),
    12191233                                        $themeRow  = $( this ),
    1220                                         totals     = settings.totals,
     1234                                        totals     = settings.themes,
    12211235                                        deletedRow = wp.template( 'item-deleted-row' );
    12221236
    12231237                                if ( ! $themeRow.hasClass( 'plugin-update-tr' ) ) {
     
    16551669                        $pluginSearch        = $( '.plugins-php .wp-filter-search' ),
    16561670                        $pluginInstallSearch = $( '.plugin-install-php .wp-filter-search' );
    16571671
     1672                settings = _.extend( settings, window._wpUpdatesItemCounts || {} );
     1673
     1674                if ( settings.totals ) {
     1675                        wp.updates.refreshCount();
     1676                }
     1677
    16581678                /*
    16591679                 * Whether a user needs to submit filesystem credentials.
    16601680                 *
     
    23782398                 */
    23792399                $( window ).on( 'beforeunload', wp.updates.beforeunload );
    23802400        } );
    2381 })( jQuery, window.wp, _.extend( window._wpUpdatesSettings, window._wpUpdatesItemCounts || {} ) );
     2401})( jQuery, window.wp, window._wpUpdatesSettings );
  • src/wp-admin/menu.php

    diff --git src/wp-admin/menu.php src/wp-admin/menu.php
    index 6c0b38f..2fd146b 100644
    if ( ! is_multisite() ) { 
    3838                $cap = 'update_plugins';
    3939        else
    4040                $cap = 'update_themes';
    41         $submenu[ 'index.php' ][10] = array( sprintf( __('Updates %s'), "<span class='update-plugins count-{$update_data['counts']['total']}' title='{$update_data['title']}'><span class='update-count'>" . number_format_i18n($update_data['counts']['total']) . "</span></span>" ), $cap, 'update-core.php');
     41        $submenu[ 'index.php' ][10] = array( sprintf( __('Updates %s'), "<span class='update-plugins count-{$update_data['counts']['total']}'><span class='update-count'>" . number_format_i18n($update_data['counts']['total']) . "</span></span>" ), $cap, 'update-core.php');
    4242        unset( $cap );
    4343}
    4444
  • src/wp-admin/network/menu.php

    diff --git src/wp-admin/network/menu.php src/wp-admin/network/menu.php
    index 8b5f002..1cb22f2 100644
    $submenu['index.php'][0] = array( __( 'Home' ), 'read', 'index.php' ); 
    1414
    1515$update_data = wp_get_update_data();
    1616if ( $update_data['counts']['total'] ) {
    17         $submenu['index.php'][10] = array( sprintf( __( 'Updates %s' ), "<span class='update-plugins count-{$update_data['counts']['total']}' title='{$update_data['title']}'><span class='update-count'>" . number_format_i18n( $update_data['counts']['total'] ) . "</span></span>" ), 'update_core', 'update-core.php' );
     17        $submenu['index.php'][10] = array( sprintf( __( 'Updates %s' ), "<span class='update-plugins count-{$update_data['counts']['total']}'><span class='update-count'>" . number_format_i18n( $update_data['counts']['total'] ) . "</span></span>" ), 'update_core', 'update-core.php' );
    1818} else {
    1919        $submenu['index.php'][10] = array( __( 'Updates' ), 'update_core', 'update-core.php' );
    2020}
  • src/wp-admin/update-core.php

    diff --git src/wp-admin/update-core.php src/wp-admin/update-core.php
    index d203a8b..e4a99a9 100644
    if ( 'upgrade-core' == $action ) { 
    614614         */
    615615        do_action( 'core_upgrade_preamble' );
    616616        echo '</div>';
     617
     618        printf(
     619                '<script type="text/javascript">/* <![CDATA[ */var _wpUpdatesItemCounts = %s/* ]]> */</script>',
     620                json_encode( array( 'totals' => wp_get_update_data() ) )
     621        );
     622
    617623        include(ABSPATH . 'wp-admin/admin-footer.php');
    618624
    619625} elseif ( 'do-core-upgrade' == $action || 'do-core-reinstall' == $action ) {