Commit Graph

110 Commits

Author SHA1 Message Date
Weston Ruter b5e18056e5 Customize: Add a user-friendly way to preview site responsiveness for desktop, tablet, and mobile.
Introduces `WP_Customize_Manager::get_previewable_devices()` with a `customize_previewable_devices` filter to change the default device and which devices are available for previewing. This is a feature that was first pioneered on WordPress.com.

Props celloexpressions, folletto, valendesigns, westonruter, welcher, adamsilverstein, michaelarestad, Fab1en.
Fixes #31195.

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


git-svn-id: http://core.svn.wordpress.org/trunk@36499 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-02-16 01:57:26 +00:00
Weston Ruter c376477265 Customizer: Export `nonce`, `theme`, and `url` app settings in preview as exported in pane.
* Introduce `WP_Customize_Manager::get_nonces()` to consolidate logic for retrieving nonces.
* Export nonces centrally in `wp.customize.settings.nonce` with each request and update nav menus preview to utilize.
* Send updated nonces to preview upon `nonce-refresh`.
* Request full preview refresh if Nav Menu selective refresh request fails (e.g. due to bad nonce).
* Update nav menus and widgets in Customizer to utilize `customize_refresh_nonces` for exporting nonces and keeping them up to date.

See #27355.
Fixes #35617.

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


git-svn-id: http://core.svn.wordpress.org/trunk@36381 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-01-27 17:55:26 +00:00
Weston Ruter c7923b2c9d Customizer: Improve parity between JS Setting models in preview with JS Setting models in pane.
* Ensure that Setting `Value` objects in preview get initial `_dirty` flag set if values among POST data.
* Upon `saved` event, send `saved` message to preview with the `response` to trigger `saved` event there.
* Reset `_dirty` flag for all setting `Value` objects in preview upon `saved`.
* Continue to create settings synced from pane even after initial bootstrap, and create them as dirty.
* Ensure that `id` property is set for setting `Value` objects in preview.

See #27355.
Fixes #35616.

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


git-svn-id: http://core.svn.wordpress.org/trunk@36374 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-01-26 23:52:25 +00:00
Weston Ruter 57c2b5d192 Customizer: Use "(Untitled)" as site title if `blogname` is empty.
Fixes a layout issue in the Customizer UI. Also de-duplicate title display logic, outputting "Loading..." as site title in PHP with actual title being set upon Customizer `ready`. Also update the site title in response to a `blogname` setting change as opposed to `input` DOM events on the control.

Fixes #35579.

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


git-svn-id: http://core.svn.wordpress.org/trunk@36355 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-01-23 23:15:27 +00:00
Dominik Schilling b7df807589 jQuery: Replace use of the `.load()` method for the "load" event with `.on( 'load', handler )`.
The shortcut is deprecated since jQuery 1.8.

See http://api.jquery.com/load-event/.
See #35380.
Built from https://develop.svn.wordpress.org/trunk@36287


git-svn-id: http://core.svn.wordpress.org/trunk@36254 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-01-13 17:22:27 +00:00
Weston Ruter f676fdcee3 Customizer: Fix `margin-top` calculation for Themes section.
Ensure that the Themes section calculates its `margin-top` as a panel, since the section behaves as one. Fixes regression caused by [35231].

See #33567.


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


git-svn-id: http://core.svn.wordpress.org/trunk@35217 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-17 22:41:25 +00:00
Weston Ruter 6bcd8ad757 Customizer: Always show Widgets panel initially if sidebars are registered; show notice to users in panel if no widget areas are in current preview.
Widgets panel will not wait to display until the preview loads.

Also fixes problems with `margin-top` in panels where other panels' `active` states change, as well as ensuring sections of deactivated panel collapse before panel is hidden to prevent the pane from becoming empty of controls.

Fixes #33052.
Fixes #33567.

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


