From 35df5592f1c2a44d5d4d4f5bd8c507e11979cbc2 Mon Sep 17 00:00:00 2001 From: Helen Hou-Sandi Date: Wed, 1 Apr 2015 22:05:17 +0000 Subject: [PATCH] Admin notices: Make (most) core notices dismissible. These no longer return upon refreshing the page when JS is on and working, so users should be able to dismiss them. This is particularly important on the post edit screen when DFW is triggered, but pretty much all notices can be dismissed if needed. A post on Make/Core will follow with information on how this can be leveraged in plugins. props valendesigns, afercia, paulwilde, adamsilverstein, helen. fixes #31233. see #23367. git-svn-id: https://develop.svn.wordpress.org/trunk@31973 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/common.css | 63 +++++++++++++++++++++++--- src/wp-admin/edit-comments.php | 2 +- src/wp-admin/edit-form-advanced.php | 2 +- src/wp-admin/edit-link-form.php | 2 +- src/wp-admin/edit-tag-form.php | 2 +- src/wp-admin/edit-tags.php | 2 +- src/wp-admin/edit.php | 2 +- src/wp-admin/includes/misc.php | 3 +- src/wp-admin/includes/nav-menu.php | 2 +- src/wp-admin/includes/template.php | 2 +- src/wp-admin/js/common.js | 21 +++++++++ src/wp-admin/link-manager.php | 2 +- src/wp-admin/my-sites.php | 2 +- src/wp-admin/nav-menus.php | 20 ++++---- src/wp-admin/network/settings.php | 2 +- src/wp-admin/network/site-info.php | 2 +- src/wp-admin/network/site-new.php | 2 +- src/wp-admin/network/site-settings.php | 2 +- src/wp-admin/network/site-themes.php | 6 +-- src/wp-admin/network/site-users.php | 20 ++++---- src/wp-admin/network/sites.php | 2 +- src/wp-admin/network/themes.php | 10 ++-- src/wp-admin/network/user-new.php | 2 +- src/wp-admin/network/users.php | 2 +- src/wp-admin/options-permalink.php | 2 +- src/wp-admin/plugin-editor.php | 2 +- src/wp-admin/plugins.php | 14 +++--- src/wp-admin/theme-editor.php | 2 +- src/wp-admin/themes.php | 8 ++-- src/wp-admin/upload.php | 2 +- src/wp-admin/user-edit.php | 2 +- src/wp-admin/user-new.php | 2 +- src/wp-admin/users.php | 22 ++++----- src/wp-admin/widgets.php | 2 +- src/wp-includes/script-loader.php | 3 +- 35 files changed, 156 insertions(+), 82 deletions(-) diff --git a/src/wp-admin/css/common.css b/src/wp-admin/css/common.css index 6a1e9d7783..9b608176c1 100644 --- a/src/wp-admin/css/common.css +++ b/src/wp-admin/css/common.css @@ -738,7 +738,8 @@ img.emoji { /* @todo can we combine these into a class or use an existing dashicon one? */ #welcome-panel.welcome-panel .welcome-panel-close:before, .tagchecklist span a:before, -#bulk-titles div a:before { +#bulk-titles div a:before, +.notice-dismiss:before { background: none; color: #bbb; content: '\f153'; @@ -1288,22 +1289,59 @@ div.error p, padding: 2px; } +.notice.is-dismissible { + padding-right: 38px; + position: relative; +} + +.notice-dismiss { + height: 38px; + width: 38px; + position: absolute; + top: 0; + right: 0; + border: none; + margin: 0; + padding: 11px; + background: none; + color: #bbb; + cursor: pointer; +} + +.notice-dismiss:hover:before, +.notice-dismiss:active:before, +.notice-dismiss:focus:before { + color: #c00; +} + +.notice-dismiss:active, +.notice-dismiss:focus { + outline: none; + -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); + color: #c00; +} + +.ie8 .notice-dismiss:focus { + outline: 1px solid #5b9dd9; +} + .notice-success, div.updated { - border-color: #7ad03a; + border-color: #7ad03a; } .notice-warning { - border-color: #ffba00; + border-color: #ffba00; } .notice-error, div.error { - border-color: #dd3d36; + border-color: #dd3d36; } .notice-info { - border-color: #00a0d2; + border-color: #00a0d2; } .wrap .notice, @@ -3122,13 +3160,26 @@ img { } /* Feedback Messages */ - .wrap div.updated, .wrap div.error, .media-upload-form div.error { + .notice, + .wrap div.updated, + .wrap div.error, + .media-upload-form div.error { margin: 20px 0 10px 0; padding: 5px 10px; font-size: 14px; line-height: 175%; } + .notice.is-dismissible { + padding-right: 46px; + } + + .notice-dismiss { + height: 46px; + width: 46px; + padding: 16px; + } + .wrap .icon32 + h2 { margin-top: -2px; } diff --git a/src/wp-admin/edit-comments.php b/src/wp-admin/edit-comments.php index 29717d8002..90ac632f78 100644 --- a/src/wp-admin/edit-comments.php +++ b/src/wp-admin/edit-comments.php @@ -217,7 +217,7 @@ if ( isset($_REQUEST['approved']) || isset($_REQUEST['deleted']) || isset($_REQU } } - echo '

