From 80569cc816ad09a7083c6884f20ce0975ce78e02 Mon Sep 17 00:00:00 2001 From: Andrea Fercia Date: Wed, 11 Nov 2015 00:23:15 +0000 Subject: [PATCH] Accessibility: improvements for the taxonomies Quick Edit form. Changes the "Cancel" and "Update" controls in buttons for better semantics and accessibility. On cancel and successful saving, moves focus back to the term title to avoid a focus loss. Dispatches error and success messages to `wp.a11y.speak` to give assistive technologies users an audible feedback. Patch prepared at #wpcdit, first Italian WordPress Contributor Day. Props garusky, chiara_09. Fixes #34613. git-svn-id: https://develop.svn.wordpress.org/trunk@35605 602fd350-edb4-49c9-b593-d223f7449a82 --- .../includes/class-wp-terms-list-table.php | 4 +-- src/wp-admin/js/inline-edit-tax.js | 33 ++++++++++++------- src/wp-includes/script-loader.php | 5 +-- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/wp-admin/includes/class-wp-terms-list-table.php b/src/wp-admin/includes/class-wp-terms-list-table.php index 8cfeedf673..765b1a36b3 100644 --- a/src/wp-admin/includes/class-wp-terms-list-table.php +++ b/src/wp-admin/includes/class-wp-terms-list-table.php @@ -588,8 +588,8 @@ class WP_Terms_List_Table extends WP_List_Table { ?>

- - labels->update_item; ?> + + diff --git a/src/wp-admin/js/inline-edit-tax.js b/src/wp-admin/js/inline-edit-tax.js index 99bfca4632..a05dc0954f 100644 --- a/src/wp-admin/js/inline-edit-tax.js +++ b/src/wp-admin/js/inline-edit-tax.js @@ -1,7 +1,8 @@ /* global inlineEditL10n, ajaxurl */ +window.wp = window.wp || {}; var inlineEditTax; -(function($) { +( function( $, wp ) { inlineEditTax = { init : function() { @@ -22,10 +23,10 @@ inlineEditTax = { } }); - $( 'a.cancel', row ).click( function() { + $( '.cancel', row ).click( function() { return inlineEditTax.revert(); }); - $( 'a.save', row ).click( function() { + $( '.save', row ).click( function() { return inlineEditTax.save(this); }); $( 'input, select', row ).keydown( function( e ) { @@ -96,7 +97,9 @@ inlineEditTax = { // make ajax request $.post( ajaxurl, params, function(r) { - var row, new_id, option_value; + var row, new_id, option_value, + $errorSpan = $( '#edit-' + id + ' .inline-edit-save .error' ); + $( 'table.widefat .spinner' ).removeClass( 'is-active' ); if (r) { @@ -117,16 +120,23 @@ inlineEditTax = { // Update the value in the Parent dropdown. $( '#parent' ).find( 'option[value=' + option_value + ']' ).text( row.find( '.row-title' ).text() ); - row.hide().fadeIn(); + row.hide().fadeIn( 400, function() { + // Move focus back to the taxonomy title. + row.find( '.row-title' ).focus(); + wp.a11y.speak( inlineEditL10n.saved ); + }); + } else { - $('#edit-'+id+' .inline-edit-save .error').html(r).show(); + $errorSpan.html( r ).show(); + // Some error strings may contain HTML entities (e.g. `“`), let's use the HTML element's text. + wp.a11y.speak( $errorSpan.text() ); } } else { - $('#edit-'+id+' .inline-edit-save .error').html(inlineEditL10n.error).show(); + $errorSpan.html( inlineEditL10n.error ).show(); + wp.a11y.speak( inlineEditL10n.error ); } } ); - return false; }, revert : function() { @@ -136,10 +146,9 @@ inlineEditTax = { $( 'table.widefat .spinner' ).removeClass( 'is-active' ); $('#'+id).siblings('tr.hidden').addBack().remove(); id = id.substr( id.lastIndexOf('-') + 1 ); - $(this.what+id).show(); + // Show the taxonomy listing and move focus back to the taxonomy title. + $( this.what + id ).show().find( '.row-title' ).focus(); } - - return false; }, getId : function(o) { @@ -149,4 +158,4 @@ inlineEditTax = { }; $(document).ready(function(){inlineEditTax.init();}); -})(jQuery); +})( jQuery, window.wp ); diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php index 1c7efbbfbe..971012a9a4 100644 --- a/src/wp-includes/script-loader.php +++ b/src/wp-includes/script-loader.php @@ -562,9 +562,10 @@ function wp_default_scripts( &$scripts ) { 'comma' => trim( _x( ',', 'tag delimiter' ) ), ) ); - $scripts->add( 'inline-edit-tax', "/wp-admin/js/inline-edit-tax$suffix.js", array( 'jquery' ), false, 1 ); + $scripts->add( 'inline-edit-tax', "/wp-admin/js/inline-edit-tax$suffix.js", array( 'jquery', 'wp-a11y' ), false, 1 ); did_action( 'init' ) && $scripts->localize( 'inline-edit-tax', 'inlineEditL10n', array( - 'error' => __('Error while saving the changes.') + 'error' => __( 'Error while saving the changes.' ), + 'saved' => __( 'Changes saved.' ), ) ); $scripts->add( 'plugin-install', "/wp-admin/js/plugin-install$suffix.js", array( 'jquery', 'thickbox' ), false, 1 );