Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions src/js/_enqueues/wp/updates.js
Original file line number Diff line number Diff line change
Expand Up @@ -356,13 +356,17 @@
/**
* Refreshes update counts everywhere on the screen.
*
* Top-level menu items repeat their count in the submenu header,
* which is shown when the admin menu is folded.
*
* @since 4.7.0
* @since 7.2.0 Also refreshes the counts in folded menu submenu headers.
*/
wp.updates.refreshCount = function() {
var $adminBarUpdates = $( '#wp-admin-bar-updates' ),
$dashboardNavMenuUpdateCount = $( 'a[href="update-core.php"] .update-plugins' ),
$pluginsNavMenuUpdateCount = $( 'a[href="plugins.php"] .update-plugins' ),
$appearanceNavMenuUpdateCount = $( 'a[href="themes.php"] .update-plugins' ),
$pluginsNavMenuUpdateCount = $( 'a[href="plugins.php"] .update-plugins, #menu-plugins .wp-submenu-head .update-plugins' ),
$appearanceNavMenuUpdateCount = $( 'a[href="themes.php"] .update-plugins, #menu-appearance .wp-submenu-head .update-plugins' ),
itemCount;

$adminBarUpdates.find( '.ab-label' ).text( settings.totals.counts.total );
Expand Down
10 changes: 10 additions & 0 deletions tests/qunit/wp-admin/js/updates.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,32 @@ jQuery( function( $ ) {
var menuItemCount = $( '#menu-plugins' ).find( '.plugin-count' ).eq( 0 ).text();
var screenReaderItemCount = $( '#wp-admin-bar-updates' ).find( '.screen-reader-text' ).text();
var adminItemCount = $( '#wp-admin-bar-updates' ).find( '.ab-label' ).text();
var submenuHeadCount = $( '#menu-plugins .wp-submenu-head' ).find( '.plugin-count' ).text();
assert.equal( menuItemCount, 2, 'Initial value is correct' );
assert.equal( screenReaderItemCount, '2 Plugin Updates', 'Initial value is correct' );
assert.equal( adminItemCount, 2, 'Initial value is correct' );
assert.equal( submenuHeadCount, 2, 'Initial submenu header value is correct' );

wp.updates.decrementCount( 'plugin' );

// Re-read these values.
menuItemCount = $( '#menu-plugins' ).find( '.plugin-count' ).eq( 0 ).text();
screenReaderItemCount = $( '#wp-admin-bar-updates' ).find( '.screen-reader-text' ).text();
adminItemCount = $( '#wp-admin-bar-updates' ).find( '.ab-label' ).text();
submenuHeadCount = $( '#menu-plugins .wp-submenu-head' ).find( '.plugin-count' ).text();
assert.equal( menuItemCount, 1 );

// @todo: Update screen reader count.
// Should the screenReader count change? Is that announced to the user?
// assert.equal( screenReaderItemCount, '1 Plugin Update' );
assert.equal( adminItemCount, 1 );

// The submenu header shows the count when the admin menu is folded.
assert.equal( submenuHeadCount, 1, 'Submenu header count is updated' );

// With no updates left, the count is removed from the menu item and its submenu header.
wp.updates.decrementCount( 'plugin' );
assert.equal( $( '#menu-plugins' ).find( '.plugin-count' ).length, 0, 'Both counts are removed when no updates remain' );
});

QUnit.test( '`beforeunload` should only fire when locked', function( assert ) {
Expand Down
Loading