Customize: Keep frontend preview link updated to reflect the current state of previewed URL, active theme, and autosaved state.

See #39896.


git-svn-id: https://develop.svn.wordpress.org/trunk@41969 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Weston Ruter 2017-10-23 00:40:05 +00:00
parent e06f346a2c
commit 3bcd5075f5
1 changed files with 14 additions and 7 deletions

View File

@ -5797,6 +5797,8 @@
api.bind( 'ready', control.updatePreviewLink ); api.bind( 'ready', control.updatePreviewLink );
api.state( 'saved' ).bind( control.updatePreviewLink ); api.state( 'saved' ).bind( control.updatePreviewLink );
api.state( 'changesetStatus' ).bind( control.updatePreviewLink ); api.state( 'changesetStatus' ).bind( control.updatePreviewLink );
api.state( 'activated' ).bind( control.updatePreviewLink );
api.previewer.previewUrl.bind( control.updatePreviewLink );
button.element.on( 'click', function( event ) { button.element.on( 'click', function( event ) {
event.preventDefault(); event.preventDefault();
@ -7586,18 +7588,23 @@
* @return {string} Preview url. * @return {string} Preview url.
*/ */
getFrontendPreviewUrl: function() { getFrontendPreviewUrl: function() {
var previewer = this, var previewer = this, params, urlParser;
a = document.createElement( 'a' ), urlParser = document.createElement( 'a' );
params = {}; urlParser.href = previewer.previewUrl.get();
params = api.utils.parseQueryString( urlParser.search.substr( 1 ) );
if ( api.state( 'changesetStatus' ).get() && 'publish' !== api.state( 'changesetStatus' ).get() ) { if ( api.state( 'changesetStatus' ).get() && 'publish' !== api.state( 'changesetStatus' ).get() ) {
params.customize_changeset_uuid = api.settings.changeset.uuid; params.customize_changeset_uuid = api.settings.changeset.uuid;
} }
if ( ! api.state( 'activated' ).get() ) {
params.customize_theme = api.settings.theme.stylesheet;
}
if ( api.settings.changeset.autosaved || ! api.state( 'saved' ).get() ) {
params.customize_autosaved = 'on';
}
a.href = previewer.previewUrl(); urlParser.search = $.param( params );
a.search = $.param( params ); return urlParser.href;
return a.href;
} }
}); });