git-svn-id: http://core.svn.wordpress.org/trunk@35197 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-16 23:48:25 +00:00
Weston Ruter 885944f79f Customizer: Fix usage of `jQuery.contains()` allowing `active` state changes to again animate control visibility.
Aligns usage of `jQuery.contains()` in a control's `onChangeActive` method with the existing usage in the corresponding `onChangeActive` method for panels and sections.

Props nikeo.
Fixes #33509.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34521 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 19:54:50 +00:00
Scott Taylor 57d2420ae5 Similar to #33386, don't use `guid` when retrieving URL for a cropped header image in the Customizer.
Props polevaultweb.
Fixes #33319.

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


git-svn-id: http://core.svn.wordpress.org/trunk@34156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-15 14:46:32 +00:00
Dominik Schilling d6f26e4c7c Site Icon: For preview fall back to `full` size URL when `thumbnail` size doesn't exist.
Prevents a JavaScript error for rare cases when cropping is skipped and the image is smaller than `thumbnail`.

Props tyxla.
Fixes #33417.
Built from https://develop.svn.wordpress.org/trunk@34056


git-svn-id: http://core.svn.wordpress.org/trunk@34024 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-11 20:13:25 +00:00
Weston Ruter 7c6534fd4c Customize: Fix logic for determining the container element when focusing on a panel, section, or control.
Fixes #33695 for trunk.

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


git-svn-id: http://core.svn.wordpress.org/trunk@33908 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-07 05:59:24 +00:00
Weston Ruter 274373afc6 Customize: Fix clearing of a color control's setting by using proper empty value.
Props stevehenty.
Fixes #30280.


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


git-svn-id: http://core.svn.wordpress.org/trunk@33907 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-07 05:48:23 +00:00
Sergey Biryukov f0ce1f06ea Provide more helpful feedback than just "Cheatin' uh?" for permission errors in `wp-admin/js/customize-controls.js`.
fixes #33685. see #14530.
Built from https://develop.svn.wordpress.org/trunk@33902


git-svn-id: http://core.svn.wordpress.org/trunk@33871 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-04 03:40:25 +00:00
Weston Ruter 1413f2edd5 Customizer: Collapse any expanded panel/sections before expanding other panel/sections
Fix removes need for workaround introduced in [33488] for direct link from nav menu widget to the customizer widgets panel. The todo is now implemented.

Props celloexpressions, westonruter.
Fixes #33396 for trunk.

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


git-svn-id: http://core.svn.wordpress.org/trunk@33805 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-31 23:08:42 +00:00
Weston Ruter 10503cd3af Customizer: Ensure persistence of unchanged `active` state for controls, sections, and panels.
Props nikeo, westonruter.
Fixes #33428 for trunk.
See also #33494.

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


git-svn-id: http://core.svn.wordpress.org/trunk@33722 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-26 07:26:21 +00:00
Weston Ruter 7fcc3e50e1 Customize: Fix layout issues in panels and sections when resizing and autofocusing.
Also reverts [33157] which is no longer needed.

Props valendesigns, mattwiebe, westonruter, ocean90.
Fixes #33220.

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


git-svn-id: http://core.svn.wordpress.org/trunk@33577 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-11 23:56:25 +00:00
Dominik Schilling 45b8634605 Customizer: Remove obsolete `.control-panel-back` and `.customize-overlay-close` buttons.
props afercia, ocean90.
see #31336.
fixes #33229.
Built from https://develop.svn.wordpress.org/trunk@33599


git-svn-id: http://core.svn.wordpress.org/trunk@33566 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-09 19:00:24 +00:00
Dominik Schilling 04c21a0e3c Customizer: Restore Shift + Clicking on widgets to open the widgets panel.
Includes an alternative for jQuery UI's `:focusable` selector because it has an ancestor visibility requirement, see https://github.com/jquery/jquery-ui/pull/1583.

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


