Make WordPress Core

Ticket #31484: 31484.diff

File 31484.diff, 3.9 KB (added by westonruter, 10 years ago)

https://github.com/xwp/wordpress-develop/pull/74

  • src/wp-admin/customize.php

    diff --git src/wp-admin/customize.php src/wp-admin/customize.php
    index d6cec32..a858c25 100644
    do_action( 'customize_controls_print_scripts' ); 
    252252                $settings['settings'][ $id ] = array(
    253253                        'value'     => $setting->js_value(),
    254254                        'transport' => $setting->transport,
     255                        'dirty'     => $setting->dirty,
    255256                );
    256257        }
    257258
  • src/wp-admin/js/customize-controls.js

    diff --git src/wp-admin/js/customize-controls.js src/wp-admin/js/customize-controls.js
    index d95287c..ccce08e 100644
     
    1717
    1818                        this.id = id;
    1919                        this.transport = this.transport || 'refresh';
     20                        this._dirty = options.dirty || false;
    2021
    2122                        this.bind( this.preview );
    2223                },
     
    24242425                $.each( api.settings.settings, function( id, data ) {
    24252426                        api.create( id, id, data.value, {
    24262427                                transport: data.transport,
    2427                                 previewer: api.previewer
     2428                                previewer: api.previewer,
     2429                                dirty: !! data.dirty
    24282430                        } );
    24292431                });
    24302432
  • src/wp-includes/class-wp-customize-setting.php

    diff --git src/wp-includes/class-wp-customize-setting.php src/wp-includes/class-wp-customize-setting.php
    index 5618314..18598dc 100644
    class WP_Customize_Setting { 
    6060        public $sanitize_callback    = '';
    6161        public $sanitize_js_callback = '';
    6262
     63        /**
     64         * Whether or not the setting is initially dirty when created.
     65         *
     66         * This is used to ensure that a setting will be sent from the pane to the
     67         * preview when loading the Customizer. Normally a setting only is synced to
     68         * the preview if it has been changed. This allows the setting to be sent
     69         * from the start.
     70         *
     71         * @since 4.1.2
     72         * @access public
     73         * @var bool
     74         */
     75        public $dirty = false;
     76
    6377        protected $id_data = array();
    6478
    6579        /**
  • src/wp-includes/class-wp-customize-widgets.php

    diff --git src/wp-includes/class-wp-customize-widgets.php src/wp-includes/class-wp-customize-widgets.php
    index 674dee6..ce9872c 100644
    final class WP_Customize_Widgets { 
    216216                $sidebars_widgets = $this->old_sidebars_widgets;
    217217                $sidebars_widgets = retrieve_widgets( 'customize' );
    218218                add_filter( 'option_sidebars_widgets', array( $this, 'filter_option_sidebars_widgets_for_theme_switch' ), 1 );
     219                unset( $GLOBALS['_wp_sidebars_widgets'] );
    219220        }
    220221
    221222        /**
    final class WP_Customize_Widgets { 
    232233         * @access public
    233234         *
    234235         * @param array $old_sidebars_widgets
     236         * @return array
    235237         */
    236238        public function filter_customize_value_old_sidebars_widgets_data( $old_sidebars_widgets ) {
    237239                return $this->old_sidebars_widgets;
    final class WP_Customize_Widgets { 
    249251         * @access public
    250252         *
    251253         * @param array $sidebars_widgets
     254         * @return array
    252255         */
    253256        public function filter_option_sidebars_widgets_for_theme_switch( $sidebars_widgets ) {
    254257                $sidebars_widgets = $GLOBALS['sidebars_widgets'];
    final class WP_Customize_Widgets { 
    332335                        $setting_id = 'old_sidebars_widgets_data';
    333336                        $setting_args = $this->get_setting_args( $setting_id, array(
    334337                                'type' => 'global_variable',
     338                                'dirty' => true,
    335339                        ) );
    336340                        $this->manager->add_setting( $setting_id, $setting_args );
    337341                }
    final class WP_Customize_Widgets { 
    356360                                $setting_id   = sprintf( 'sidebars_widgets[%s]', $sidebar_id );
    357361                                $setting_args = $this->get_setting_args( $setting_id );
    358362                                if ( ! $this->manager->get_setting( $setting_id ) ) {
     363                                        if ( ! $this->manager->is_theme_active() ) {
     364                                                $setting_args['dirty'] = true;
     365                                        }
    359366                                        $this->manager->add_setting( $setting_id, $setting_args );
    360367                                }
    361368                                $new_setting_ids[] = $setting_id;
    final class WP_Customize_Widgets { 
    894901         * @access public
    895902         *
    896903         * @param array $sidebars_widgets List of widgets for the current sidebar.
     904         * @return array
    897905         */
    898906        public function preview_sidebars_widgets( $sidebars_widgets ) {
    899907                $sidebars_widgets = get_option( 'sidebars_widgets' );