Commit Graph

37 Commits

Author SHA1 Message Date
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
Weston Ruter
34010353cc Customize: Prevent consecutive refresh requests from preview from causing JS error.
Fixes "Uncaught TypeError: this.targetWindow is not a function".

See #27355.
Fixes #35866.

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


git-svn-id: http://core.svn.wordpress.org/trunk@36550 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-02-19 03:47:27 +00:00
Scott Taylor
44dace3487 Add Customizer docs.
Props ericlewis.
See #33503.

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


git-svn-id: http://core.svn.wordpress.org/trunk@33880 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-05 19:53:24 +00:00
Scott Taylor
ecf0b82afb Add some JS docs to customize-base.js
Props ericlewis.
Fixes #33639.

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


git-svn-id: http://core.svn.wordpress.org/trunk@33809 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-01 04:15:22 +00:00
Dominik Schilling
de7ecc80d3 Customizer: [31885] actually hasn't fixed the SecurityErrors. This one does.
props mattwiebe.
fixes #31687.
Built from https://develop.svn.wordpress.org/trunk@31893


git-svn-id: http://core.svn.wordpress.org/trunk@31872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-25 23:36:27 +00:00
Dominik Schilling
a17fd23e41 Customizer: Bind input and propertychange events for range input types.
props voldemortensen, westonruter.
fixes #30223.
Built from https://develop.svn.wordpress.org/trunk@30219


git-svn-id: http://core.svn.wordpress.org/trunk@30219 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-03 21:49:23 +00:00
Dominik Schilling
3c962ee5d8 Improve/introduce Customizer JavaScript models for Controls, Sections, and Panels.
* Introduce models for panels and sections.
* Introduce API to expand and focus a control, section or panel.
* Allow deep-linking to panels, sections, and controls inside of the Customizer.
* Clean up `accordion.js`, removing all Customizer-specific logic.
* Add initial unit tests for `wp.customize.Class` in `customize-base.js`.

https://make.wordpress.org/core/2014/10/27/toward-a-complete-javascript-api-for-the-customizer/ provides an overview of how to use the JavaScript API.

props westonruter, celloexpressions, ryankienstra.
see #28032, #28579, #28580, #28650, #28709, #29758.
fixes #29529.


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


git-svn-id: http://core.svn.wordpress.org/trunk@30102 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-29 22:51:22 +00:00
Dominik Schilling
b89c915ed6 Customizer: Don't trigger a change event if two unchanged object values are equal, second pass.
Make Underscore.js a dependency for `customize-base` and use `_.isEqual()` to compare the values.
(Underscore.js was already enqueued via wp-util.js for Widgets.)

props westonruter.
fixes #26061.
Built from https://develop.svn.wordpress.org/trunk@29907


git-svn-id: http://core.svn.wordpress.org/trunk@29661 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-15 18:26:17 +00:00
Dominik Schilling
4020eacd8b Customizer: Only POST dirty settings to preview to improve performance.
props westonruter.
fixes #29983.
Built from https://develop.svn.wordpress.org/trunk@29905


git-svn-id: http://core.svn.wordpress.org/trunk@29660 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-15 17:50:18 +00:00
Scott Taylor
c6ebc35a00 Add some docs to Customizer JS.
Props ericlewis.
See #29157.

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


git-svn-id: http://core.svn.wordpress.org/trunk@29228 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-08 22:10:15 +00:00
Andrew Nacin
e7f80a8fad Customizer: Revert [26548], removing _.isEqual() for proper object comparison.
This broke the customizer in IE 11, with possibly other side effects. Revisit in 3.9.

Also reverts [26632].

see #26061 (reopens), fixes #26438.

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


git-svn-id: http://core.svn.wordpress.org/trunk@26592 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-05 23:13:10 +00:00
Sergey Biryukov
41b6bf211f Fix JSHint error. props atimmer. see #26061.
Built from https://develop.svn.wordpress.org/trunk@26632


git-svn-id: http://core.svn.wordpress.org/trunk@26522 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-04 20:18:11 +00:00
Dominik Schilling
a6cabe9f6d Customizer: Don't trigger a change event if two unchanged object values are equal.
In JavaScript: `{"title":"Foo"} !== {"title":"Foo"}`
Underscore.js provides an isEqual function to compare two values to see if they have the same contents, which can be use instead.
Because only one function of Underscore.js is needed we just add a copy of `_.isEqual` to customize-base.js.

props westonruter.
fixes #26061.
Built from https://develop.svn.wordpress.org/trunk@26548


git-svn-id: http://core.svn.wordpress.org/trunk@26440 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-03 00:08:09 +00:00
Andrew Nacin
67c504cf23 Customizer: Ensure we have a string that's JSON parseable.
props mattwiebe.
fixes #postmessage-check.diff.

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