git-svn-id: http://core.svn.wordpress.org/trunk@33563 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-08 09:37:26 +00:00
Dominik Schilling 8679a93f16 Themes: Remove legacy theme preview.
The pre-3.4 theme previewer doesn't work when using a static front page.
We kept the old theme preview for no-JS and some browsers that were less capable. But since browsers are doing a better job today we don't need to continue fixing/shipping this legacy code. Bye!

fixes #33178.
Built from https://develop.svn.wordpress.org/trunk@33492


git-svn-id: http://core.svn.wordpress.org/trunk@33459 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-29 18:36:26 +00:00
Weston Ruter a48604e32c Customizer: Hide empty space in footer on small screens since it is only populated on larger screens.
Props obenland.
Fixes #33138.

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


git-svn-id: http://core.svn.wordpress.org/trunk@33421 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-28 03:43:24 +00:00
Konstantin Obenland 94aefe52dc Customizer: Use correct spelling when instantiating `CustomizeImageCropper`.
Introduced in [33329].

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


git-svn-id: http://core.svn.wordpress.org/trunk@33412 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-27 15:55:24 +00:00
Konstantin Obenland 0f61e187b6 Site Icon: Create custom sizes for images that don't need cropping.
This will duplicate an image that doesn't need cropping once and will skip
creating new images and custom sizes if the selected image has the `site-icon`
context.

Fixes #33011.

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


git-svn-id: http://core.svn.wordpress.org/trunk@33328 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-22 02:30:25 +00:00
Konstantin Obenland 0ccb9c47cb Site Icon: Center initial crop position.
Starting out at the center of the image makes for a better user experience.

Props iseulde.
Fixes #33050.


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


git-svn-id: http://core.svn.wordpress.org/trunk@33305 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-20 19:02:24 +00:00
Konstantin Obenland 3248497cf3 Site Icon: Add crop preview to the media modal.
* Monkey patches imgAreaSelect library to support touch events.
* Removes Settings version of Site Icon since it would have been the same flow.
* Removes default value for Customizer setting - there is no default favicon.

Fixes #16434.



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


git-svn-id: http://core.svn.wordpress.org/trunk@33301 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-20 15:57:25 +00:00
Weston Ruter 0f37c66077 Customizer: Defer updating nav menu item `tabIndex` attributes until pane is reflowed.
Introduces `pane-contents-reflowed` Customizer event.

Props valendesigns, westonruter.
Fixes #32943.

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


git-svn-id: http://core.svn.wordpress.org/trunk@33255 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-15 20:05:25 +00:00
Konstantin Obenland f29e5044cd Site Icon: Add Customizer UI.
Second part of the Site Icon feature after [32994] introduced it for Settings.

Props celloexpressions.
See #16434.


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


git-svn-id: http://core.svn.wordpress.org/trunk@33126 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-10 21:33:24 +00:00
Dominik Schilling 75d6c10b01 Customizer: Use a `<button>` for the collapse sidebar … button.
props afercia.
fixes #32819.
Built from https://develop.svn.wordpress.org/trunk@33153


git-svn-id: http://core.svn.wordpress.org/trunk@33125 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-10 21:22:26 +00:00
Dominik Schilling 2ce8d2eea2 Customizer: Accessibility enhancements.
* Move tabindex/focus code into `onChangeExpanded` so that it works for cases where `expand()` is called directly.
* Use `visibility: hidden` to hide hidden elements from keyboard focus and screen readers.

props celloexpressions.
fixes #31336.
Built from https://develop.svn.wordpress.org/trunk@33069


git-svn-id: http://core.svn.wordpress.org/trunk@33040 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-03 20:19:25 +00:00
Aaron Jorbin c9307fc95a Update Grunt dev-dependencies
grunt-browserify : minor version update
grunt-contrib-cssmin : minor version update
grunt-contrib-imagemin : patch version update
grunt-contrib-jshint : patch version update
grunt-contrib-uglify : minor version update (causes some changes to minified JS)
grunt-includes : minor version update
grunt-sass : major version update ( underlying libsass update ).

