Make WordPress Core

Ticket #32688: 32688.7.diff

File 32688.7.diff, 13.7 KB (added by westonruter, 10 years ago)

Additional changes: https://github.com/xwp/wordpress-develop/compare/3443f08...8ade858

  • tests/qunit/fixtures/customize-menus.js

    diff --git tests/qunit/fixtures/customize-menus.js tests/qunit/fixtures/customize-menus.js
    index b2d85e4..60b5ba1 100755
     
     1
    12window._wpCustomizeNavMenusSettings = {
    23        'nonce': 'yo',
    34        'phpIntMax': '2147483647',
    45        'menuItemTransport': 'postMessage',
    56        'allMenus': [{
    67                'term_id': '2',
    7                 'name': 'Awesome menu',
    8                 'slug': 'awesome-menu',
     8                'name': 'Social Menu',
     9                'slug': 'social-menu',
    910                'term_group': '0',
    1011                'term_taxonomy_id': '2',
    1112                'taxonomy': 'nav_menu',
    window._wpCustomizeNavMenusSettings = { 
    1415                'count': '0'
    1516        }, {
    1617                'term_id': '3',
    17                 'name': 'Cool Menu',
    18                 'slug': 'cool-menu',
     18                'name': 'Primary Menu',
     19                'slug': 'primary-menu',
    1920                'term_group': '0',
    2021                'term_taxonomy_id': '3',
    2122                'taxonomy': 'nav_menu',
    window._wpCustomizeNavMenusSettings = { 
    4849                        'nav_menu_term_id': 0
    4950                }
    5051        },
    51         'itemTypes': {
    52                 'postTypes': {
    53                         'page': {
    54                                 'label': 'Page'
    55                         },
    56                         'post': {
    57                                 'label': 'Post'
    58                         }
     52        'itemTypes': [
     53                {
     54                        'title': 'Post',
     55                        'type': 'post_type',
     56                        'object': 'post'
     57                },
     58                {
     59                        'title': 'Page',
     60                        'type': 'post_type',
     61                        'object': 'page'
     62                },
     63                {
     64                        'title': 'Category',
     65                        'type': 'taxonomy',
     66                        'object': 'category'
     67                },
     68                {
     69                        'title': 'Tag',
     70                        'type': 'taxonomy',
     71                        'object': 'post_tag'
    5972                },
    60                 'taxonomies': {
    61                         'post_tag': {
    62                                 'label': 'Tag'
    63                         },
    64                         'post_format': {
    65                                 'label': 'Format'
    66                         },
    67                         'category': {
    68                                 'label': 'Category'
    69                         }
     73                {
     74                        'title': 'Format',
     75                        'type': 'taxonomy',
     76                        'object': 'post_format'
    7077                }
    71         },
     78        ],
    7279        'l10n': {
    7380                'custom_label': 'Custom Link',
    7481                'customizingMenus': 'Customizing ▸ Menus',
    window._wpCustomizeNavMenusSettings = { 
    97104                'untitled': '(no label)'
    98105        }
    99106};
    100 
    101107window._wpCustomizeSettings.panels.nav_menus = {
    102108        'id': 'nav_menus',
    103109        'description': '<p>This panel is used for managing navigation menus for content you have already published on your site. You can create menus and add items for existing content such as pages, posts, categories, tags, formats, or custom links.</p><p>Menus can be displayed in locations defined by your theme or in <a href="javascript:wp.customize.panel( "widgets" ).focus();">widget areas</a> by adding a &#8220;Custom Menu&#8221; widget.</p>',
    window._wpCustomizeSettings.panels.nav_menus = { 
    109115        'instanceNumber': 2
    110116};
    111117
     118// Nav Menu Locations
     119window._wpCustomizeSettings.sections.menu_locations = {
     120        'id': 'menu_locations',
     121        'description': '<p>Your theme contains 1 menu location. Select which menu you would like to use.<\/p><p>You can also place menus in widget areas with the Custom Menu widget.<\/p>',
     122        'priority': 5,
     123        'panel': 'nav_menus',
     124        'type': 'default',
     125        'title': 'Menu Locations',
     126        'content': '',
     127        'active': true,
     128        'instanceNumber': 13,
     129        'customizeAction': 'Customizing &#9656; Menus'
     130};
     131window._wpCustomizeSettings.settings['nav_menu_locations[social]'] = {
     132        'value': 2,
     133        'transport': 'postMessage',
     134        'dirty': false
     135};
     136window._wpCustomizeSettings.controls['nav_menu_locations[social]'] = {
     137        'settings': { 'default': 'nav_menu_locations[social]' },
     138        'type': 'nav_menu_location',
     139        'priority': 10,
     140        'active': true,
     141        'section': 'menu_locations',
     142        'content': '<li id="customize-control-nav_menu_locations-social" class="customize-control customize-control-nav_menu_location"> <label> <span class="customize-control-title">Social Links Menu</span> <select data-customize-setting-link="nav_menu_locations[social]"> <option value="0">&mdash; Select &mdash;</option><option value="59">Prim</option><option value="60" selected="selected">Social</option><option value="61">test11</option><option value="62">test222</option><option value="63">test333</option> </select> </label> </li>',
     143        'label': 'Social Links Menu',
     144        'description': '',
     145        'instanceNumber': 40,
     146        'locationId': 'social'
     147};
     148window._wpCustomizeSettings.settings['nav_menu_locations[primary]'] = {
     149        'value': 3,
     150        'transport': 'postMessage',
     151        'dirty': false
     152};
     153window._wpCustomizeSettings.controls['nav_menu_locations[primary]'] = {
     154        'active': true,
     155        'content': '<li id="customize-control-nav_menu_locations-primary" class="customize-control customize-control-nav_menu_location"> <label> <span class="customize-control-title">Primary Menu</span> <select data-customize-setting-link="nav_menu_locations[primary]"> <option value="0">&mdash; Select &mdash;</option><option value="59" selected="selected">Prim</option><option value="60">Social</option><option value="61">test11</option><option value="62">test222</option><option value="63">test333</option> </select> </label> </li>',
     156        'description': '',
     157        'instanceNumber': 39,
     158        'label': 'Primary Menu',
     159        'locationId': 'primary',
     160        'priority': 10,
     161        'section': 'menu_locations',
     162        'settings': {
     163                'default': 'nav_menu_locations[primary]'
     164        },
     165        'type': 'nav_menu_location'
     166};
     167
     168// Nav Menus
     169window._wpCustomizeSettings.sections['nav_menu[3]'] = {
     170        'id': 'nav_menu[3]',
     171        'description': '',
     172        'priority': 10,
     173        'panel': 'nav_menus',
     174        'type': 'nav_menu',
     175        'title': 'Primary Menu',
     176        'content': '',
     177        'active': true,
     178        'instanceNumber': 15,
     179        'customizeAction': 'Customizing &#9656; Menus',
     180        'menu_id': 3
     181};
     182window._wpCustomizeSettings.settings['nav_menu[3]'] = {
     183        'value': {
     184                'name': 'Primary menu',
     185                'description': '',
     186                'parent': 0,
     187                'auto_add': false
     188        },
     189        'transport': 'postMessage',
     190        'dirty': false
     191};
     192
     193window._wpCustomizeSettings.sections['nav_menu[2]'] = {
     194        'id': 'nav_menu[2]',
     195        'description': '',
     196        'priority': 10,
     197        'panel': 'nav_menus',
     198        'type': 'nav_menu',
     199        'title': 'Social menu',
     200        'content': '',
     201        'active': true,
     202        'instanceNumber': 14,
     203        'customizeAction': 'Customizing &#9656; Menus',
     204        'menu_id': 2
     205};
     206window._wpCustomizeSettings.settings['nav_menu[2]'] = {
     207        'value': {
     208                'name': 'Social menu',
     209                'description': '',
     210                'parent': 0,
     211                'auto_add': false
     212        },
     213        'transport': 'postMessage',
     214        'dirty': false
     215};
     216
     217// Menu items
     218window._wpCustomizeSettings.settings['nav_menu_item[2000]'] = {
     219        'dirty': false,
     220        'transport': 'postMessage',
     221        'value': {
     222                'attr_title': '',
     223                'classes': [
     224                        ''
     225                ],
     226                'description': '',
     227                'menu_item_parent': 0,
     228                'nav_menu_term_id': 3,
     229                'object': 'page',
     230                'object_id': 2,
     231                'original_title': 'Sample Page',
     232                'position': 1,
     233                'status': 'publish',
     234                'target': '',
     235                'title': 'Sample Page',
     236                'type': 'post_type',
     237                'type_label': 'Page',
     238                'url': 'http://src.wordpress-develop.dev/sample-page/',
     239                'xfn': ''
     240        }
     241};
     242window._wpCustomizeSettings.controls['nav_menu_item[2000]'] = {
     243        'active': true,
     244        'attr_title': '',
     245        'classes': '',
     246        'content': '<li id="customize-control-nav_menu_item-2000" class="customize-control customize-control-nav_menu_item"> </li>',
     247        'depth': 0,
     248        'description': '',
     249        'el_classes': 'menu-item menu-item-depth-0 menu-item-page menu-item-edit-inactive',
     250        'instanceNumber': 42,
     251        'item_type': 'post_type',
     252        'item_type_label': 'Page',
     253        'label': 'Sample Page',
     254        'menu_item_id': 2000,
     255        'original_title': 'Sample Page',
     256        'parent': 0,
     257        'priority': 1,
     258        'section': 'nav_menu[3]',
     259        'settings': {
     260                'default': 'nav_menu_item[2000]'
     261        },
     262        'target': '',
     263        'title': 'Sample Page',
     264        'type': 'nav_menu_item',
     265        'url': 'http://src.wordpress-develop.dev/sample-page/',
     266        'xfn': ''
     267};
     268
     269window._wpCustomizeSettings.settings['nav_menu_item[2001]'] = {
     270        'dirty': false,
     271        'transport': 'postMessage',
     272        'value': {
     273                'attr_title': '',
     274                'classes': [
     275                        ''
     276                ],
     277                'description': '',
     278                'menu_item_parent': 0,
     279                'nav_menu_term_id': 59,
     280                'object': 'custom',
     281                'object_id': 2001,
     282                'original_title': '',
     283                'position': 2,
     284                'status': 'publish',
     285                'target': '',
     286                'title': 'Example',
     287                'type': 'custom',
     288                'type_label': 'Custom Link',
     289                'url': 'http://example.com/',
     290                'xfn': ''
     291        }
     292};
     293
     294window._wpCustomizeSettings.controls['nav_menu_item[2001]'] = {
     295        'active': true,
     296        'attr_title': '',
     297        'classes': '',
     298        'content': '<li id="customize-control-nav_menu_item-2001" class="customize-control customize-control-nav_menu_item"> </li>',
     299        'depth': 0,
     300        'description': '',
     301        'el_classes': 'menu-item menu-item-depth-0 menu-item-custom menu-item-edit-inactive',
     302        'instanceNumber': 46,
     303        'item_type': 'custom',
     304        'item_type_label': 'Custom Link',
     305        'label': 'Example',
     306        'menu_item_id': 2001,
     307        'original_title': '',
     308        'parent': 0,
     309        'priority': 2,
     310        'section': 'nav_menu[3]',
     311        'settings': {
     312                'default': 'nav_menu_item[2001]'
     313        },
     314        'target': '',
     315        'title': 'Example',
     316        'type': 'nav_menu_item',
     317        'url': 'http://example.com/',
     318        'xfn': ''
     319};
     320
     321window._wpCustomizeSettings.settings['nav_menu_item[2002]'] = {
     322        'dirty': false,
     323        'transport': 'postMessage',
     324        'value': {
     325                'attr_title': '',
     326                'classes': '',
     327                'description': '',
     328                'menu_item_parent': 2001,
     329                'nav_menu_term_id': 3,
     330                'object': '',
     331                'object_id': 0,
     332                'original_title': 'Sub-Example',
     333                'position': 3,
     334                'status': 'publish',
     335                'target': '',
     336                'title': 'Example',
     337                'type': 'custom',
     338                'type_label': 'Custom Link',
     339                'url': 'http://sub.example.com/',
     340                'xfn': ''
     341        }
     342};
     343window._wpCustomizeSettings.controls['nav_menu_item[2002]'] = {
     344        'active': true,
     345        'attr_title': '',
     346        'classes': '',
     347        'content': '<li id="customize-control-nav_menu_item-2002" class="customize-control customize-control-nav_menu_item"> </li>',
     348        'depth': 0,
     349        'description': '',
     350        'el_classes': 'menu-item menu-item-depth-0 menu-item-custom menu-item-edit-inactive',
     351        'instanceNumber': 46,
     352        'item_type': 'custom',
     353        'item_type_label': 'Custom Link',
     354        'label': 'Sub-Example',
     355        'menu_item_id': 2001,
     356        'original_title': '',
     357        'parent': 2001,
     358        'priority': 3,
     359        'section': 'nav_menu[3]',
     360        'settings': {
     361                'default': 'nav_menu_item[2002]'
     362        },
     363        'target': '',
     364        'title': 'Sub-Example',
     365        'type': 'nav_menu_item',
     366        'url': 'http://sub.example.com/',
     367        'xfn': ''
     368};
     369
     370// Meta controls
     371window._wpCustomizeSettings.sections.add_menu = {
     372        'id': 'add_menu',
     373        'description': '',
     374        'priority': 999,
     375        'panel': 'nav_menus',
     376        'type': 'new_menu',
     377        'title': 'Add a Menu',
     378        'content': '<li id="accordion-section-add_menu" class="accordion-section-new-menu">\n\t\t\t<button type="button" class="button-secondary add-new-menu-item add-menu-toggle" aria-expanded="false">\n\t\t\t\tAdd a Menu\t\t\t<\/button>\n\t\t\t<ul class="new-menu-section-content"><\/ul>\n\t\t<\/li>',
     379        'active': true,
     380        'instanceNumber': 16,
     381        'customizeAction': 'Customizing &#9656; Menus'
     382};
     383window._wpCustomizeSettings.controls.new_menu_name = {
     384        'settings': { 'default': 'new_menu_name' },
     385        'type': 'text',
     386        'priority': 10,
     387        'active': true,
     388        'section': 'add_menu',
     389        'content': '<li id="customize-control-new_menu_name" class="customize-control customize-control-text"> <label> <input type="text" class="menu-name-field" placeholder="New menu name"  value="" data-customize-setting-link="new_menu_name" /> </label> </li>',
     390        'label': '',
     391        'description': '',
     392        'instanceNumber': 46
     393};
     394window._wpCustomizeSettings.settings.new_menu_name = {
     395        'value': '',
     396        'transport': 'postMessage',
     397        'dirty': false
     398};
     399
     400// From nav-menu.js
    112401window.wpNavMenu = {
    113402        'options': {
    114403                'menuItemDepthPerLevel': 30,
    window.wpNavMenu = { 
    120409        'isRTL': false,
    121410        'negateIfRTL': 1
    122411};
    123 
  • tests/qunit/wp-admin/js/customize-nav-menus.js

    diff --git tests/qunit/wp-admin/js/customize-nav-menus.js tests/qunit/wp-admin/js/customize-nav-menus.js
    index ba50106..a2fab06 100755
     
    11/* global wp */
    2 jQuery( function( ) {
     2jQuery( function( $ ) {
    33
    44        var api = wp.customize,
    5         settings = window._wpCustomizeNavMenusSettings,
    6         navMenu = window.wpNavMenu;
    7        
    8         module( 'Customize Nav Menus', {
    9                 setup: function() {
    10             window._wpCustomizeNavMenusSettings = settings;
    11             window.wpNavMenu = navMenu;
    12                 },
    13                 teardown: function() {
    14                         // restore defaults
    15             window._wpCustomizeNavMenusSettings = settings;
    16             window.wpNavMenu = navMenu;
    17                 }
    18 
    19         });
     5                primaryMenuId = 3,
     6                socialMenuId = 2;
    207
     8        module( 'Customize Nav Menus' );
    219
    2210        /**
    2311         * Generate 20 ids and verify they are all unique.
    jQuery( function( ) { 
    2614                var testIterations = 20,
    2715                        ids = [ api.Menus.generatePlaceholderAutoIncrementId() ];
    2816
    29                 while( testIterations-- > 0 ) {
     17                while ( testIterations ) {
    3018                        var placeholderID = api.Menus.generatePlaceholderAutoIncrementId();
    3119
    3220                        ok( -1 === ids.indexOf( placeholderID ) );
    3321                        ids.push( placeholderID );
     22                        testIterations -= 1;
    3423                }
    3524
    3625        } );
    3726
    3827        test( 'it should parse _wpCustomizeMenusSettings.defaults into itself', function() {
    3928                deepEqual( window._wpCustomizeNavMenusSettings, api.Menus.data );
    40         });
     29        } );
    4130
     31        test( 'empty menus should have no Menu Item Controls', function() {
     32                ok( 0 === wp.customize.Menus.getMenuControl( socialMenuId ).getMenuItemControls().length, 'empty menus' );
     33        } );
     34
     35        test( 'populated menus should have no Menu Item Controls', function() {
     36                ok( 0 !== wp.customize.Menus.getMenuControl( primaryMenuId ).getMenuItemControls().length, 'non-empty menus' );
     37        } );
    4238
    43 });
     39        // @todo Add tests for api.Menus.AvailableMenuItemsPanelView (and api.Menus.AvailableItemCollection, api.Menus.AvailableItemCollection, api.Menus.AvailableItemModel)
     40
     41        // @todo Add tests for api.Menus.MenusPanel
     42        // @todo Add tests for api.Menus.MenuSection
     43        // @todo Add tests for api.Menus.NewMenuSection
     44        // @todo Add tests for api.Menus.MenuLocationControl
     45        // @todo Add tests for api.Menus.MenuItemControl
     46        // @todo Add tests for api.Menus.MenuNameControl
     47        // @todo Add tests for api.Menus.MenuAutoAddControl
     48        // @todo Add tests for api.Menus.MenuControl
     49        // @todo Add tests for api.Menus.NewMenuControl
     50        // @todo Add tests for api.Menus.applySavedData
     51        // @todo Add tests for api.Menus.focusMenuItemControl
     52        // @todo Add tests for api.Menus.getMenuControl
     53        // @todo Add tests for api.Menus.getMenuItemControl
     54
     55} );