diff --git src/wp-includes/class-wp-customize-nav-menus.php src/wp-includes/class-wp-customize-nav-menus.php
index e7b7e0f..c13ed93 100644
|
|
|
final class WP_Customize_Nav_Menus { |
| 771 | 771 | ); |
| 772 | 772 | $args['can_partial_refresh'] = $can_partial_refresh; |
| 773 | 773 | |
| | 774 | $hashed_args = $args; |
| | 775 | |
| 774 | 776 | if ( ! $can_partial_refresh ) { |
| 775 | | $args['fallback_cb'] = ''; |
| 776 | | $args['walker'] = ''; |
| | 777 | $hashed_args['fallback_cb'] = ''; |
| | 778 | $hashed_args['walker'] = ''; |
| 777 | 779 | } |
| 778 | 780 | |
| 779 | | ksort( $args ); |
| 780 | | $args['args_hash'] = $this->hash_nav_menu_args( $args ); |
| | 781 | ksort( $hashed_args ); |
| | 782 | $hashed_args['args_hash'] = $this->hash_nav_menu_args( $hashed_args ); |
| 781 | 783 | |
| 782 | | $this->preview_nav_menu_instance_args[ $this->preview_nav_menu_instance_number ] = $args; |
| | 784 | $this->preview_nav_menu_instance_args[ $this->preview_nav_menu_instance_number ] = $hashed_args; |
| 783 | 785 | return $args; |
| 784 | 786 | } |
| 785 | 787 | |
diff --git src/wp-includes/js/customize-preview-nav-menus.js src/wp-includes/js/customize-preview-nav-menus.js
index 2b6c994..ce962d6 100644
|
|
|
wp.customize.menusPreview = ( function( $, api ) { |
| 9 | 9 | renderNonceValue: null, |
| 10 | 10 | renderNoncePostKey: null, |
| 11 | 11 | previewCustomizeNonce: null, |
| 12 | | previewReady: $.Deferred(), |
| 13 | 12 | requestUri: '/', |
| 14 | 13 | theme: { |
| 15 | 14 | active: false, |
| … |
… |
wp.customize.menusPreview = ( function( $, api ) { |
| 20 | 19 | }; |
| 21 | 20 | |
| 22 | 21 | api.bind( 'preview-ready', function() { |
| 23 | | self.previewReady.resolve(); |
| 24 | | } ); |
| 25 | | self.previewReady.done( function() { |
| 26 | | self.init(); |
| | 22 | api.preview.bind( 'active', function() { |
| | 23 | self.init(); |
| | 24 | } ); |
| 27 | 25 | } ); |
| 28 | 26 | |
| 29 | 27 | /** |
| … |
… |
wp.customize.menusPreview = ( function( $, api ) { |
| 36 | 34 | $.extend( self, _wpCustomizePreviewNavMenusExports ); |
| 37 | 35 | } |
| 38 | 36 | |
| 39 | | self.previewReady.done( function() { |
| 40 | | api.each( function( setting, id ) { |
| 41 | | setting.id = id; |
| 42 | | self.bindListener( setting ); |
| 43 | | } ); |
| | 37 | api.each( function( setting, id ) { |
| | 38 | setting.id = id; |
| | 39 | self.bindListener( setting ); |
| | 40 | } ); |
| 44 | 41 | |
| 45 | | api.preview.bind( 'setting', function( args ) { |
| 46 | | var id, value, setting; |
| 47 | | args = args.slice(); |
| 48 | | id = args.shift(); |
| 49 | | value = args.shift(); |
| 50 | | if ( ! api.has( id ) ) { |
| 51 | | // Currently customize-preview.js is not creating settings for dynamically-created settings in the pane; so we have to do it |
| 52 | | setting = api.create( id, value ); // @todo This should be in core |
| 53 | | setting.id = id; |
| 54 | | if ( self.bindListener( setting ) ) { |
| 55 | | setting.callbacks.fireWith( setting, [ setting(), setting() ] ); |
| 56 | | } |
| | 42 | api.preview.bind( 'setting', function( args ) { |
| | 43 | var id, value, setting; |
| | 44 | args = args.slice(); |
| | 45 | id = args.shift(); |
| | 46 | value = args.shift(); |
| | 47 | if ( ! api.has( id ) ) { |
| | 48 | // Currently customize-preview.js is not creating settings for dynamically-created settings in the pane; so we have to do it |
| | 49 | setting = api.create( id, value ); // @todo This should be in core |
| | 50 | setting.id = id; |
| | 51 | if ( self.bindListener( setting ) ) { |
| | 52 | setting.callbacks.fireWith( setting, [ setting(), null ] ); |
| 57 | 53 | } |
| 58 | | } ); |
| | 54 | } |
| 59 | 55 | } ); |
| 60 | 56 | }; |
| 61 | 57 | |
diff --git tests/phpunit/tests/customize/nav-menus.php tests/phpunit/tests/customize/nav-menus.php
index 7c0ee3d..616bf0b 100644
|
|
|
class Test_WP_Customize_Nav_Menus extends WP_UnitTestCase { |
| 358 | 358 | |
| 359 | 359 | $expected = array( |
| 360 | 360 | 'echo', |
| 361 | | 'args_hash', |
| 362 | 361 | 'can_partial_refresh', |
| 363 | 362 | 'fallback_cb', |
| 364 | 363 | 'instance_number', |
| … |
… |
class Test_WP_Customize_Nav_Menus extends WP_UnitTestCase { |
| 370 | 369 | 'walker' => new Walker_Nav_Menu(), |
| 371 | 370 | ) ); |
| 372 | 371 | $this->assertEqualSets( $expected, array_keys( $results ) ); |
| 373 | | $this->assertEquals( '', $results['fallback_cb'] ); |
| 374 | | $this->assertEquals( '', $results['walker'] ); |
| | 372 | $this->assertEquals( 'wp_page_menu', $results['fallback_cb'] ); |
| 375 | 373 | $this->assertEquals( 0, $results['can_partial_refresh'] ); |
| | 374 | |
| | 375 | $this->assertNotEmpty( $menus->preview_nav_menu_instance_args[ $results['instance_number'] ] ); |
| | 376 | $preview_nav_menu_instance_args = $menus->preview_nav_menu_instance_args[ $results['instance_number'] ]; |
| | 377 | $this->assertEquals( '', $preview_nav_menu_instance_args['fallback_cb'] ); |
| | 378 | $this->assertEquals( '', $preview_nav_menu_instance_args['walker'] ); |
| | 379 | $this->assertNotEmpty( $preview_nav_menu_instance_args['args_hash'] ); |
| 376 | 380 | } |
| 377 | 381 | |
| 378 | 382 | /** |