WordPress.org

Make WordPress Core

Ticket #42406: 42406.3.diff

File 42406.3.diff, 3.3 KB (added by westonruter, 4 years ago)
  • src/wp-admin/js/customize-controls.js

    diff --git src/wp-admin/js/customize-controls.js src/wp-admin/js/customize-controls.js
    index 7fb87bc88e..962150c241 100644
     
    30303030                        api.Panel.prototype.initialize.call( panel, id, options );
    30313031                },
    30323032
     3033                /**
     3034                 * Determine whether a given theme can be switched to, or in general.
     3035                 *
     3036                 * @since 4.9.0
     3037                 *
     3038                 * @param {string} [slug] - Theme slug.
     3039                 * @returns {boolean} Whether the theme can be switched to.
     3040                 */
     3041                canSwitchTheme: function canSwitchTheme( slug ) {
     3042                        var panel = this;
     3043                        if ( slug && slug === api.settings.theme.stylesheet ) {
     3044                                return true;
     3045                        }
     3046                        return 'publish' === api.state( 'selectedChangesetStatus' ).get() && ( '' === api.state( 'changesetStatus' ).get() || 'auto-draft' === api.state( 'changesetStatus' ).get() );
     3047                },
     3048
    30333049                /**
    30343050                 * Attach events.
    30353051                 *
     
    30523068                        }
    30533069
    30543070                        function toggleDisabledNotifications() {
    3055                                 if ( 'publish' === api.state( 'selectedChangesetStatus' ).get() ) {
     3071                                if ( panel.canSwitchTheme() ) {
    30563072                                        panel.notifications.remove( 'theme_switch_unavailable' );
    30573073                                } else {
    30583074                                        panel.notifications.add( new api.Notification( 'theme_switch_unavailable', {
     
    30633079                        }
    30643080                        toggleDisabledNotifications();
    30653081                        api.state( 'selectedChangesetStatus' ).bind( toggleDisabledNotifications );
     3082                        api.state( 'changesetStatus' ).bind( toggleDisabledNotifications );
    30663083
    30673084                        // Collapse panel to customize the current theme.
    30683085                        panel.contentContainer.on( 'click', '.customize-theme', function() {
     
    31733190                        }
    31743191
    31753192                        // Prevent loading a non-active theme preview when there is a drafted/scheduled changeset.
    3176                         if ( 'publish' !== api.state( 'selectedChangesetStatus' ).get() && slug !== api.settings.theme.stylesheet ) {
     3193                        if ( panel.canSwitchTheme( slug ) ) {
    31773194                                deferred.reject({
    31783195                                        errorCode: 'theme_switch_unavailable'
    31793196                                });
     
    32663283                 * @returns {jQuery.promise} Promise.
    32673284                 */
    32683285                loadThemePreview: function( themeId ) {
    3269                         var deferred = $.Deferred(), onceProcessingComplete, urlParser, queryParams;
     3286                        var panel = this, deferred = $.Deferred(), onceProcessingComplete, urlParser, queryParams;
    32703287
    32713288                        // Prevent loading a non-active theme preview when there is a drafted/scheduled changeset.
    3272                         if ( 'publish' !== api.state( 'selectedChangesetStatus' ).get() && themeId !== api.settings.theme.stylesheet ) {
     3289                        if ( ! panel.canSwitchTheme( themeId ) ) {
    32733290                                return deferred.reject().promise();
    32743291                        }
    32753292
     
    50895106                 * @since 4.2.0
    50905107                 */
    50915108                ready: function() {
    5092                         var control = this;
     5109                        var control = this, panel = api.panel( 'themes' );
    50935110
    50945111                        function disableSwitchButtons() {
    5095                                 return 'publish' !== api.state( 'selectedChangesetStatus' ).get() && control.params.theme.id !== api.settings.theme.stylesheet;
     5112                                return ! panel.canSwitchTheme( control.params.theme.id );
    50965113                        }
    50975114
    50985115                        // Temporary special function since supplying SFTP credentials does not work yet. See #42184.
     
    51075124
    51085125                        api.state( 'selectedChangesetStatus' ).bind( function() {
    51095126                                updateButtons();
    5110                         });
     5127                        } );
     5128                        api.state( 'changesetStatus' ).bind( function() {
     5129                                updateButtons();
     5130                        } );
    51115131                        updateButtons();
    51125132
    51135133                        control.container.on( 'touchmove', '.theme', function() {