Commit Graph

47 Commits

Author SHA1 Message Date
Weston Ruter
f8c6040ff5 Customize: Improve usability of Customize JS API.
* Eliminate need to pass both ID and instance in calls to `Values#add()` for panels, sections, controls, settings, partials, and notifications.
* Eliminate need to supply `content` param when constructing a `Control`.
* Unwrap the `options.params` object passed in constructors to just pass a flat `options`. (Back-compat is maintained.)
* Add support for `templateId` param for `Control` to override which template is used for the content.
* Remove unused `previewer` being supplied in `Control` instances.
* Rename `classes` to `containerClasses` on `Notification`.
* Automatically supply `instanceNumber` to improve stable sorting.
* Use `api.Notifications` for notifications in settings instead of `api.Value`.

See #30741.
Fixes #42083.

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


git-svn-id: http://core.svn.wordpress.org/trunk@41560 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-10-04 06:48:46 +00:00
Weston Ruter
728e44ab5a Customize: Add infrastructure for trashing/reverting of unpublished changes; introduce full-screen OverlayNotification for trashing and theme install/preview.
* Introduce a new `wp.customize.previewer.trash()` JS API to trash the current changeset, along with logic to `WP_Customize_Manager` to handle deleting changeset drafts.
* Add `trashing` to `wp.customize.state` which is then used to update the UI.
* UI for trashing is pending design feedback. One possibility is to add a new trash button to Publish Settings section that invokes `wp.customize.previewer.trash()`.
* Improve logic for managing the visibility and disabled states for publish buttons.
* Prevent attempting `requestChangesetUpdate` while processing and bump processing while doing `save`.
* Update `changeset_date` state only if sent in save response.
* Merge `ThemesSection#loadThemePreview()` into `ThemesPanel#loadThemePreview()`.
* Remove unused `autosaved` state.
* Start autosaving and prompting at beforeunload after a change first happens. This is key for theme previews since even if a user did not make any changes, there were still dirty settings which would get stored in an auto-draft unexpectedly.
* Allow `Notification` to accept additional `classes` to be added to `container`.
* Introduce `OverlayNotification` and use for theme installing, previewing, and trashing. Such overlay notifications take over the entire window.

Props westonruter, celloexpressions.
See #37661, #39896, #21666, #35210.

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


git-svn-id: http://core.svn.wordpress.org/trunk@41501 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-10-02 03:37:46 +00:00
Weston Ruter
19e3d8bc41 Customize: Use input event instead of keyup or propertychange events when listening for changes in wp.customize.Element instances.
Ensures that a control's `Element` is updated in response to pasting into the field. Also fixes issue where inputs using "new" HTML5 types (like `url` and `number`) were not updating in the preview during keystrokes. The use of `input` was previously blocked due to needing to support IE9, but this is no longer a concern since IE<11 is no longer supported.

See #38845, #28477.
Fixes #35832.

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


git-svn-id: http://core.svn.wordpress.org/trunk@41220 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-18 19:11:48 +00:00
Weston Ruter
d8f445bf0f Customize: Add global notifications area.
* Displays an error notification in the global area when a save attempt is rejected due to invalid settings. An error notification is also displayed when saving fails due to a network error or server error.
* Introduces `wp.customize.Notifications` subclass of `wp.customize.Values` to contain instances of `wp.customize.Notification` and manage their rendering into a container.
* Exposes the global notification area as `wp.customize.notifications` collection instance.
* Updates the `notifications` object on `Control` to use `Notifications` rather than `Values` and to re-use the rendering logic from the former. The old `Control#renderNotifications` method is deprecated.
* Allows notifications to be dismissed by instantiating them with a `dismissible` property.
* Allows `wp.customize.Notification` to be extended with custom templates and `render` functions.
* Triggers a `removed` event on `wp.customize.Values` instances _after_ a value has been removed from the collection.

Props delawski, westonruter, karmatosed, celloexpressions, Fab1en, melchoyce, Kelderic, afercia, adamsilverstein.
See #34893, #39896.
Fixes #35210, #31582, #37727, #37269.

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


git-svn-id: http://core.svn.wordpress.org/trunk@41207 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-12 07:03:46 +00:00
Adam Silverstein
8a23b80b56 Docs: JSDoc improvements for namespaces.
Improve JS parsing of our inline JSDocs by introducing `@namespace`, `@lends` and `@memberOf`. Helps set the way for showing our JavaScript documentation on developer.wordpress.org, see https://meta.trac.wordpress.org/ticket/3063.

* Define all used namespaces using @namespace.
* Correctly specify in which namespace each class is using @memberOf.
* Define each usage of the extend function as a prototype assignment using @lends.
* Some comment blocks were moved to correct the parsing of certain definitions. 

Props herregroen, atimmer, netweb, SergeyBiryukov.  
Fixes #41682.

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


git-svn-id: http://core.svn.wordpress.org/trunk@41184 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-08 18:42:49 +00:00
Weston Ruter
19d960e257 Customize: Fix HTTPS navigation of site in preview on IE11.
Accounts for HTTPS links (port 443) where [40318] only accounted for HTTP links (port 80). Addresses issue in IE11 where the default port number is unexpectedly included on `link.host` for links dynamically created by scripts.

Props mattwiebe.
Amends [40318], [38890].
See #38409.
Fixes #40198.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40288 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-06 00:32:44 +00:00
Drew Jaynes
5f4497f0af Docs: Fix multiple trivial typos throughout a variety of core files.
Props ottok.
Fixes #38489.

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


git-svn-id: http://core.svn.wordpress.org/trunk@38993 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-31 06:28:32 +00:00
Weston Ruter
885d1dd89d Customize: Harden url matching to account for varying ports and ensuring matching base pathname for allowed urls
Fixes #38409.

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


git-svn-id: http://core.svn.wordpress.org/trunk@38833 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-24 20:07:31 +00:00
Weston Ruter
f1ba1918c9 Customize: Implement customized state persistence with changesets.
Includes infrastructure developed in the Customize Snapshots feature plugin.

See https://make.wordpress.org/core/2016/10/12/customize-changesets-technical-design-decisions/

Props westonruter, valendesigns, utkarshpatel, stubgo, lgedeon, ocean90, ryankienstra, mihai2u, dlh, aaroncampbell, jonathanbardo, jorbin.
See #28721.
See #31089.
Fixes #30937.
Fixes #31517.
Fixes #30028.
Fixes #23225.
Fixes #34142.
Fixes #36485.

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


git-svn-id: http://core.svn.wordpress.org/trunk@38753 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-18 20:05:31 +00:00
Weston Ruter
91f583c9af Customize: Fix php warning due to WP_Customize_Manager::prepare_setting_validity_for_js() incorrectly assuming that WP_Error will only ever have arrays in its $error_data.
* Eliminates the server mutating the a `WP_Error`'s `$error_data` to merge-in a `$from_server` flag (since it may not be an array to begin with). Instead it defers to the client to add a `fromServer` param on any `Notification` instances created from server-sent errors.
* Ensures that notifications will be re-rendered if a notification's `message` changes but the `data` and `type` remain the same.
* Adds explicit support for the `Notification` class to have a `setting` property, ensuring that the property is set whereas previously it was dropped.

Fixes #37890.
Props westonruter, dlh.

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


git-svn-id: http://core.svn.wordpress.org/trunk@38454 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-02 22:35:44 +00:00
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