Update/Install: Replace "error" and "-1" failure messages with a more meaningful one.

* "-1" is an invalid nonce error, show 'An error has occurred. Please reload the page and try again.'.
* "error" means that the connection to the server was lost, show 'Connection lost or the server is busy. Please try again later.'.
* Escape the message in `wp-updates-admin-notice` because the response may include HTML.
* Remove HTML tags in `wp.updates.isValidResponse()` to make PHP's error messages more readable.

Props azaozz for review.
Fixes #37583.
Built from https://develop.svn.wordpress.org/trunk@38205


git-svn-id: http://core.svn.wordpress.org/trunk@38146 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Dominik Schilling 2016-08-05 19:28:30 +00:00
parent 4ff8257cb4
commit 572a9cb488
5 changed files with 13 additions and 5 deletions

View File

@ -631,7 +631,7 @@ function maintenance_nag() {
function wp_print_admin_notice_templates() { function wp_print_admin_notice_templates() {
?> ?>
<script id="tmpl-wp-updates-admin-notice" type="text/html"> <script id="tmpl-wp-updates-admin-notice" type="text/html">
<div <# if ( data.id ) { #>id="{{ data.id }}"<# } #> class="notice {{ data.className }}"><p>{{{ data.message }}}</p></div> <div <# if ( data.id ) { #>id="{{ data.id }}"<# } #> class="notice {{ data.className }}"><p>{{ data.message }}</p></div>
</script> </script>
<script id="tmpl-wp-bulk-updates-admin-notice" type="text/html"> <script id="tmpl-wp-bulk-updates-admin-notice" type="text/html">
<div id="{{ data.id }}" class="{{ data.className }} notice <# if ( data.errors ) { #>notice-error<# } else { #>notice-success<# } #>"> <div id="{{ data.id }}" class="{{ data.className }} notice <# if ( data.errors ) { #>notice-error<# } else { #>notice-success<# } #>">

View File

@ -1562,8 +1562,12 @@
return true; return true;
} }
if ( _.isString( response ) ) { if ( _.isString( response ) && '-1' === response ) {
error = wp.updates.l10n.nonceError;
} else if ( _.isString( response ) ) {
error = response; error = response;
} else if ( 'undefined' !== typeof response.readyState && 0 === response.readyState ) {
error = wp.updates.l10n.connectionError;
} else if ( _.isString( response.responseText ) && '' !== response.responseText ) { } else if ( _.isString( response.responseText ) && '' !== response.responseText ) {
error = response.responseText; error = response.responseText;
} else if ( _.isString( response.statusText ) ) { } else if ( _.isString( response.statusText ) ) {
@ -1584,6 +1588,8 @@
break; break;
} }
// Messages are escaped, remove HTML tags to make them more readable.
error = error.replace( /<[\/a-z][^<>]*>/gi, '' );
errorMessage = errorMessage.replace( '%s', error ); errorMessage = errorMessage.replace( '%s', error );
// Add admin notice. // Add admin notice.

File diff suppressed because one or more lines are too long

View File

@ -677,6 +677,8 @@ function wp_default_scripts( &$scripts ) {
/* translators: %s: Importer name */ /* translators: %s: Importer name */
'activateImporterLabel' => __( 'Run %s' ), 'activateImporterLabel' => __( 'Run %s' ),
'unknownError' => __( 'An unknown error occurred' ), 'unknownError' => __( 'An unknown error occurred' ),
'connectionError' => __( 'Connection lost or the server is busy. Please try again later.' ),
'nonceError' => __( 'An error has occurred. Please reload the page and try again.' ),
'pluginsFound' => __( 'Number of plugins found: %d' ), 'pluginsFound' => __( 'Number of plugins found: %d' ),
'noPluginsFound' => __( 'No plugins found. Try a different search.' ), 'noPluginsFound' => __( 'No plugins found. Try a different search.' ),
), ),

View File

@ -4,7 +4,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '4.7-alpha-38203'; $wp_version = '4.7-alpha-38205';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.