Commit Graph

102 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
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
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
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
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
Dominik Schilling
3da04163cf Widget Customizer: Improve widget search.
* Removes jQuery.liveFilter dependency
* Filters widget collection directly
* Widget's name, ID and description will be searched

fixes #27451.
Built from https://develop.svn.wordpress.org/trunk@27650


git-svn-id: http://core.svn.wordpress.org/trunk@27493 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-21 21:13:15 +00:00
Dominik Schilling
64af78ca43 Widget Customizer: Restore highlighting of widgets in preview.
props westonruter.
see #27358.
Built from https://develop.svn.wordpress.org/trunk@27584


git-svn-id: http://core.svn.wordpress.org/trunk@27427 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-18 15:21:15 +00:00
Dominik Schilling
574c2967b5 Customizer: Introduce a processing state.
The processing state will prevent a save when it doesn't return 0.
Widget Customizer will use the state to prevent a save while a widget is updating, which is an asynchronous process.

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


git-svn-id: http://core.svn.wordpress.org/trunk@27383 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-14 19:16:14 +00:00
Dominik Schilling
f46a085f7c Widget Customizer: Use ?wp_customize=on.
Let _wp_customize_include() handle customizer initialisation.
Sets also the priority for the Add Widget and Reorder buttons and removes debug cruft.

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


git-svn-id: http://core.svn.wordpress.org/trunk@27367 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-13 18:38:14 +00:00
Scott Taylor
01c0b48822 Make widget customizer code pass JSHint.
Fixes #27298.


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


git-svn-id: http://core.svn.wordpress.org/trunk@27283 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-06 16:45:15 +00:00
Andrew Nacin
e853a9cc57 Add widget management to the customizer.
This brings in the Widget Customizer plugin: https://wordpress.org/plugins/widget-customizer/.

props westonruter, shaunandrews, michael-arestad, johnregan3, akeda, topher1kenobe, topquarky, bobbravo2, ricardocorreia. And for good measure, props westonruter.
see #27112.

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


git-svn-id: http://core.svn.wordpress.org/trunk@27266 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-05 20:41:14 +00:00