' . implode( "
\n", $messages ) . '

'; + echo '

' . implode( "
\n", $messages ) . '

'; } } ?> diff --git a/src/wp-admin/edit-form-advanced.php b/src/wp-admin/edit-form-advanced.php index 84cb32c6a3..2248bc9e13 100644 --- a/src/wp-admin/edit-form-advanced.php +++ b/src/wp-admin/edit-form-advanced.php @@ -410,7 +410,7 @@ if ( isset( $post_new_file ) && current_user_can( $post_type_object->cap->create

-

+

'; + echo '

' . $msg . '

'; } ?> diff --git a/src/wp-admin/network/site-settings.php b/src/wp-admin/network/site-settings.php index 123c0cda18..3c5864d175 100644 --- a/src/wp-admin/network/site-settings.php +++ b/src/wp-admin/network/site-settings.php @@ -105,7 +105,7 @@ foreach ( $tabs as $tab_id => $tab ) {

' . $msg . '

'; + echo '

' . $msg . '

'; } ?> diff --git a/src/wp-admin/network/site-themes.php b/src/wp-admin/network/site-themes.php index 2bf3c8f704..3150d05050 100644 --- a/src/wp-admin/network/site-themes.php +++ b/src/wp-admin/network/site-themes.php @@ -157,12 +157,12 @@ foreach ( $tabs as $tab_id => $tab ) { if ( isset( $_GET['enabled'] ) ) { $_GET['enabled'] = absint( $_GET['enabled'] ); - echo '

' . sprintf( _n( 'Theme enabled.', '%s themes enabled.', $_GET['enabled'] ), number_format_i18n( $_GET['enabled'] ) ) . '

'; + echo '

' . sprintf( _n( 'Theme enabled.', '%s themes enabled.', $_GET['enabled'] ), number_format_i18n( $_GET['enabled'] ) ) . '

'; } elseif ( isset( $_GET['disabled'] ) ) { $_GET['disabled'] = absint( $_GET['disabled'] ); - echo '

' . sprintf( _n( 'Theme disabled.', '%s themes disabled.', $_GET['disabled'] ), number_format_i18n( $_GET['disabled'] ) ) . '

'; + echo '

' . sprintf( _n( 'Theme disabled.', '%s themes disabled.', $_GET['disabled'] ), number_format_i18n( $_GET['disabled'] ) ) . '

'; } elseif ( isset( $_GET['error'] ) && 'none' == $_GET['error'] ) { - echo '

' . __( 'No theme selected.' ) . '

'; + echo '

' . __( 'No theme selected.' ) . '

'; } ?>

