Make WordPress Core


Ignore:
Timestamp:
10/20/2015 07:07:58 PM (9 years ago)
Author:
westonruter
Message:

Customizer: Implement indicators for invalid nav menu items.

The same indicator on the nav menus admin page is now present for nav menu items in the Customizer. When a menu item is present for a post type that is no longer registered, the menu item will appear with the indicator.

Props kucrut, westonruter.
Fixes #33665.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/customize/nav-menu-item-setting.php

    r35242 r35302  
    9393            'original_title' => '',
    9494            'nav_menu_term_id' => 0,
     95            '_invalid' => false,
    9596        );
    9697        $this->assertEquals( $default, $setting->default );
     
    459460            'original_title' => 'Hi<script>alert(1)</script>',
    460461            'nav_menu_term_id' => 'heilo',
     462            '_invalid' => false,
    461463        );
    462464
     
    665667    }
    666668
     669    /**
     670     * @ticket 33665
     671     */
     672    function test_invalid_nav_menu_item() {
     673        $menu_id = wp_create_nav_menu( 'Primary' );
     674        register_post_type( 'poem', array(
     675            'public' => true,
     676        ) );
     677
     678        $post_id = self::factory()->post->create( array( 'post_type' => 'poem', 'post_title' => 'Code is poetry.' ) );
     679        $post = get_post( $post_id );
     680        $item_id = wp_update_nav_menu_item( $menu_id, 0, array(
     681            'menu-item-type' => 'post_type',
     682            'menu-item-object' => 'poem',
     683            'menu-item-object-id' => $post_id,
     684            'menu-item-title' => $post->post_title,
     685            'menu-item-status' => 'publish',
     686            'menu-item-position' => 1,
     687        ) );
     688        $setting_id = "nav_menu_item[$item_id]";
     689
     690        do_action( 'customize_register', $this->wp_customize );
     691        $setting = $this->wp_customize->get_setting( $setting_id );
     692        $this->assertNotEmpty( $setting );
     693        $value = $setting->value();
     694        $this->assertFalse( $value['_invalid'] );
     695        $value_object = $setting->value_as_wp_post_nav_menu_item();
     696        $this->assertFalse( $value_object->_invalid );
     697
     698        $setting = new WP_Customize_Nav_Menu_Item_Setting( $this->wp_customize, $setting_id );
     699        $value = $setting->value();
     700        $this->assertFalse( $value['_invalid'] );
     701        $value_object = $setting->value_as_wp_post_nav_menu_item();
     702        $this->assertFalse( $value_object->_invalid );
     703
     704        _unregister_post_type( 'poem' );
     705        $setting = new WP_Customize_Nav_Menu_Item_Setting( $this->wp_customize, $setting_id );
     706        $value = $setting->value();
     707        $this->assertTrue( $value['_invalid'] );
     708        $value_object = $setting->value_as_wp_post_nav_menu_item();
     709        $this->assertTrue( $value_object->_invalid );
     710    }
     711
    667712}
Note: See TracChangeset for help on using the changeset viewer.