Props wonderboymusic
See #31700


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


git-svn-id: http://core.svn.wordpress.org/trunk@32959 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-28 14:51:30 +00:00
Weston Ruter e162bb8940 Customizer: Improve previewing setting changes for `show_on_front`, `page_on_front`, and `page_for_posts`.
When changing the `page_on_front` setting (with `show_on_front`), change the previewed URL to be the home URL so that the effect can be seen. When changing `page_for_posts`, change the previewed URL to be the selected page.

Props valendesigns, westonruter.
Fixes #30677.


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


git-svn-id: http://core.svn.wordpress.org/trunk@32947 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-27 19:59:25 +00:00
Weston Ruter 40ad21b58b Fix regressions from [32649] wrt Customizer `expanded` and `active` state changes for sections.
The `args.completeCallback` was not always called when `onChangeExpanded()` was called. And when a section became inactive (`active` state goes to `false`) and it was currently `expanded`, the Customizer panel would then becomes blank as the section was hidden; it needed to `collapse()` the section first before hiding the element.

See #31336.


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


git-svn-id: http://core.svn.wordpress.org/trunk@32714 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-12 22:28:25 +00:00
Dominik Schilling 974ca19e36 Customizer: Improve JS templates for Panels and Sections added in [32658].
* Always fall back to using the default template if no custom template exists.
* Provide a set of default params when constructing new `Section` and `Panel` objects.

Includes QUnit tests.

Props celloexpressions, westonruter, ocean90.
Fixes #30737.
Built from https://develop.svn.wordpress.org/trunk@32681


git-svn-id: http://core.svn.wordpress.org/trunk@32651 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-01 22:47:25 +00:00
Weston Ruter 98b03d376e Add JS templates for Customizer Panels and Sections.
This extends the approach taken for Customizer Controls in #29572.

Props celloexpressions, westonruter, ocean90.
See #30737.

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


git-svn-id: http://core.svn.wordpress.org/trunk@32628 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-30 00:03:30 +00:00
Dominik Schilling fccc19b510 Customizer: Replace accordion behavior of sections with a slide-in navigation.
This allows users to focus on the contents of the active section more easily and separating the navigation from the content/controls in the Customizer.

props valendesigns, celloexpressions.
see #31336.
Built from https://develop.svn.wordpress.org/trunk@32649


git-svn-id: http://core.svn.wordpress.org/trunk@32619 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-29 13:57:26 +00:00
Dominik Schilling 7b24017cdb Customizer Theme Switcher: Don't re-render a theme control if it has already been rendered.
Move initialization of `$customizeSidebar` to `api.ThemesSection.initialize()` to prevent cases where the result can be undefined.

props westonruter, ocean90.
fixes #31793.
Built from https://develop.svn.wordpress.org/trunk@32119


git-svn-id: http://core.svn.wordpress.org/trunk@32098 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-13 22:10:29 +00:00
Dominik Schilling d43d1503f7 Customize Headers: Improve handling of the initial header model.
Headers are currently keyed by the basename of the image, see #31786. When two images have the same key only one image will be listed and the current image can be empty in the header control.
To prevent this we now fall back to the raw current header image if the image isn't in `_wpCustomizeHeader.uploads`.

props sirbrillig.
fixes #31742.
Built from https://develop.svn.wordpress.org/trunk@32091


git-svn-id: http://core.svn.wordpress.org/trunk@32070 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-08 22:28:27 +00:00
Dominik Schilling 755d44736a Customizer Theme Switcher: Lazy load theme screenshots.
props westonruter, ocean90.
fixes #31793.
Built from https://develop.svn.wordpress.org/trunk@32088


git-svn-id: http://core.svn.wordpress.org/trunk@32067 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-08 20:52:29 +00:00
Dominik Schilling 15f24a7730 Customizer Theme Switcher: Fix tabbing order if section is open.
see #31289.
Built from https://develop.svn.wordpress.org/trunk@32087


