Commit Graph

56 Commits

Author SHA1 Message Date
Dominik Schilling 6d2c70aa0d Customizer: Refresh nonces when a session expires and the user logs in again.
This was broken since 4.0 and the introduction of user session tokens. The nonces are now tied to session tokens as opposed to user IDs, and thus they change with each re-login.
Custom nonces can be added through the `customize_refresh_nonces` filter. On a successful refresh request the JavaScript API will trigger a `nonce-refresh` event. See widget's update nonce as an example.

props westonruter for initial patch.
fixes #31294.
Built from https://develop.svn.wordpress.org/trunk@32054


git-svn-id: http://core.svn.wordpress.org/trunk@32033 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-06 15:10:27 +00:00
Dominik Schilling 4f3fb2315d Customize Widgets: Improve sync logic for select[multiple] inputs.
The current logic doesn't account for the special case of `select[multiple]` inputs which lack a single value to synchronize: The value to synchronize is an array of zero or more values.
This change replaces `_getInputStatePropertyName()` with `_getInputState()`, which returns the state for an input depending on its type, and `_setInputState()`, which updates an input's state based on its type.

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


git-svn-id: http://core.svn.wordpress.org/trunk@31991 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-04 16:34:26 +00:00
Dominik Schilling 942c6a9edc Customizer: Update selector, missed in [31984].
see #28784.
Built from https://develop.svn.wordpress.org/trunk@31985


git-svn-id: http://core.svn.wordpress.org/trunk@31964 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-02 17:18:25 +00:00
Dominik Schilling ba7f53f029 Customizer: Make the available widgets overlay closable on narrow screens.
see #28784.
Built from https://develop.svn.wordpress.org/trunk@31974


git-svn-id: http://core.svn.wordpress.org/trunk@31953 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-01 22:25:28 +00:00
Dominik Schilling c4a624aa22 Customizer: Remove a `throw error` call which prevents further actions, like `jqxhr.always()`.
props westonruter.
fixes #31501.
Built from https://develop.svn.wordpress.org/trunk@31816


git-svn-id: http://core.svn.wordpress.org/trunk@31798 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-18 19:29:27 +00:00
Dominik Schilling 9250d59e6a Customizer: Prevent a race condition when attempting to publish too soon after updating widget form fields with multiple edits.
props westonruter.
fixes #31501.
Built from https://develop.svn.wordpress.org/trunk@31706


git-svn-id: http://core.svn.wordpress.org/trunk@31687 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-10 22:45:27 +00:00
Andrew Ozz 5e07bfdfd1 Add `wp.a11y.speak()` for audible alerts/updates in screen readers. Props afercia, GrahamArmfield (for the idea), iseulde. Fixes #31368.
Built from https://develop.svn.wordpress.org/trunk@31594


git-svn-id: http://core.svn.wordpress.org/trunk@31575 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-01 19:11:27 +00:00
Dominik Schilling 789cd2e824 Customize Widgets: Don't return undefined items in getWidgetFormControls method.
props westonruter.
fixes #31465.
Built from https://develop.svn.wordpress.org/trunk@31570


git-svn-id: http://core.svn.wordpress.org/trunk@31551 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-27 10:35:24 +00:00
Dominik Schilling 70ca74b37b Customizer: Don't focus new widgets if they are added programmatically.
props westonruter.
fixes #31295.
Built from https://develop.svn.wordpress.org/trunk@31428


git-svn-id: http://core.svn.wordpress.org/trunk@31409 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-11 23:32:27 +00:00
Dominik Schilling 6adb5c0618 Customizer: Improve [31252] to show the move-widget buttons only if there is more than one *rendered* sidebar.
fixes #30690.
Built from https://develop.svn.wordpress.org/trunk@31419


git-svn-id: http://core.svn.wordpress.org/trunk@31400 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-11 20:45:26 +00:00
Dominik Schilling b4bb289b5d Customizer: Hide the reorder-widgets button when a widget area is empty.
props celloexpressions.
fixes #27787.
Built from https://develop.svn.wordpress.org/trunk@31255


git-svn-id: http://core.svn.wordpress.org/trunk@31236 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-20 22:45:22 +00:00
Dominik Schilling 0c0675627b Customizer: If there's only one available sidebar, hide the move-widget button.
props celloexpressions.
fixes #30690.
Built from https://develop.svn.wordpress.org/trunk@31252


git-svn-id: http://core.svn.wordpress.org/trunk@31233 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-20 20:36:21 +00:00
Dominik Schilling 14abcecf81 Customizer: Use correct event variable when moving widgets to another widget area.
Fixes "ReferenceError: event is not defined error." in Firefox.

props tywayne.
fixes #30818.
Built from https://develop.svn.wordpress.org/trunk@30992


