Make WordPress Core

Ticket #33665: 33665.diff

File 33665.diff, 3.3 KB (added by kucrut, 10 years ago)

Implement indicators for invalid menu items

  • src/wp-admin/js/customize-nav-menus.js

    diff --git src/wp-admin/js/customize-nav-menus.js src/wp-admin/js/customize-nav-menus.js
    index f5296b6..e7d5352 100644
     
    12461246                                        return;
    12471247                                }
    12481248
    1249                                 var titleEl = control.container.find( '.menu-item-title' );
     1249                                var titleEl = control.container.find( '.menu-item-title' ),
     1250                                    titleText = item.title || api.Menus.data.l10n.untitled;
     1251
     1252                                if ( item._invalid ) {
     1253                                        titleText = api.Menus.data.l10n.invalidTitleTpl.replace( '%s', titleText );
     1254                                }
    12501255
    12511256                                // Don't update to an empty title.
    12521257                                if ( item.title ) {
    12531258                                        titleEl
    1254                                                 .text( item.title )
     1259                                                .text( titleText )
    12551260                                                .removeClass( 'no-title' );
    12561261                                } else {
    12571262                                        titleEl
    1258                                                 .text( api.Menus.data.l10n.untitled )
     1263                                                .text( titleText )
    12591264                                                .addClass( 'no-title' );
    12601265                                }
    12611266                        } );
     
    12991304                                'menu-item-edit-inactive'
    13001305                        ];
    13011306
    1302                         if ( settingValue.invalid ) {
    1303                                 containerClasses.push( 'invalid' );
    1304                                 control.params.title = api.Menus.data.invalidTitleTpl.replace( '%s', control.params.title );
     1307                        if ( settingValue._invalid ) {
     1308                                containerClasses.push( 'menu-item-invalid' );
     1309                                control.params.title = api.Menus.data.l10n.invalidTitleTpl.replace( '%s', control.params.title );
    13051310                        } else if ( 'draft' === settingValue.status ) {
    13061311                                containerClasses.push( 'pending' );
    13071312                                control.params.title = api.Menus.data.pendingTitleTpl.replace( '%s', control.params.title );
  • src/wp-includes/class-wp-customize-nav-menus.php

    diff --git src/wp-includes/class-wp-customize-nav-menus.php src/wp-includes/class-wp-customize-nav-menus.php
    index 2b667ce..0866be4 100644
    final class WP_Customize_Nav_Menus { 
    537537
    538538                                $value = (array) $item;
    539539                                $value['nav_menu_term_id'] = $menu_id;
     540
     541                                if ( ! isset( $value['_invalid'] ) ) {
     542                                        $value['_invalid'] = false;
     543                                }
     544
    540545                                $this->manager->add_setting( new WP_Customize_Nav_Menu_Item_Setting( $this->manager, $menu_item_setting_id, array(
    541546                                        'value' => $value,
    542547                                ) ) );
  • 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 98f37f9..928bf30 100644
    class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting { 
    690690                'status'           => 'publish',
    691691                'original_title'   => '',
    692692                'nav_menu_term_id' => 0, // This will be supplied as the $menu_id arg for wp_update_nav_menu_item().
    693                 // @todo also expose invalid?
     693                '_invalid'         => false,
    694694        );
    695695
    696696        /**
    class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting { 
    10391039                $should_remove = (
    10401040                        false === $this_item
    10411041                        ||
     1042                        true === $this_item['_invalid']
     1043                        ||
    10421044                        (
    10431045                                $this->original_nav_menu_term_id === $menu->term_id
    10441046                                &&
    class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting { 
    12101212                        'status'           => 'publish',
    12111213                        'original_title'   => '',
    12121214                        'nav_menu_term_id' => 0,
     1215                        '_invalid'         => false,
    12131216                );
    12141217                $menu_item_value = array_merge( $default, $menu_item_value );
    12151218                $menu_item_value = wp_array_slice_assoc( $menu_item_value, array_keys( $default ) );