git-svn-id: http://core.svn.wordpress.org/trunk@32066 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-08 19:03:25 +00:00
Dominik Schilling 79eee23a29 Customizer Theme Switcher: Don't deactivate section on empty search results.
props westonruter.
fixes #31889.
Built from https://develop.svn.wordpress.org/trunk@32083


git-svn-id: http://core.svn.wordpress.org/trunk@32062 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-08 17:53:28 +00:00
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 59c586e5ad Customizer Theme Switcher: Remove "Add New" reference from customize-controls.js.
see #31837.
Built from https://develop.svn.wordpress.org/trunk@32004


git-svn-id: http://core.svn.wordpress.org/trunk@31983 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-04 14:14:26 +00:00
Dominik Schilling 254b9e3264 Customizer Theme Switcher: Navigation streamlining.
* Detach Themes section from other controls
* Move to buttons to navigate back and forth
* Change titles based on current theme status, active/previewing
* Hide the active/previewing theme from the list of available themes

props folletto for the design concepts.
props designsimply, celloexpressions for initial patches.
props Team Gandalf.
see #31289.
Built from https://develop.svn.wordpress.org/trunk@31975


git-svn-id: http://core.svn.wordpress.org/trunk@31954 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-01 22:51:27 +00:00
Dominik Schilling 8ab7c076d6 Customizer Theme Switcher: Switch the details/live preview buttons.
props celloexpressions, ocean90.
fixes #31791.
Built from https://develop.svn.wordpress.org/trunk@31954


git-svn-id: http://core.svn.wordpress.org/trunk@31933 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-01 12:36:26 +00:00
Dominik Schilling 79a29b077e Customizer: Defer rendering theme controls until the section is displayed.
see #31793.
Built from https://develop.svn.wordpress.org/trunk@31944


git-svn-id: http://core.svn.wordpress.org/trunk@31923 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-31 22:21:25 +00:00
Dominik Schilling b07e3e2de7 Customizer: Fix calculation of panel positions when accessing via deep-links.
Make sure that the parent `li` is shown before attempting to calculate its position.
Improve also the logic for focusing on a panel to prevent focusing hidden elements.

props westonruter.
fixes #31014.
see #31794.
Built from https://develop.svn.wordpress.org/trunk@31920


git-svn-id: http://core.svn.wordpress.org/trunk@31899 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-29 11:17:28 +00:00
Dominik Schilling 96b88a391b Theme Switcher: Use the global panel back button instead of adding a new one.
This ensures the back button is visible on iOS devices. Same as in [29610].

see #31794.
Built from https://develop.svn.wordpress.org/trunk@31918


git-svn-id: http://core.svn.wordpress.org/trunk@31897 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-28 22:09:26 +00:00
Dominik Schilling 80972b7ecd Customizer: Fix selector for container which includes the controls. Broken since [30102].
see #31794, #31014.
Built from https://develop.svn.wordpress.org/trunk@31916


git-svn-id: http://core.svn.wordpress.org/trunk@31895 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-28 20:47:30 +00:00
Dominik Schilling ee2829959a Theme Switcher: Opening themes details modal shouldn't require two clicks on touch devices.
Inspired by [26838].

see #31794.
Built from https://develop.svn.wordpress.org/trunk@31914


git-svn-id: http://core.svn.wordpress.org/trunk@31893 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-27 22:54:29 +00:00
Dominik Schilling de7ecc80d3 Customizer: [31885] actually hasn't fixed the `SecurityError`s. 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 7925e4c912 Customizer: Avoid `SecurityError`s when the Customizer is embedded in an origin other than wp-admin.
props mattwiebe.
fixes #31687.
Built from https://develop.svn.wordpress.org/trunk@31885


git-svn-id: http://core.svn.wordpress.org/trunk@31864 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-25 17:26:26 +00:00