Make WordPress Core

Ticket #33030: 33030-updates.diff

File 33030-updates.diff, 9.9 KB (added by afercia, 6 years ago)
  • src/js/_enqueues/wp/updates.js

     
    279279                        $appearanceNavMenuUpdateCount = $( 'a[href="themes.php"] .update-plugins' ),
    280280                        itemCount;
    281281
    282                 $adminBarUpdates.find( '.ab-item' ).removeAttr( 'title' );
     282                $adminBarUpdates.find( '.ab-item' ).attr( 'title', settings.totals.title );
    283283                $adminBarUpdates.find( '.ab-label' ).text( settings.totals.counts.total );
     284                $adminBarUpdates.find( '.updates-total-text' ).text( settings.totals.title );
    284285
    285286                // Remove the update count from the toolbar if it's zero.
    286287                if ( 0 === settings.totals.counts.total ) {
     
    293294                } );
    294295                if ( settings.totals.counts.total > 0 ) {
    295296                        $dashboardNavMenuUpdateCount.find( '.update-count' ).text( settings.totals.counts.total );
     297                        $dashboardNavMenuUpdateCount.find( '.updates-total-text' ).text( settings.totals.title );
    296298                } else {
    297299                        $dashboardNavMenuUpdateCount.remove();
    298300                }
     
    303305                } );
    304306                if ( settings.totals.counts.total > 0 ) {
    305307                        $pluginsNavMenuUpdateCount.find( '.plugin-count' ).text( settings.totals.counts.plugins );
     308                        $pluginsNavMenuUpdateCount.find( '.updates-plugins-text' ).text( settings.totals.titles.plugins );
    306309                } else {
    307310                        $pluginsNavMenuUpdateCount.remove();
    308311                }
     
    340343         *
    341344         * @since 3.9.0
    342345         *
    343          * @param {string} type The type of item that was updated or deleted.
    344          *                      Can be 'plugin', 'theme'.
     346         * @param {string} type       The type of item that was updated or deleted.
     347         *                            Can be 'plugin', 'theme'.
     348         * @param {object} updateData The available updates counts and UI strings.
    345349         */
    346         wp.updates.decrementCount = function( type ) {
     350        wp.updates.decrementCount = function( type, updateData ) {
    347351                settings.totals.counts.total = Math.max( --settings.totals.counts.total, 0 );
     352                settings.totals.title        = updateData.title;
    348353
    349354                if ( 'plugin' === type ) {
    350355                        settings.totals.counts.plugins = Math.max( --settings.totals.counts.plugins, 0 );
     356                        settings.totals.titles.plugins = updateData.titles.plugins;
    351357                } else if ( 'theme' === type ) {
    352358                        settings.totals.counts.themes = Math.max( --settings.totals.counts.themes, 0 );
    353359                }
    354360
    355                 wp.updates.refreshCount( type );
     361                wp.updates.refreshCount();
    356362        };
    357363
    358364        /**
     
    442448
    443449                wp.a11y.speak( wp.updates.l10n.updatedMsg, 'polite' );
    444450
    445                 wp.updates.decrementCount( 'plugin' );
     451                wp.updates.decrementCount( 'plugin', response.updateData );
    446452
    447453                $document.trigger( 'wp-plugin-update-success', response );
    448454        };
     
    802808                        // Remove plugin from update count.
    803809                        if ( -1 !== _.indexOf( plugins.upgrade, response.plugin ) ) {
    804810                                plugins.upgrade = _.without( plugins.upgrade, response.plugin );
    805                                 wp.updates.decrementCount( 'plugin' );
     811                                wp.updates.decrementCount( 'plugin', response.updateData );
    806812                        }
    807813
    808814                        // Remove from views.
     
    10151021                wp.updates.addAdminNotice( _.extend( { selector: $notice }, updatedMessage ) );
    10161022                wp.a11y.speak( wp.updates.l10n.updatedMsg, 'polite' );
    10171023
    1018                 wp.updates.decrementCount( 'theme' );
     1024                wp.updates.decrementCount( 'theme', response.updateData );
    10191025
    10201026                $document.trigger( 'wp-theme-update-success', response );
    10211027
     
    12921298                                // Remove theme from update count.
    12931299                                if ( $themeRow.hasClass( 'update' ) ) {
    12941300                                        totals.upgrade--;
    1295                                         wp.updates.decrementCount( 'theme' );
     1301                                        wp.updates.decrementCount( 'theme', response.updateData );
    12961302                                }
    12971303
    12981304                                // Remove from views.
     
    24362442
    24372443                                // Called from `wp-admin/includes/class-wp-upgrader-skins.php`.
    24382444                                case 'decrementUpdateCount':
    2439                                         /** @property {string} message.upgradeType */
    2440                                         wp.updates.decrementCount( message.upgradeType );
     2445                                        wp.updates.decrementCount( message.upgradeType, message.upgradeData );
    24412446                                        break;
    24422447
    24432448                                case 'install-plugin':
  • src/wp-admin/includes/ajax-actions.php

     
    39213921                        $status['newVersion'] = $theme->get( 'Version' );
    39223922                }
    39233923
     3924                // Add available updates counts and UI strings to the response.
     3925                $update_data = wp_get_update_data();
     3926                $status['updateData'] = $update_data;
     3927
    39243928                wp_send_json_success( $status );
    39253929        } elseif ( false === $result ) {
    39263930                global $wp_filesystem;
     
    40104014                wp_send_json_error( $status );
    40114015        }
    40124016
     4017        // Add available updates counts and UI strings to the response.
     4018        $update_data = wp_get_update_data();
     4019        $status['updateData'] = $update_data;
     4020
    40134021        wp_send_json_success( $status );
    40144022}
    40154023
     
    42094217                        /* translators: %s: Plugin version */
    42104218                        $status['newVersion'] = sprintf( __( 'Version %s' ), $plugin_data['Version'] );
    42114219                }
     4220
     4221                // Add available updates counts and UI strings to the response.
     4222                $update_data = wp_get_update_data();
     4223                $status['updateData'] = $update_data;
     4224
    42124225                wp_send_json_success( $status );
    42134226        } elseif ( false === $result ) {
    42144227                global $wp_filesystem;
     
    43014314                wp_send_json_error( $status );
    43024315        }
    43034316
     4317        // Add available updates counts and UI strings to the response.
     4318        $update_data = wp_get_update_data();
     4319        $status['updateData'] = $update_data;
     4320
    43044321        wp_send_json_success( $status );
    43054322}
    43064323
  • src/wp-admin/includes/class-wp-upgrader-skin.php

     
    182182                        return;
    183183                }
    184184
     185                // At this point, the strings generated by `wp_get_update_data()` are
     186                // incorrect until all updates have finished - the data is cached,
     187                // and isn't regenerated until the end of the update process.
     188                // See https://core.trac.wordpress.org/ticket/29022#comment:7
     189                $update_data = wp_json_encode( wp_get_update_data() );
     190
    185191                if ( defined( 'IFRAME_REQUEST' ) ) {
    186192                        echo '<script type="text/javascript">
    187193                                        if ( window.postMessage && JSON ) {
    188                                                 window.parent.postMessage( JSON.stringify( { action: "decrementUpdateCount", upgradeType: "' . $type . '" } ), window.location.protocol + "//" + window.location.hostname );
     194                                                window.parent.postMessage( JSON.stringify( { action: "decrementUpdateCount", upgradeType: "' . $type . '", upgradeData: ' . $update_data . ' } ), window.location.protocol + "//" + window.location.hostname );
    189195                                        }
    190196                                </script>';
    191197                } else {
    192198                        echo '<script type="text/javascript">
    193199                                        (function( wp ) {
    194                                                 if ( wp && wp.updates && wp.updates.decrementCount )
    195                                                         wp.updates.decrementCount( "' . $type . '" );
     200                                                if ( wp && wp.updates && wp.updates.decrementCount ) {
     201                                                        wp.updates.decrementCount( "' . $type . '", ' . $update_data . ' );
    196202                                                }
    197203                                        })( window.wp );
    198204                                </script>';
  • src/wp-admin/menu.php

     
    4242        } else {
    4343                $cap = 'update_languages';
    4444        }
    45         $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' );
     45
     46        $updates_text = '';
     47        if ( isset( $update_data['title'] ) ) {
     48                $updates_text = '<span class="updates-total-text screen-reader-text">' . $update_data['title'] . '</span>';
     49        }
     50
     51        $submenu['index.php'][10] = array( sprintf( __( 'Updates %s' ), "<span class='update-plugins count-{$update_data['counts']['total']}'><span class='update-count' aria-hidden='true'>" . number_format_i18n( $update_data['counts']['total'] ) . '</span>' . $updates_text . '</span>' ), $cap, 'update-core.php' );
    4652        unset( $cap );
    4753}
    4854
     
    211217        if ( ! isset( $update_data ) ) {
    212218                $update_data = wp_get_update_data();
    213219        }
    214         $count = "<span class='update-plugins count-{$update_data['counts']['plugins']}'><span class='plugin-count'>" . number_format_i18n( $update_data['counts']['plugins'] ) . '</span></span>';
     220
     221        $updates_plugin_text = '';
     222        if ( isset( $update_data['titles']['plugins'] ) ) {
     223                $updates_plugin_text = '<span class="updates-plugins-text screen-reader-text">' . $update_data['titles']['plugins'] . '</span>';
     224        }
     225
     226        $count = "<span class='update-plugins count-{$update_data['counts']['plugins']}'><span class='plugin-count' aria-hidden='true'>" . number_format_i18n( $update_data['counts']['plugins'] ) . '</span>' . $updates_plugin_text . '</span>';
    215227}
    216228
    217229$menu[65] = array( sprintf( __( 'Plugins %s' ), $count ), 'activate_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'dashicons-admin-plugins' );
  • src/wp-includes/admin-bar.php

     
    997997                return;
    998998        }
    999999
    1000         $title  = '<span class="ab-icon"></span><span class="ab-label">' . number_format_i18n( $update_data['counts']['total'] ) . '</span>';
    1001         $title .= '<span class="screen-reader-text">' . $update_data['title'] . '</span>';
     1000        $title  = '<span class="ab-icon"></span><span class="ab-label" aria-hidden="true">' . number_format_i18n( $update_data['counts']['total'] ) . '</span>';
     1001        $title .= '<span class="updates-total-text screen-reader-text">' . $update_data['title'] . '</span>';
    10021002
    10031003        $wp_admin_bar->add_menu(
    10041004                array(
  • src/wp-includes/update.php

     
    692692        $update_data = array(
    693693                'counts' => $counts,
    694694                'title'  => $update_title,
     695                'titles' => $titles,
    695696        );
    696697        /**
    697698         * Filters the returned array of update data for plugins, themes, and WordPress core.