git-svn-id: http://core.svn.wordpress.org/trunk@26434 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-02 22:49:09 +00:00
Andrew Nacin
a87fec4616 Fix JSHint errors in six files.
props mdbitz.
fixes ##26011, #26012, #26013, #26014, #26038, #26039.

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


git-svn-id: http://core.svn.wordpress.org/trunk@26103 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-15 04:42:09 +00:00
Daryl Koopersmith
1baac22e9d Improve the lazy instantiation of the 'wp' JavaScript variable. props evansolomon, fixes #22113.
git-svn-id: http://core.svn.wordpress.org/trunk@22126 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-10-06 00:43:36 +00:00
Andrew Nacin
2710bcade1 Switch to .min for compressed JS and CSS files.
* This moves our "development" versions from .dev.js to .js (same for css).
 * The compressed version then moves from .js to .min.js (same for css).

By switching to the standard .min convention, it sets expectations for developers,
and works nicely with existing tools such as ack.

fixes #21633.



git-svn-id: http://core.svn.wordpress.org/trunk@21592 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-08-23 00:04:18 +00:00
bumpbot
e04cfd76f5 Compress scripts/styles: 3.4-RC2-21034.
git-svn-id: http://core.svn.wordpress.org/trunk@21034 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-06-08 23:02:40 +00:00
bumpbot
dce23895de Compress scripts/styles: 3.4-RC2-21030.
git-svn-id: http://core.svn.wordpress.org/trunk@21030 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-06-08 18:58:24 +00:00
bumpbot
3f729457f4 Compress scripts/styles: 3.4-RC2-21026.
git-svn-id: http://core.svn.wordpress.org/trunk@21026 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-06-07 22:58:22 +00:00
bumpbot
d35556e69a Compress scripts/styles: 3.4-RC1-20989.
git-svn-id: http://core.svn.wordpress.org/trunk@20989 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-06-04 15:58:26 +00:00
bumpbot
d05de3ad24 Compress scripts/styles: 3.4-beta4-20898.
git-svn-id: http://core.svn.wordpress.org/trunk@20898 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-05-25 16:58:23 +00:00
bumpbot
29eb5af53f Compress scripts/styles: 3.4-beta4-20889.
git-svn-id: http://core.svn.wordpress.org/trunk@20889 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-05-24 21:40:40 +00:00
bumpbot
5181e0abd3 Compress scripts/styles: 3.4-beta4-20803.
git-svn-id: http://core.svn.wordpress.org/trunk@20803 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-05-16 05:58:24 +00:00
bumpbot
a13f5e45ba Compress scripts/styles: 3.4-beta4-20800.
git-svn-id: http://core.svn.wordpress.org/trunk@20800 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-05-15 22:58:23 +00:00
bumpbot
ed3c93ae6a Compress scripts/styles: 3.4-beta4-20796.
git-svn-id: http://core.svn.wordpress.org/trunk@20796 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-05-15 21:58:21 +00:00
bumpbot
4b38f2fe45 Compress scripts/styles: 3.4-beta4-20746.
git-svn-id: http://core.svn.wordpress.org/trunk@20746 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-05-09 00:58:22 +00:00
bumpbot
24b4c94fcf Compress scripts/styles: 3.4-beta3-20647.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20647 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-04-30 15:58:21 +00:00
bumpbot
715efd86f0 Compress scripts/styles: 3.4-beta2-20521. TinyMCE updated.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20521 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-04-18 20:58:24 +00:00
bumpbot
2884dc969d Compress scripts/styles: 3.4-beta2-20478.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20478 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-04-16 14:58:23 +00:00
bumpbot
4a6eb81bb7 Compress scripts/styles: 3.4-alpha-20345.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20345 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-04-03 22:58:20 +00:00
bumpbot
3c1ed96efe Compress scripts/styles: 3.4-alpha-20296.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20296 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-03-28 04:58:24 +00:00
bumpbot
452da8fccc Compress scripts/styles: 3.4-alpha-20258.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20258 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-03-22 06:58:22 +00:00
bumpbot
c02391c0ee Compress scripts/styles: 3.4-alpha-20124.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20124 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-03-06 03:00:26 +00:00
bumpbot
a9b4a2fe6c Compress scripts/styles: 3.4-alpha-20036.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20036 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-29 06:31:00 +00:00
bumpbot
2c4438f379 Compress scripts/styles: 3.4-alpha-19996.
git-svn-id: http://svn.automattic.com/wordpress/trunk@19997 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-25 04:16:01 +00:00
koopersmith
c832f904ae Introduce new theme customizer to replace theme preview. Rough first pass. props koopersmith, ocean90. see #19910.
Merges in http://plugins.svn.wordpress.org/gandalf/branches/dev/ rev 510148.

git-svn-id: http://svn.automattic.com/wordpress/trunk@19995 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-25 04:12:43 +00:00