Make WordPress Core

Ticket #38797: 38797.3.patch

File 38797.3.patch, 4.2 KB (added by nikeo, 5 years ago)
  • src/wp-admin/js/customize-controls.js

    diff --git a/src/wp-admin/js/customize-controls.js b/src/wp-admin/js/customize-controls.js
    index 5987bf4ed..cdc44bdee 100644
    a b  
    36533653                        };
    36543654
    36553655                        // Debounce to prevent hammering server and then wait for any pending update requests.
    3656                         previewer.refresh = _.debounce(
    3657                                 ( function( originalRefresh ) {
    3658                                         return function() {
    3659                                                 var isProcessingComplete, refreshOnceProcessingComplete;
    3660                                                 isProcessingComplete = function() {
    3661                                                         return 0 === api.state( 'processing' ).get();
    3662                                                 };
    3663                                                 if ( isProcessingComplete() ) {
    3664                                                         originalRefresh.call( previewer );
    3665                                                 } else {
    3666                                                         refreshOnceProcessingComplete = function() {
    3667                                                                 if ( isProcessingComplete() ) {
    3668                                                                         originalRefresh.call( previewer );
    3669                                                                         api.state( 'processing' ).unbind( refreshOnceProcessingComplete );
    3670                                                                 }
    3671                                                         };
    3672                                                         api.state( 'processing' ).bind( refreshOnceProcessingComplete );
    3673                                                 }
    3674                                         };
    3675                                 }( previewer.refresh ) ),
    3676                                 previewer.refreshBuffer
    3677                         );
     3656                        previewer.refresh = function() {
     3657        var isProcessingComplete,
     3658            refreshOnceProcessingComplete,
     3659            dfd = $.Deferred(),
     3660            _resolveRefresh = function( processing ) {
     3661              api.Previewer.prototype.refresh.call( previewer )
     3662                .done( function( server_data ) {
     3663                    dfd.resolve( server_data );
     3664                } )
     3665                .fail( function( reason ) {
     3666                    dfd.resolve( reason );
     3667                } )
     3668                .always( function() {
     3669                  if ( true === processing.unbind ) {
     3670                    api.state( 'processing' ).unbind( refreshOnceProcessingComplete );
     3671                  }
     3672                });
     3673            };
     3674        setTimeout( function() {
     3675          isProcessingComplete = function() {
     3676            return 0 === api.state( 'processing' ).get();
     3677          };
     3678          if ( isProcessingComplete() ) {
     3679            _resolveRefresh( { unbind : false } );
     3680          } else {
     3681            refreshOnceProcessingComplete = function() {
     3682              if ( isProcessingComplete() ) {
     3683                _resolveRefresh( { unbind : true });
     3684              }
     3685            };
     3686            api.state( 'processing' ).bind( refreshOnceProcessingComplete );
     3687          }
     3688        }, previewer.refreshBuffer );//setTimeout
     3689        return dfd.promise();
     3690      };//previewer.refresh
     3691
     3692
    36783693
    36793694                        previewer.container   = api.ensure( params.container );
    36803695                        previewer.allowedUrls = params.allowedUrls;
     
    39253940                 * @returns {void}
    39263941                 */
    39273942                refresh: function() {
    3928                         var previewer = this, onSettingChange;
     3943                        var previewer = this, onSettingChange, dfd = $.Deferred();
    39293944
    39303945                        // Display loading indicator
    39313946                        previewer.send( 'loading-initiated' );
     
    39553970                                previewer.targetWindow( loadingFrame.targetWindow() );
    39563971                                previewer.channel( loadingFrame.channel() );
    39573972
    3958                                 onceSynced = function() {
     3973                                onceSynced = function( server_data ) {
    39593974                                        loadingFrame.unbind( 'synced', onceSynced );
    39603975                                        if ( previewer._previousPreview ) {
    39613976                                                previewer._previousPreview.destroy();
     
    39633978                                        previewer._previousPreview = previewer.preview;
    39643979                                        previewer.deferred.active.resolve();
    39653980                                        delete previewer.loading;
     3981          dfd.resolve( server_data );
    39663982                                };
    39673983                                loadingFrame.bind( 'synced', onceSynced );
    39683984
     
    39854001                                if ( 'cheatin' === reason ) {
    39864002                                        previewer.cheatin();
    39874003                                }
     4004        dfd.reject( reason );
    39884005                        });
     4006      return dfd.promise();
    39894007                },
    39904008
    39914009                login: function() {
  • src/wp-includes/js/customize-preview.js

    diff --git a/src/wp-includes/js/customize-preview.js b/src/wp-includes/js/customize-preview.js
    index f51c45ff9..eecb416fd 100644
    a b  
    733733                        $.each( events, function( event, args ) {
    734734                                api.preview.trigger( event, args );
    735735                        });
    736                         api.preview.send( 'synced' );
     736                        api.server_data = api.server_data || new api.Value( {} );
     737      api.trigger( 'before_synced', api.server_data() );//<= developers can set the api.server_data() here, before it gets sent
     738      api.preview.send( 'synced', api.server_data() );
    737739                });
    738740
    739741                api.preview.bind( 'active', function() {