git-svn-id: http://core.svn.wordpress.org/trunk@30974 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-12-23 17:24:24 +00:00
Andrew Ozz 53d22ffb10 Customizer - Widgets: add feedback for screen readers when moving up or down. Props adamsilverstein, afercia. Fixes #28892.
Built from https://develop.svn.wordpress.org/trunk@30760


git-svn-id: http://core.svn.wordpress.org/trunk@30750 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-12-07 00:45:24 +00:00
Scott Taylor 097e4ede58 Add some inline JS docs for Customizer.
See #30469.

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


git-svn-id: http://core.svn.wordpress.org/trunk@30728 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-12-04 02:04:22 +00:00
Dominik Schilling d187a5eeba Customizer: Don't override `Section.isContextuallyActive()` in `SidebarSection`.
This fixes a bug where empty widget areas get deactivated in the Customizer.

fixes #30378.
see #30235.
props westonruter.
Built from https://develop.svn.wordpress.org/trunk@30552


git-svn-id: http://core.svn.wordpress.org/trunk@30541 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-24 22:26:23 +00:00
Dominik Schilling 41197a7c31 Customizer: Improve ability to filter active state for widget area Customizer sections.
* Mark panels, sections, controls as active if preview explicitly indicates.
* Introduce `WP_Customize_Sidebar_Section` PHP class, and `SidebarSection` JS class.
* Move logic for determining whether a sidebar section is active from the `SidebarControl` to `SidebarSection`.

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


git-svn-id: http://core.svn.wordpress.org/trunk@30328 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-13 12:19:23 +00:00
Dominik Schilling 8b32164b67 Customizer: Trigger `widget-added` event when initializing.
Widget controls are now added to the pane dynamically via JavaScript, see #28709.
Remove the event trigger from `SidebarControl.addWidget()` as it's covered by `WidgetControl.ready()`.

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


git-svn-id: http://core.svn.wordpress.org/trunk@30307 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-11 22:46:23 +00:00
Dominik Schilling d21799ee1f Customizer: Use `jQuery.fn.toggle()` instead of `slideUp`/`slideDown` if panel/section/control is not inserted into DOM yet.
jQuery does nothing when calling `slideUp` on elements that are not inserted into the DOM yet, which can now be the case now when first loading the Customizer as the panels, sections and controls get dynamically inserted, see #28709.

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


git-svn-id: http://core.svn.wordpress.org/trunk@30306 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-11 22:37:22 +00:00
Dominik Schilling 00845a6c3d Customizer: Fix missing newly added widgets in the preview after [29905].
props westonruter.
fixes #29983.
Built from https://develop.svn.wordpress.org/trunk@30104


git-svn-id: http://core.svn.wordpress.org/trunk@30104 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-29 22:57: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 61819a36ea Customizer: Change instances of "Theme Customizer" to just "Customizer", as the Customizer isn't necessarily theme-specific.
Also capitalize "Customizer".
See also https://make.wordpress.org/core/2014/07/08/customizer-improvements-in-4-0/.

props studionashvegas, tareq1988.
fixes #29947.
Built from https://develop.svn.wordpress.org/trunk@29903


git-svn-id: http://core.svn.wordpress.org/trunk@29658 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-15 17:21:19 +00:00
Sergey Biryukov 81f912dd7a Customizer: Remove "Add a Widget" button from tab order when reordering widgets.
fixes #28890.
Built from https://develop.svn.wordpress.org/trunk@29243


git-svn-id: http://core.svn.wordpress.org/trunk@29027 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-19 03:32:17 +00:00
Sergey Biryukov 37e51e558c Customizer: When widget reorder button is actioned, transfer focus to the first Move control within the section.
fixes #28891.
Built from https://develop.svn.wordpress.org/trunk@29242


git-svn-id: http://core.svn.wordpress.org/trunk@29026 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-19 03:24:15 +00:00
Sergey Biryukov 9a02dabf34 Customizer: Add widget title to Move/Up/Down controls to provide context for screen readers when reordering or moving widgets.
fixes #28889.
Built from https://develop.svn.wordpress.org/trunk@29238


git-svn-id: http://core.svn.wordpress.org/trunk@29022 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-19 01:58:15 +00:00
Sergey Biryukov 53d2839324 Customizer: Avoid losing focus when adding widgets via keyboard.
props sathishn.
fixes #28835.
Built from https://develop.svn.wordpress.org/trunk@29237


git-svn-id: http://core.svn.wordpress.org/trunk@29021 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-19 01:19:14 +00:00
Sergey Biryukov ad7bc20cb1 Customizer: Introduce WP_Customize_Control::active() method to determine whether the control is relevant to the current context (i.e. to the current URL being previewed).
Control can indicate its active state by a subclass overriding the 'active_callback' method, by supplying a callable 'active_callback' argument into the control's constructor, or by filtering 'customize_control_active'.