diff --git a/src/wp-admin/network/site-users.php b/src/wp-admin/network/site-users.php index 0ff7e99d7c..79e2daca27 100644 --- a/src/wp-admin/network/site-users.php +++ b/src/wp-admin/network/site-users.php @@ -201,34 +201,34 @@ foreach ( $tabs as $tab_id => $tab ) { if ( isset($_GET['update']) ) : switch($_GET['update']) { case 'adduser': - echo '

' . __( 'User added.' ) . '

'; + echo '

' . __( 'User added.' ) . '

'; break; case 'err_add_member': - echo '

' . __( 'User is already a member of this site.' ) . '

'; + echo '

' . __( 'User is already a member of this site.' ) . '

'; break; case 'err_add_notfound': - echo '

' . __( 'Enter the username of an existing user.' ) . '

'; + echo '

' . __( 'Enter the username of an existing user.' ) . '

'; break; case 'promote': - echo '

' . __( 'Changed roles.' ) . '

'; + echo '

' . __( 'Changed roles.' ) . '

'; break; case 'err_promote': - echo '

' . __( 'Select a user to change role.' ) . '

'; + echo '

' . __( 'Select a user to change role.' ) . '

'; break; case 'remove': - echo '

' . __( 'User removed from this site.' ) . '

'; + echo '

' . __( 'User removed from this site.' ) . '

'; break; case 'err_remove': - echo '

' . __( 'Select a user to remove.' ) . '

'; + echo '

' . __( 'Select a user to remove.' ) . '

'; break; case 'newuser': - echo '

' . __( 'User created.' ) . '

'; + echo '

' . __( 'User created.' ) . '

'; break; case 'err_new': - echo '

' . __( 'Enter the username and email.' ) . '

'; + echo '

' . __( 'Enter the username and email.' ) . '

'; break; case 'err_new_dup': - echo '

' . __( 'Duplicated username or email address.' ) . '

'; + echo '

' . __( 'Duplicated username or email address.' ) . '

'; break; } endif; ?> diff --git a/src/wp-admin/network/sites.php b/src/wp-admin/network/sites.php index 508f69ebc9..e04a2b36c9 100644 --- a/src/wp-admin/network/sites.php +++ b/src/wp-admin/network/sites.php @@ -239,7 +239,7 @@ if ( isset( $_GET['updated'] ) ) { } if ( ! empty( $msg ) ) - $msg = '

' . $msg . '

'; + $msg = '

' . $msg . '

'; } $wp_list_table->prepare_items(); diff --git a/src/wp-admin/network/themes.php b/src/wp-admin/network/themes.php index 8c5d6ce78c..01a25c0f6f 100644 --- a/src/wp-admin/network/themes.php +++ b/src/wp-admin/network/themes.php @@ -274,7 +274,7 @@ if ( isset( $_GET['enabled'] ) ) { } else { $message = _n( '%s theme enabled.', '%s themes enabled.', $enabled ); } - echo '

' . sprintf( $message, number_format_i18n( $enabled ) ) . '

'; + echo '

' . sprintf( $message, number_format_i18n( $enabled ) ) . '

'; } elseif ( isset( $_GET['disabled'] ) ) { $disabled = absint( $_GET['disabled'] ); if ( 1 == $disabled ) { @@ -282,7 +282,7 @@ if ( isset( $_GET['enabled'] ) ) { } else { $message = _n( '%s theme disabled.', '%s themes disabled.', $disabled ); } - echo '

' . sprintf( $message, number_format_i18n( $disabled ) ) . '

'; + echo '

' . sprintf( $message, number_format_i18n( $disabled ) ) . '

'; } elseif ( isset( $_GET['deleted'] ) ) { $deleted = absint( $_GET['deleted'] ); if ( 1 == $deleted ) { @@ -290,11 +290,11 @@ if ( isset( $_GET['enabled'] ) ) { } else { $message = _n( '%s theme deleted.', '%s themes deleted.', $deleted ); } - echo '

' . sprintf( $message, number_format_i18n( $deleted ) ) . '

'; + echo '

' . sprintf( $message, number_format_i18n( $deleted ) ) . '

'; } elseif ( isset( $_GET['error'] ) && 'none' == $_GET['error'] ) { - echo '

' . __( 'No theme selected.' ) . '

'; + echo '

' . __( 'No theme selected.' ) . '

'; } elseif ( isset( $_GET['error'] ) && 'main' == $_GET['error'] ) { - echo '

' . __( 'You cannot delete a theme while it is active on the main site.' ) . '

'; + echo '

' . __( 'You cannot delete a theme while it is active on the main site.' ) . '

'; } ?> diff --git a/src/wp-admin/network/user-new.php b/src/wp-admin/network/user-new.php index 3141b773be..cab5f1fc5a 100644 --- a/src/wp-admin/network/user-new.php +++ b/src/wp-admin/network/user-new.php @@ -73,7 +73,7 @@ require( ABSPATH . 'wp-admin/admin-header.php' ); ?>

' . $msg . '

'; + echo '

' . $msg . '

'; } if ( isset( $add_user_errors ) && is_wp_error( $add_user_errors ) ) { ?> diff --git a/src/wp-admin/network/users.php b/src/wp-admin/network/users.php index bc9eddf450..74f6dd0b7c 100644 --- a/src/wp-admin/network/users.php +++ b/src/wp-admin/network/users.php @@ -280,7 +280,7 @@ require_once( ABSPATH . 'wp-admin/admin-header.php' ); if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) { ?> -

+

-

-

+

fatal error.') ?>

-

get_error_message() ); ?>

+

get_error_message() ); ?>

-

deleted.'); ?>

+

deleted.'); ?>

-

activated.') ?>

+

activated.') ?>

-

activated.'); ?>

+

activated.'); ?>

-

deactivated.') ?>

+

deactivated.') ?>

-

deactivated.'); ?>

+

deactivated.'); ?>

-

+

diff --git a/src/wp-admin/theme-editor.php b/src/wp-admin/theme-editor.php index ccf3cb3b1a..62fde441ce 100644 --- a/src/wp-admin/theme-editor.php +++ b/src/wp-admin/theme-editor.php @@ -122,7 +122,7 @@ default: } if ( isset( $_GET['updated'] ) ) : ?> -

