From 8dcc7aaa98f9ea97df767d85851575a88d57f4bc Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Wed, 30 Apr 2025 16:27:46 +0530 Subject: [PATCH 01/11] Administration: Fix Tags screen 'No tags found' message and tablenav visibility --- src/js/_enqueues/admin/tags.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index 3b6cf2b4892e7..cb657410cea83 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -42,7 +42,19 @@ jQuery( function($) { $.post(ajaxurl, data, function(r){ if ( '1' == r ) { $('#ajax-response').empty(); - tr.fadeOut('normal', function(){ tr.remove(); }); + tr.fadeOut('normal', function() { + tr.remove(); + + if ( $('#the-list tr').length === 0 ) { + $('#the-list').append( + '' + + wp.i18n.__( 'No tags found.' ) + + '' + ); + + $('.tablenav').hide(); + } + }); /** * Removes the term from the parent box and the tag cloud. From 338d2c7cb76a6ead43fe959e63d2c2041b4b22de Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Mon, 5 May 2025 22:16:41 +0530 Subject: [PATCH 02/11] Administration: Update tag count display in tablenav after adding/removing tags --- src/js/_enqueues/admin/tags.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index cb657410cea83..1641591ed0137 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -54,6 +54,10 @@ jQuery( function($) { $('.tablenav').hide(); } + + var itemCount = $('#the-list tr').length; + var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); + $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); }); /** @@ -171,6 +175,10 @@ jQuery( function($) { } $('input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):visible, textarea:visible', form).val(''); + + var itemCount = $('#the-list tr').length; + var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); + $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); }); return false; From 0577a55b629426ee9e250ce089a54437a10bb8b4 Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Mon, 5 May 2025 22:27:17 +0530 Subject: [PATCH 03/11] Administration: Show search box and tablenav when items are present in the tags list --- src/js/_enqueues/admin/tags.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index 1641591ed0137..8885eb817340f 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -53,6 +53,7 @@ jQuery( function($) { ); $('.tablenav').hide(); + $('p.search-box').hide(); } var itemCount = $('#the-list tr').length; @@ -179,6 +180,11 @@ jQuery( function($) { var itemCount = $('#the-list tr').length; var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); + + if ( itemCount === 1 ) { + $('.tablenav').show(); + $('p.search-box').show(); + } }); return false; From 9f820be8cc373262a599f7b10b32eccab676a2bc Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Tue, 6 May 2025 09:12:51 +0530 Subject: [PATCH 04/11] Administration: Adjust tag count handling for pagination consistency --- src/js/_enqueues/admin/tags.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index 8885eb817340f..b67c196b1e345 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -56,7 +56,8 @@ jQuery( function($) { $('p.search-box').hide(); } - var itemCount = $('#the-list tr').length; + var currentCount = parseInt( $('.tablenav-pages .displaying-num').first().text().match(/\d+/) ) || 0; + var itemCount = currentCount - 1 || 0; var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); }); @@ -177,7 +178,8 @@ jQuery( function($) { $('input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):visible, textarea:visible', form).val(''); - var itemCount = $('#the-list tr').length; + var currentCount = parseInt( $('.tablenav-pages .displaying-num').first().text().match(/\d+/) ) || 0; + var itemCount = currentCount + 1 || 0; var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); From 35f7f4a3304562281a076db11549bac500c7fd39 Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Wed, 30 Apr 2025 16:27:46 +0530 Subject: [PATCH 05/11] Administration: Fix Tags screen 'No tags found' message and tablenav visibility --- src/js/_enqueues/admin/tags.js | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index ff7761adb8d3e..a414baf347f03 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -49,18 +49,19 @@ jQuery( function($) { var message; if ( '1' == r ) { $('#ajax-response').empty(); - let nextFocus = tr.next( 'tr' ).find( 'a.row-title' ); - let prevFocus = tr.prev( 'tr' ).find( 'a.row-title' ); - // If there is neither a next row or a previous row, focus the tag input field. - if ( nextFocus.length < 1 && prevFocus.length < 1 ) { - nextFocus = $( '#tag-name' ).trigger( 'focus' ); - } else { - if ( nextFocus.length < 1 ) { - nextFocus = prevFocus; - } - } + tr.fadeOut('normal', function() { + tr.remove(); + + if ( $('#the-list tr').length === 0 ) { + $('#the-list').append( + '' + + wp.i18n.__( 'No tags found.' ) + + '' + ); - tr.fadeOut('normal', function(){ tr.remove(); }); + $('.tablenav').hide(); + } + }); /** * Removes the term from the parent box and the tag cloud. @@ -73,7 +74,7 @@ jQuery( function($) { $('a.tag-link-' + data.match(/tag_ID=(\d+)/)[1]).remove(); nextFocus.trigger( 'focus' ); message = wp.i18n.__( 'The selected tag has been deleted.' ); - + } else if ( '-1' == r ) { message = wp.i18n.__( 'Sorry, you are not allowed to do that.' ); $('#ajax-response').empty().append('

' + message + '

'); From e9529b38827f5facb87b152e8cc75dcac378ffba Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Mon, 5 May 2025 22:16:41 +0530 Subject: [PATCH 06/11] Administration: Update tag count display in tablenav after adding/removing tags --- src/js/_enqueues/admin/tags.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index a414baf347f03..5f5f0f1128c02 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -61,6 +61,10 @@ jQuery( function($) { $('.tablenav').hide(); } + + var itemCount = $('#the-list tr').length; + var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); + $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); }); /** @@ -193,6 +197,10 @@ jQuery( function($) { } $('input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):visible, textarea:visible', form).val(''); + + var itemCount = $('#the-list tr').length; + var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); + $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); }); return false; From 8f1236748a3c9f23a1992c0379bee137988b414e Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Mon, 5 May 2025 22:27:17 +0530 Subject: [PATCH 07/11] Administration: Show search box and tablenav when items are present in the tags list --- src/js/_enqueues/admin/tags.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index 5f5f0f1128c02..d29d512fb80ad 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -60,6 +60,7 @@ jQuery( function($) { ); $('.tablenav').hide(); + $('p.search-box').hide(); } var itemCount = $('#the-list tr').length; @@ -201,6 +202,11 @@ jQuery( function($) { var itemCount = $('#the-list tr').length; var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); + + if ( itemCount === 1 ) { + $('.tablenav').show(); + $('p.search-box').show(); + } }); return false; From ae6352a60349ce5225ba8fc773b7250a049124af Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Tue, 6 May 2025 09:12:51 +0530 Subject: [PATCH 08/11] Administration: Adjust tag count handling for pagination consistency --- src/js/_enqueues/admin/tags.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index d29d512fb80ad..37259d4e5b328 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -63,7 +63,8 @@ jQuery( function($) { $('p.search-box').hide(); } - var itemCount = $('#the-list tr').length; + var currentCount = parseInt( $('.tablenav-pages .displaying-num').first().text().match(/\d+/) ) || 0; + var itemCount = currentCount - 1 || 0; var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); }); @@ -199,7 +200,8 @@ jQuery( function($) { $('input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):visible, textarea:visible', form).val(''); - var itemCount = $('#the-list tr').length; + var currentCount = parseInt( $('.tablenav-pages .displaying-num').first().text().match(/\d+/) ) || 0; + var itemCount = currentCount + 1 || 0; var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); From eeb7d1a428821fa53f2443e6f62cf2824f5aafda Mon Sep 17 00:00:00 2001 From: Joe Dolson Date: Fri, 31 Oct 2025 16:20:04 -0500 Subject: [PATCH 09/11] Restore focus management PR removed this; needed for accessibility. --- src/js/_enqueues/admin/tags.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index 37259d4e5b328..52a74d382518a 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -49,6 +49,16 @@ jQuery( function($) { var message; if ( '1' == r ) { $('#ajax-response').empty(); + let nextFocus = tr.next( 'tr' ).find( 'a.row-title' ); + let prevFocus = tr.prev( 'tr' ).find( 'a.row-title' ); + // If there is neither a next row or a previous row, focus the tag input field. + if ( nextFocus.length < 1 && prevFocus.length < 1 ) { + nextFocus = $( '#tag-name' ).trigger( 'focus' ); + } else { + if ( nextFocus.length < 1 ) { + nextFocus = prevFocus; + } + } tr.fadeOut('normal', function() { tr.remove(); From d3145cd437684764bc1ff21702bf04c7ab436904 Mon Sep 17 00:00:00 2001 From: Joe Dolson Date: Fri, 31 Oct 2025 16:44:40 -0500 Subject: [PATCH 10/11] Use `wp.i18n._n` to handle singular/plural translations. --- src/js/_enqueues/admin/tags.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index 52a74d382518a..5e995b45c2fd7 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -75,8 +75,8 @@ jQuery( function($) { var currentCount = parseInt( $('.tablenav-pages .displaying-num').first().text().match(/\d+/) ) || 0; var itemCount = currentCount - 1 || 0; - var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); - $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); + var itemText = wp.i18n._n( '%d item', '%d items', itemCount ); + $('.tablenav-pages .displaying-num').text( itemText ); }); /** @@ -212,8 +212,8 @@ jQuery( function($) { var currentCount = parseInt( $('.tablenav-pages .displaying-num').first().text().match(/\d+/) ) || 0; var itemCount = currentCount + 1 || 0; - var itemText = itemCount === 1 ? wp.i18n.__('item') : wp.i18n.__('items'); - $('.tablenav-pages .displaying-num').text( itemCount + ' ' + itemText); + var itemText = wp.i18n._n( '%d item', '%d items', itemCount ); + $('.tablenav-pages .displaying-num').text( itemText ); if ( itemCount === 1 ) { $('.tablenav').show(); From 3cc5625fe6c0592d296ea1578fd425b6465f859d Mon Sep 17 00:00:00 2001 From: Joe Dolson Date: Fri, 31 Oct 2025 16:59:19 -0500 Subject: [PATCH 11/11] Don't duplicate table nav update code Simplifies and avoids repetition. --- src/js/_enqueues/admin/tags.js | 54 ++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/src/js/_enqueues/admin/tags.js b/src/js/_enqueues/admin/tags.js index 5e995b45c2fd7..e00235496c8e1 100644 --- a/src/js/_enqueues/admin/tags.js +++ b/src/js/_enqueues/admin/tags.js @@ -61,22 +61,7 @@ jQuery( function($) { } tr.fadeOut('normal', function() { tr.remove(); - - if ( $('#the-list tr').length === 0 ) { - $('#the-list').append( - '' + - wp.i18n.__( 'No tags found.' ) + - '' - ); - - $('.tablenav').hide(); - $('p.search-box').hide(); - } - - var currentCount = parseInt( $('.tablenav-pages .displaying-num').first().text().match(/\d+/) ) || 0; - var itemCount = currentCount - 1 || 0; - var itemText = wp.i18n._n( '%d item', '%d items', itemCount ); - $('.tablenav-pages .displaying-num').text( itemText ); + updateTableNavCount(); }); /** @@ -120,6 +105,33 @@ jQuery( function($) { tr.find( ':input, a' ).prop( 'disabled', false ).removeAttr( 'tabindex' ); } + /** + * Update the row count for table navigation.. + * + * @return {void} + */ + function updateTableNavCount( action = 'remove' ) { + var currentCount = parseInt( $('.tablenav-pages .displaying-num').first().text().match(/\d+/) ) || 0; + var itemCount = ( 'remove' === action ) ? currentCount - 1 || 0 : currentCount + 1; + var itemText = wp.i18n.sprintf( wp.i18n._n( '%d item', '%d items', itemCount ), itemCount ); + $('.tablenav-pages .displaying-num').text( itemText ); + // Show the tablenav if row count positive. + if ( itemCount === 1 ) { + $('.tablenav').show(); + $('p.search-box').show(); + } + if ( $('#the-list tr').length === 0 ) { + $('#the-list').append( + '' + + wp.i18n.__( 'No tags found.' ) + + '' + ); + + $('.tablenav').hide(); + $('p.search-box').hide(); + } + } + /** * Adds a deletion confirmation when removing a tag. * @@ -210,15 +222,7 @@ jQuery( function($) { $('input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):visible, textarea:visible', form).val(''); - var currentCount = parseInt( $('.tablenav-pages .displaying-num').first().text().match(/\d+/) ) || 0; - var itemCount = currentCount + 1 || 0; - var itemText = wp.i18n._n( '%d item', '%d items', itemCount ); - $('.tablenav-pages .displaying-num').text( itemText ); - - if ( itemCount === 1 ) { - $('.tablenav').show(); - $('p.search-box').show(); - } + updateTableNavCount( 'add' ); }); return false;