props westonruter.
see #27993.
Built from https://develop.svn.wordpress.org/trunk@29051


git-svn-id: http://core.svn.wordpress.org/trunk@28839 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-09 23:58:16 +00:00
Sergey Biryukov 3b291f7057 Customizer: Export Previewer instance to wp.customize.previewer, and utilize for Widget Customizer.
props westonruter.
fixes #27666.
Built from https://develop.svn.wordpress.org/trunk@29048


git-svn-id: http://core.svn.wordpress.org/trunk@28836 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-07-09 20:58:15 +00:00
Andrew Nacin dbca0c5e15 Widgets: Remove create_function() from the customizer class.
props westonruter.
fixes #27805.

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


git-svn-id: http://core.svn.wordpress.org/trunk@27974 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-16 00:11:35 +00:00
Andrew Nacin 6b579e0d59 Customizer: Properly handle widget settings when activating a previewed theme.
props westonruter, ocean90, gcorne.
fixes #27767.

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


git-svn-id: http://core.svn.wordpress.org/trunk@27955 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-14 22:46:16 +00:00
Dominik Schilling 3f3a1380d2 Widget Customizer: Fix widget filtering.
props westonruter.
fixes #27451.
Built from https://develop.svn.wordpress.org/trunk@28044


git-svn-id: http://core.svn.wordpress.org/trunk@27874 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-08 08:12:15 +00:00
Andrew Nacin 5ea061ef8d Widget Customizer: Fix incorrect replacement in [27995].
props westonruter.
fixes #27690.

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


git-svn-id: http://core.svn.wordpress.org/trunk@27864 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-08 04:03:14 +00:00
Dominik Schilling f69f3d3d18 Widget Customizer: Cleanup `wp.customize.Widgets.SidebarControl`.
see #27690.
Built from https://develop.svn.wordpress.org/trunk@27995


git-svn-id: http://core.svn.wordpress.org/trunk@27825 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-07 20:00:16 +00:00
Dominik Schilling 5bd1e16992 Widget Customizer: Cleanup `wp.customize.Widgets.WidgetControl`.
see #27690.
Built from https://develop.svn.wordpress.org/trunk@27988


git-svn-id: http://core.svn.wordpress.org/trunk@27818 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-07 16:32:15 +00:00
Dominik Schilling 5f76bf3b0d Widget Customizer: Make the available widgets panel a Backbone view.
see #27690.
Built from https://develop.svn.wordpress.org/trunk@27986


git-svn-id: http://core.svn.wordpress.org/trunk@27816 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-07 14:10:14 +00:00
Dominik Schilling fabc65b787 Widget Customizer: Move `WidgetCustomizer` to `wp.customize.Widgets`. First pass.
see #27690.
Built from https://develop.svn.wordpress.org/trunk@27985


git-svn-id: http://core.svn.wordpress.org/trunk@27815 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-07 09:04:14 +00:00
Dominik Schilling 158597a5e3 Widget Customizer: Restore deferral of `previewer-loading` class removal until preview is synced.
props westonruter.
fixes #27635.
Built from https://develop.svn.wordpress.org/trunk@27913


git-svn-id: http://core.svn.wordpress.org/trunk@27744 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-02 19:25:15 +00:00
Dominik Schilling 944fba8e2f Widget Customizer: Improve support for dynamically-created inputs.
* Re-work how and when widget forms get updated.
* Replace ad hoc hooks system with jQuery events,
* Add `widget-updated`/`widget-synced` events for widget soft/hard updates.
* Enter into a non-live form update mode, where the Apply button is restored when a sanitized form does not have the same fields as currently in the form, and so the fields cannot be easily updated to their sanitized values without doing a complete form replacement. Also restores live update mode if sanitized fields are aligned with the existing fields again.

Note: jQuery events are *not* final yet, see #19675.

props westonruter.
see #27491.
Built from https://develop.svn.wordpress.org/trunk@27909


git-svn-id: http://core.svn.wordpress.org/trunk@27740 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-02 18:20:16 +00:00
Dominik Schilling cde6d602ea Widget Customizer: Improve plugin compatibility.
Some plugins are using custom scripts and styles for there widgets. These are available on the Widgets screens, but not in the Customizer yet.
Scripts and styles can be enqueued via: 
* `admin_enqueue_scripts`
* `admin_print_scripts` and `admin_print_scripts-widgets.php`
* `admin_print_styles` and `admin_print_styles-widgets.php`
* `admin_print_footer_scripts` and `admin_footer-widgets.php`
All this hooks are now called in the Customizer too.