+

-

+

-

Visit site' ), home_url( '/' ) ); ?>

+

Visit site' ), home_url( '/' ) ); ?>

-

Visit site' ), home_url( '/' ) ); ?>

Visit site' ), home_url( '/' ) ); ?>

-

+

-

+

diff --git a/src/wp-admin/user-edit.php b/src/wp-admin/user-edit.php index 0f0afaf04f..5b87a012ee 100644 --- a/src/wp-admin/user-edit.php +++ b/src/wp-admin/user-edit.php @@ -186,7 +186,7 @@ include(ABSPATH . 'wp-admin/admin-header.php');

-
+

diff --git a/src/wp-admin/user-new.php b/src/wp-admin/user-new.php index deec66f7f2..b3b60b56b8 100644 --- a/src/wp-admin/user-new.php +++ b/src/wp-admin/user-new.php @@ -253,7 +253,7 @@ if ( current_user_can( 'create_users' ) ) { if ( ! empty( $messages ) ) { foreach ( $messages as $msg ) - echo '

' . $msg . '

'; + echo '

' . $msg . '

'; } ?> diff --git a/src/wp-admin/users.php b/src/wp-admin/users.php index 02553b2ea0..58ee90e88b 100644 --- a/src/wp-admin/users.php +++ b/src/wp-admin/users.php @@ -394,34 +394,34 @@ default: } else { $message = _n( '%s user deleted.', '%s users deleted.', $delete_count ); } - $messages[] = '

' . sprintf( $message, number_format_i18n( $delete_count ) ) . '

'; + $messages[] = '

' . sprintf( $message, number_format_i18n( $delete_count ) ) . '

'; break; case 'add': if ( isset( $_GET['id'] ) && ( $user_id = $_GET['id'] ) && current_user_can( 'edit_user', $user_id ) ) { - $messages[] = '

' . sprintf( __( 'New user created. Edit user' ), + $messages[] = '

' . sprintf( __( 'New user created. Edit user' ), esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), self_admin_url( 'user-edit.php?user_id=' . $user_id ) ) ) ) . '

'; } else { - $messages[] = '

' . __( 'New user created.' ) . '

'; + $messages[] = '

' . __( 'New user created.' ) . '

'; } break; case 'promote': - $messages[] = '

' . __('Changed roles.') . '

'; + $messages[] = '

' . __('Changed roles.') . '

'; break; case 'err_admin_role': - $messages[] = '

' . __('The current user’s role must have user editing capabilities.') . '

'; - $messages[] = '

' . __('Other user roles have been changed.') . '

'; + $messages[] = '

' . __('The current user’s role must have user editing capabilities.') . '

'; + $messages[] = '

' . __('Other user roles have been changed.') . '

'; break; case 'err_admin_del': - $messages[] = '

' . __('You can’t delete the current user.') . '

'; - $messages[] = '

' . __('Other users have been deleted.') . '

'; + $messages[] = '

' . __('You can’t delete the current user.') . '

'; + $messages[] = '

' . __('Other users have been deleted.') . '

'; break; case 'remove': - $messages[] = '

' . __('User removed from this site.') . '

'; + $messages[] = '

' . __('User removed from this site.') . '

'; break; case 'err_admin_remove': - $messages[] = '

' . __("You can't remove the current user.") . '

'; - $messages[] = '

' . __('Other users have been removed.') . '

'; + $messages[] = '

' . __("You can't remove the current user.") . '

'; + $messages[] = '

' . __('Other users have been removed.') . '

'; break; } endif; ?> diff --git a/src/wp-admin/widgets.php b/src/wp-admin/widgets.php index 42ebc1b7e1..23cd494780 100644 --- a/src/wp-admin/widgets.php +++ b/src/wp-admin/widgets.php @@ -330,7 +330,7 @@ require_once( ABSPATH . 'wp-admin/admin-header.php' ); ?> -

+

diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php index ebb072e3ba..29a3cdf204 100644 --- a/src/wp-includes/script-loader.php +++ b/src/wp-includes/script-loader.php @@ -79,7 +79,8 @@ function wp_default_scripts( &$scripts ) { $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), false, 1 ); did_action( 'init' ) && $scripts->localize( 'common', 'commonL10n', array( - 'warnDelete' => __("You are about to permanently delete the selected items.\n 'Cancel' to stop, 'OK' to delete.") + 'warnDelete' => __( "You are about to permanently delete the selected items.\n 'Cancel' to stop, 'OK' to delete." ), + 'dismiss' => __( 'Dismiss this notice.' ), ) ); $scripts->add( 'wp-a11y', "/wp-includes/js/wp-a11y$suffix.js", array( 'jquery' ), false, 1 );