WordPress/wp-admin/css
Weston Ruter 87b0a1b989 Customize: Add setting validation model and control notifications to augment setting sanitization.
When a setting is invalid, not only will it be blocked from being saved but all other settings will be blocked as well. This ensures that Customizer saves aren't partial but are more transactional. User will be displayed the error in a notification so that they can fix and re-attempt saving.

PHP changes:

* Introduces `WP_Customize_Setting::validate()`, `WP_Customize_Setting::$validate_callback`, and the `customize_validate_{$setting_id}` filter.
* Introduces `WP_Customize_Manager::validate_setting_values()` to do validation (and sanitization) for the setting values supplied, returning a list of `WP_Error` instances for invalid settings.
* Attempting to save settings that are invalid will result in the save being blocked entirely, with the errors being sent in the `customize_save_response`. Modifies `WP_Customize_Manager::save()` to check all settings for validity issues prior to calling their `save` methods.
* Introduces `WP_Customize_Setting::json()` for parity with the other Customizer classes. This includes exporting of the `type`.
* Modifies `WP_Customize_Manager::post_value()` to apply `validate` after `sanitize`, and if validation fails, to return the `$default`.
* Introduces `customize_save_validation_before` action which fires right before the validation checks are made prior to saving.

JS changes:

* Introduces `wp.customize.Notification` in JS which to represent `WP_Error` instances returned from the server when setting validation fails.
* Introduces `wp.customize.Setting.prototype.notifications`.
* Introduces `wp.customize.Control.prototype.notifications`, which are synced with a control's settings' notifications.
* Introduces `wp.customize.Control.prototype.renderNotifications()` to re-render a control's notifications in its notification area. This is called automatically when the notifications collection changes.
* Introduces `wp.customize.settingConstructor`, allowing custom setting types to be used in the same way that custom controls, panels, and sections can be made.
* Injects a notification area into existing controls which is populated in response to the control's `notifications` collection changing. A custom control can customize the placement of the notification area by overriding the new `getNotificationsContainerElement` method.
* When a save fails due to setting invalidity, the invalidity errors will be added to the settings to then populate in the controls' notification areas, and the first such invalid control will be focused.

Props westonruter, celloexpressions, mrahmadawais.
See #35210.
See #30937.
Fixes #34893.

Built from https://develop.svn.wordpress.org/trunk@37476


git-svn-id: http://core.svn.wordpress.org/trunk@37444 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-20 21:10:27 +00:00
..
colors
about-rtl.css
about-rtl.min.css
about.css
about.min.css
admin-menu-rtl.css
admin-menu-rtl.min.css
admin-menu.css
admin-menu.min.css
color-picker-rtl.css
color-picker-rtl.min.css
color-picker.css
color-picker.min.css
common-rtl.css
common-rtl.min.css
common.css
common.min.css
customize-controls-rtl.css Customize: Add setting validation model and control notifications to augment setting sanitization. 2016-05-20 21:10:27 +00:00
customize-controls-rtl.min.css Customize: Add setting validation model and control notifications to augment setting sanitization. 2016-05-20 21:10:27 +00:00
customize-controls.css Customize: Add setting validation model and control notifications to augment setting sanitization. 2016-05-20 21:10:27 +00:00
customize-controls.min.css Customize: Add setting validation model and control notifications to augment setting sanitization. 2016-05-20 21:10:27 +00:00
customize-nav-menus-rtl.css
customize-nav-menus-rtl.min.css
customize-nav-menus.css
customize-nav-menus.min.css
customize-widgets-rtl.css
customize-widgets-rtl.min.css
customize-widgets.css
customize-widgets.min.css
dashboard-rtl.css
dashboard-rtl.min.css
dashboard.css
dashboard.min.css
deprecated-media-rtl.css
deprecated-media-rtl.min.css
deprecated-media.css
deprecated-media.min.css
edit-rtl.css
edit-rtl.min.css
edit.css
edit.min.css
farbtastic-rtl.css
farbtastic-rtl.min.css
farbtastic.css
farbtastic.min.css
forms-rtl.css
forms-rtl.min.css
forms.css
forms.min.css
ie-rtl.css
ie-rtl.min.css
ie.css
ie.min.css
install-rtl.css
install-rtl.min.css
install.css
install.min.css
l10n-rtl.css
l10n-rtl.min.css
l10n.css
l10n.min.css
list-tables-rtl.css
list-tables-rtl.min.css
list-tables.css
list-tables.min.css
login-rtl.css
login-rtl.min.css
login.css
login.min.css
media-rtl.css
media-rtl.min.css
media.css
media.min.css
nav-menus-rtl.css
nav-menus-rtl.min.css
nav-menus.css
nav-menus.min.css
press-this-editor-rtl.css
press-this-editor-rtl.min.css
press-this-editor.css
press-this-editor.min.css
press-this-rtl.css
press-this-rtl.min.css
press-this.css
press-this.min.css
revisions-rtl.css
revisions-rtl.min.css
revisions.css
revisions.min.css
site-icon-rtl.css
site-icon-rtl.min.css
site-icon.css
site-icon.min.css
themes-rtl.css
themes-rtl.min.css
themes.css
themes.min.css
widgets-rtl.css
widgets-rtl.min.css
widgets.css
widgets.min.css
wp-admin-rtl.css
wp-admin-rtl.min.css
wp-admin.css
wp-admin.min.css