Previously we have add the `#widgets-right` ID to a container div via jQuery. Remember: `#widgets-right` exists on the Widgets screen and is used by many plugins to do event delegation from that element.
But since our script files are loaded in the footer, the JavaScript way is a bit late for some plugins.
We have decided to add a `div#widgets-right` container element to customizer. "Less hacky hack."

props westonruter, ocean90. Thanks dpe415 for testing.
fixes #27619.
Built from https://develop.svn.wordpress.org/trunk@27907


git-svn-id: http://core.svn.wordpress.org/trunk@27738 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-02 17:04:14 +00:00
Dominik Schilling dc5effa8cc Cleanup [27892].
Built from https://develop.svn.wordpress.org/trunk@27893


git-svn-id: http://core.svn.wordpress.org/trunk@27724 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-01 15:30:16 +00:00
Dominik Schilling ae1f4e146f Widget Customizer: Use postMessage to highlight widgets in preview or sections/controls in Customizer.
fixes #27622.
Built from https://develop.svn.wordpress.org/trunk@27892


git-svn-id: http://core.svn.wordpress.org/trunk@27723 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-01 15:26:15 +00:00
Dominik Schilling 404fe8710d Widget Customizer: Remove WidgetCustomizer.showFirstSidebarIfRequested().
It's currently unused and needs another iteration.

see #27290.
Built from https://develop.svn.wordpress.org/trunk@27891


git-svn-id: http://core.svn.wordpress.org/trunk@27722 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-01 12:38:15 +00:00
Dominik Schilling 6528b7804b Revert [27654] for strings.
props westonruter.
fixes #27485.
Built from https://develop.svn.wordpress.org/trunk@27890


git-svn-id: http://core.svn.wordpress.org/trunk@27721 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-04-01 11:08:16 +00:00
Dominik Schilling c2f839b7b6 Widget Customizer: Simplify nonces.
see #27534.
Built from https://develop.svn.wordpress.org/trunk@27819


git-svn-id: http://core.svn.wordpress.org/trunk@27653 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-28 15:35:15 +00:00
Dominik Schilling e1e09075d4 Widget Customizer: Improve behavior of bigger widgets.
* Support widgets which are higher than browsers viewport.
* Use widgets width as max-width.
* Don't animate the width of wide widgets to make them visible, instead fade them in/out.
* Fix Chrome flickerings while updating wide widgets.

props adamsilverstein, westonruter, ocean90.
see #27348.
Built from https://develop.svn.wordpress.org/trunk@27798


git-svn-id: http://core.svn.wordpress.org/trunk@27633 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-27 23:13:14 +00:00
Dominik Schilling b7d77cd8bf Widget Customizer: Fix shift+click issue in Firefox to open a widget.
props westonruter.
see #27358.
Built from https://develop.svn.wordpress.org/trunk@27701


git-svn-id: http://core.svn.wordpress.org/trunk@27540 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-25 11:23:15 +00:00
Scott Taylor d85ac5b841 Let us pass `jshint:core`.
Built from https://develop.svn.wordpress.org/trunk@27693


git-svn-id: http://core.svn.wordpress.org/trunk@27532 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-24 23:02:13 +00:00
Dominik Schilling 290e5e5271 Widget Customizer: Use Underscores `indexOf` for IE8 compatibility.
props adamsilverstein.
see #27485.
Built from https://develop.svn.wordpress.org/trunk@27654


git-svn-id: http://core.svn.wordpress.org/trunk@27497 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-22 21:22:13 +00:00
Dominik Schilling 21158f33f7 Widget Customizer: Fix 'WidgetCustomizerPreview' is undefined error in IE8/9.
* Move `WidgetCustomizerPreview` to `wp.customize.WidgetCustomizerPreview`
* Move `WidgetCustomizerPreview_exports` to export_preview_data()
* Use `_wpWidgetCustomizerPreviewSettings` to transfer settings to `wp.customize.WidgetCustomizerPreview`

see #27485.
Built from https://develop.svn.wordpress.org/trunk@27653


git-svn-id: http://core.svn.wordpress.org/trunk@27496 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-22 21:04:15 +00:00
Dominik Schilling 9b0ec406d1 Widget Customizer: Improve error handling. First pass.
* Replace Widget_Customizer_Exception with WP_Error
* Call Previewer.cheatin() to show the cheating message if a user can't change widgets
* Call Previewer.login() to show the login form if a user is logged out
* Show a generic error message on failures

see #27419.
Built from https://develop.svn.wordpress.org/trunk@27652


git-svn-id: http://core.svn.wordpress.org/trunk@27495 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-22 20:55:18 +00:00