Changeset 33528
- Timestamp:
- 08/03/2015 07:27:27 PM (10 years ago)
- Location:
- trunk/tests/qunit
- Files:
-
- 5 edited
-
fixtures/customize-menus.js (modified) (7 diffs)
-
fixtures/customize-settings.js (modified) (2 diffs)
-
index.html (modified) (2 diffs)
-
vendor/sinon-qunit.js (modified) (1 diff)
-
wp-admin/js/customize-nav-menus.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/qunit/fixtures/customize-menus.js
r33451 r33528 1 1 2 window._wpCustomizeNavMenusSettings = { 2 3 'nonce': 'yo', … … 5 6 'allMenus': [{ 6 7 'term_id': '2', 7 'name': ' Awesome menu',8 'slug': ' awesome-menu',8 'name': 'Social Menu', 9 'slug': 'social-menu', 9 10 'term_group': '0', 10 11 'term_taxonomy_id': '2', … … 15 16 }, { 16 17 'term_id': '3', 17 'name': ' CoolMenu',18 'slug': ' cool-menu',18 'name': 'Primary Menu', 19 'slug': 'primary-menu', 19 20 'term_group': '0', 20 21 'term_taxonomy_id': '3', … … 49 50 } 50 51 }, 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' 59 57 }, 60 'taxonomies': { 61 'post_tag': { 62 'label': 'Tag' 63 }, 64 'post_format': { 65 'label': 'Format' 66 }, 67 'category': { 68 'label': 'Category' 69 } 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' 72 }, 73 { 74 'title': 'Format', 75 'type': 'taxonomy', 76 'object': 'post_format' 70 77 } 71 },78 ], 72 79 'l10n': { 73 80 'custom_label': 'Custom Link', … … 98 105 } 99 106 }; 100 101 107 window._wpCustomizeSettings.panels.nav_menus = { 102 108 'id': 'nav_menus', … … 110 116 }; 111 117 118 // Nav Menu Locations 119 window._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 ▸ Menus' 130 }; 131 window._wpCustomizeSettings.settings['nav_menu_locations[social]'] = { 132 'value': 2, 133 'transport': 'postMessage', 134 'dirty': false 135 }; 136 window._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">— Select —</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 }; 148 window._wpCustomizeSettings.settings['nav_menu_locations[primary]'] = { 149 'value': 3, 150 'transport': 'postMessage', 151 'dirty': false 152 }; 153 window._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">— Select —</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 169 window._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 ▸ Menus', 180 'menu_id': 3 181 }; 182 window._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 193 window._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 ▸ Menus', 204 'menu_id': 2 205 }; 206 window._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 218 window._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 }; 242 window._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 269 window._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': 3, 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 window._wpCustomizeSettings.controls['nav_menu_item[2001]'] = { 294 'active': true, 295 'attr_title': '', 296 'classes': '', 297 'content': '<li id="customize-control-nav_menu_item-2001" class="customize-control customize-control-nav_menu_item"> </li>', 298 'depth': 0, 299 'description': '', 300 'el_classes': 'menu-item menu-item-depth-0 menu-item-custom menu-item-edit-inactive', 301 'instanceNumber': 46, 302 'item_type': 'custom', 303 'item_type_label': 'Custom Link', 304 'label': 'Example', 305 'menu_item_id': 2001, 306 'original_title': '', 307 'parent': 0, 308 'priority': 2, 309 'section': 'nav_menu[3]', 310 'settings': { 311 'default': 'nav_menu_item[2001]' 312 }, 313 'target': '', 314 'title': 'Example', 315 'type': 'nav_menu_item', 316 'url': 'http://example.com/', 317 'xfn': '' 318 }; 319 320 window._wpCustomizeSettings.settings['nav_menu_item[2002]'] = { 321 'dirty': false, 322 'transport': 'postMessage', 323 'value': { 324 'attr_title': '', 325 'classes': '', 326 'description': '', 327 'menu_item_parent': 2001, 328 'nav_menu_term_id': 3, 329 'object': '', 330 'object_id': 0, 331 'original_title': 'Sub-Example', 332 'position': 3, 333 'status': 'publish', 334 'target': '', 335 'title': 'Example', 336 'type': 'custom', 337 'type_label': 'Custom Link', 338 'url': 'http://sub.example.com/', 339 'xfn': '' 340 } 341 }; 342 window._wpCustomizeSettings.controls['nav_menu_item[2002]'] = { 343 'active': true, 344 'attr_title': '', 345 'classes': '', 346 'content': '<li id="customize-control-nav_menu_item-2002" class="customize-control customize-control-nav_menu_item"> </li>', 347 'depth': 0, 348 'description': '', 349 'el_classes': 'menu-item menu-item-depth-0 menu-item-custom menu-item-edit-inactive', 350 'instanceNumber': 46, 351 'item_type': 'custom', 352 'item_type_label': 'Custom Link', 353 'label': 'Sub-Example', 354 'menu_item_id': 2001, 355 'original_title': '', 356 'parent': 2001, 357 'priority': 3, 358 'section': 'nav_menu[3]', 359 'settings': { 360 'default': 'nav_menu_item[2002]' 361 }, 362 'target': '', 363 'title': 'Sub-Example', 364 'type': 'nav_menu_item', 365 'url': 'http://sub.example.com/', 366 'xfn': '' 367 }; 368 369 // Meta controls 370 window._wpCustomizeSettings.sections.add_menu = { 371 'id': 'add_menu', 372 'description': '', 373 'priority': 999, 374 'panel': 'nav_menus', 375 'type': 'new_menu', 376 'title': 'Add a Menu', 377 '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>', 378 'active': true, 379 'instanceNumber': 16, 380 'customizeAction': 'Customizing ▸ Menus' 381 }; 382 window._wpCustomizeSettings.controls.new_menu_name = { 383 'settings': { 'default': 'new_menu_name' }, 384 'type': 'text', 385 'priority': 10, 386 'active': true, 387 'section': 'add_menu', 388 '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>', 389 'label': '', 390 'description': '', 391 'instanceNumber': 46 392 }; 393 window._wpCustomizeSettings.settings.new_menu_name = { 394 'value': '', 395 'transport': 'postMessage', 396 'dirty': false 397 }; 398 399 // From nav-menu.js 112 400 window.wpNavMenu = { 113 401 'options': { … … 121 409 'negateIfRTL': 1 122 410 }; 123 -
trunk/tests/qunit/fixtures/customize-settings.js
r33120 r33528 4 4 var customizerRootElement; 5 5 customizerRootElement = jQuery( '<div id="customize-theme-controls"><ul></ul></div>' ); 6 customizerRootElement.css( { position: 'absolute', left: -1000 } ); // remove from view6 customizerRootElement.css( { position: 'absolute', left: -10000, top: -10000 } ); // remove from view 7 7 jQuery( document.body ).append( customizerRootElement ); 8 8 … … 137 137 jQuery.ajaxSetup( { 138 138 beforeSend: function( e, data ) { 139 if ( data. data.indexOf( 'wp_customize' ) !== -1 ) {139 if ( data.url.indexOf( '//example.org' ) !== -1 ) { 140 140 return false; 141 141 } -
trunk/tests/qunit/index.html
r33451 r33528 35 35 <script src="../../src/wp-includes/js/shortcode.js"></script> 36 36 <script src="../../src/wp-admin/js/customize-controls.js"></script> 37 38 <script type='text/javascript' src='../../src/wp-includes/js/jquery/ui/core.js'></script> 39 <script type='text/javascript' src='../../src/wp-includes/js/jquery/ui/widget.js'></script> 40 <script type='text/javascript' src='../../src/wp-includes/js/jquery/ui/mouse.js'></script> 41 <script type='text/javascript' src='../../src/wp-includes/js/jquery/ui/sortable.js'></script> 42 <script type='text/javascript' src='../../src/wp-includes/js/jquery/ui/draggable.js'></script> 43 <script type='text/javascript' src='../../src/wp-includes/js/jquery/ui/droppable.js'></script> 44 45 <script src="../../src/wp-admin/js/nav-menu.js"></script> 37 46 <script src="../../src/wp-admin/js/customize-nav-menus.js"></script> 38 47 <script src="../../src/wp-admin/js/word-count.js"></script> … … 116 125 </script> 117 126 118 <!-- TinyMCE --> 127 <!-- Templates for Customizer Menus --> 128 <script type="text/html" id="tmpl-customize-control-nav_menu-content"> 129 <button type="button" class="button-secondary add-new-menu-item" aria-label="Add or remove menu items" aria-expanded="false" aria-controls="available-menu-items"> 130 Add Items </button> 131 <button type="button" class="not-a-button reorder-toggle" aria-label="Reorder menu items" aria-describedby="reorder-items-desc-{{ data.menu_id }}"> 132 <span class="reorder">Reorder</span> 133 <span class="reorder-done">Done</span> 134 </button> 135 <p class="screen-reader-text" id="reorder-items-desc-{{ data.menu_id }}">When in reorder mode, additional controls to reorder menu items will be available in the items list above.</p> 136 <span class="add-menu-item-loading spinner"></span> 137 <span class="menu-delete-item"> 138 <button type="button" class="not-a-button menu-delete"> 139 Delete menu <span class="screen-reader-text">{{ data.menu_name }}</span> 140 </button> 141 </span> 142 <ul class="menu-settings"> 143 <li class="customize-control"> 144 <span class="customize-control-title">Menu locations</span> 145 </li> 146 147 <li class="customize-control customize-control-checkbox assigned-menu-location"> 148 <label> 149 <input type="checkbox" data-menu-id="{{ data.menu_id }}" data-location-id="primary" class="menu-location" /> Primary Menu <span class="theme-location-set">(Current: <span class="current-menu-location-name-primary"></span>)</span> 150 </label> 151 </li> 152 <li class="customize-control customize-control-checkbox assigned-menu-location"> 153 <label> 154 <input type="checkbox" data-menu-id="{{ data.menu_id }}" data-location-id="social" class="menu-location" /> Social Links Menu <span class="theme-location-set">(Current: <span class="current-menu-location-name-social"></span>)</span> 155 </label> 156 </li> 157 158 </ul> 159 </script> 160 <script type="text/html" id="tmpl-customize-control-nav_menu_name-content"> 161 <label> 162 <# if ( data.label ) { #> 163 <span class="customize-control-title screen-reader-text">{{ data.label }}</span> 164 <# } #> 165 <input type="text" class="menu-name-field live-update-section-title" /> 166 </label> 167 </script> 168 <script type="text/html" id="tmpl-customize-control-nav_menu_auto_add-content"> 169 <span class="customize-control-title">Menu options</span> 170 <label> 171 <input type="checkbox" class="auto_add" /> 172 Automatically add new top-level pages to this menu </label> 173 </script> 174 <script type="text/html" id="tmpl-customize-control-nav_menu_item-content"> 175 <div class="menu-item-bar"> 176 <div class="menu-item-handle"> 177 <span class="item-type" aria-hidden="true">{{ data.item_type_label }}</span> 178 <span class="item-title" aria-hidden="true"> 179 <span class="spinner"></span> 180 <span class="menu-item-title<# if ( ! data.title ) { #> no-title<# } #>">{{ data.title || wp.customize.Menus.data.l10n.untitled }}</span> 181 </span> 182 <span class="item-controls"> 183 <button type="button" class="not-a-button item-edit" aria-expanded="false"><span class="screen-reader-text">Edit menu item: {{ data.title || wp.customize.Menus.data.l10n.untitled }} ({{ data.item_type_label }})</span><span class="toggle-indicator" aria-hidden="true"></span></button> 184 <button type="button" class="not-a-button item-delete submitdelete deletion"><span class="screen-reader-text">Remove Menu Item: {{ data.title || wp.customize.Menus.data.l10n.untitled }} ({{ data.item_type_label }})</span></button> 185 </span> 186 </div> 187 </div> 188 189 <div class="menu-item-settings" id="menu-item-settings-{{ data.menu_item_id }}"> 190 <# if ( 'custom' === data.item_type ) { #> 191 <p class="field-url description description-thin"> 192 <label for="edit-menu-item-url-{{ data.menu_item_id }}"> 193 URL<br /> 194 <input class="widefat code edit-menu-item-url" type="text" id="edit-menu-item-url-{{ data.menu_item_id }}" name="menu-item-url" /> 195 </label> 196 </p> 197 <# } #> 198 <p class="description description-thin"> 199 <label for="edit-menu-item-title-{{ data.menu_item_id }}"> 200 Navigation Label<br /> 201 <input type="text" id="edit-menu-item-title-{{ data.menu_item_id }}" class="widefat edit-menu-item-title" name="menu-item-title" /> 202 </label> 203 </p> 204 <p class="field-link-target description description-thin"> 205 <label for="edit-menu-item-target-{{ data.menu_item_id }}"> 206 <input type="checkbox" id="edit-menu-item-target-{{ data.menu_item_id }}" class="edit-menu-item-target" value="_blank" name="menu-item-target" /> 207 Open link in a new tab </label> 208 </p> 209 <p class="field-attr-title description description-thin"> 210 <label for="edit-menu-item-attr-title-{{ data.menu_item_id }}"> 211 Title Attribute<br /> 212 <input type="text" id="edit-menu-item-attr-title-{{ data.menu_item_id }}" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title" /> 213 </label> 214 </p> 215 <p class="field-css-classes description description-thin"> 216 <label for="edit-menu-item-classes-{{ data.menu_item_id }}"> 217 CSS Classes<br /> 218 <input type="text" id="edit-menu-item-classes-{{ data.menu_item_id }}" class="widefat code edit-menu-item-classes" name="menu-item-classes" /> 219 </label> 220 </p> 221 <p class="field-xfn description description-thin"> 222 <label for="edit-menu-item-xfn-{{ data.menu_item_id }}"> 223 Link Relationship (XFN)<br /> 224 <input type="text" id="edit-menu-item-xfn-{{ data.menu_item_id }}" class="widefat code edit-menu-item-xfn" name="menu-item-xfn" /> 225 </label> 226 </p> 227 <p class="field-description description description-thin"> 228 <label for="edit-menu-item-description-{{ data.menu_item_id }}"> 229 Description<br /> 230 <textarea id="edit-menu-item-description-{{ data.menu_item_id }}" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description">{{ data.description }}</textarea> 231 <span class="description">The description will be displayed in the menu if the current theme supports it.</span> 232 </label> 233 </p> 234 235 <div class="menu-item-actions description-thin submitbox"> 236 <# if ( ( 'post_type' === data.item_type || 'taxonomy' === data.item_type ) && '' !== data.original_title ) { #> 237 <p class="link-to-original"> 238 Original: <a class="original-link" href="{{ data.url }}">{{ data.original_title }}</a> </p> 239 <# } #> 240 241 <button type="button" class="not-a-button item-delete submitdelete deletion">Remove</button> 242 <span class="spinner"></span> 243 </div> 244 <input type="hidden" name="menu-item-db-id[{{ data.menu_item_id }}]" class="menu-item-data-db-id" value="{{ data.menu_item_id }}" /> 245 <input type="hidden" name="menu-item-parent-id[{{ data.menu_item_id }}]" class="menu-item-data-parent-id" value="{{ data.parent }}" /> 246 </div><!-- .menu-item-settings--> 247 <ul class="menu-item-transport"></ul> 248 </script> 249 250 <script type="text/html" id="tmpl-available-menu-item"> 251 <li id="menu-item-tpl-{{ data.id }}" class="menu-item-tpl" data-menu-item-id="{{ data.id }}"> 252 <div class="menu-item-bar"> 253 <div class="menu-item-handle"> 254 <span class="item-type" aria-hidden="true">{{ data.type_label }}</span> 255 <span class="item-title" aria-hidden="true"> 256 <span class="menu-item-title<# if ( ! data.title ) { #> no-title<# } #>">{{ data.title || wp.customize.Menus.data.l10n.untitled }}</span> 257 </span> 258 <button type="button" class="not-a-button item-add"> 259 <span class="screen-reader-text">Add to menu: {{ data.title || wp.customize.Menus.data.l10n.untitled }} ({{ data.type_label }})</span> 260 </button> 261 </div> 262 </div> 263 </li> 264 </script> 265 266 <script type="text/html" id="tmpl-menu-item-reorder-nav"> 267 <div class="menu-item-reorder-nav"> 268 <button type="button" class="menus-move-up">Move up</button><button type="button" class="menus-move-down">Move down</button><button type="button" class="menus-move-left">Move one level up</button><button type="button" class="menus-move-right">Move one level down</button> </div> 269 </script> 270 <div hidden> 271 <div id="available-menu-items" class="accordion-container"> 272 <div class="customize-section-title"> 273 <button type="button" class="customize-section-back" tabindex="-1"> 274 <span class="screen-reader-text">Back</span> 275 </button> 276 <h3> 277 <span class="customize-action"> 278 Customizing ▸ Menus </span> 279 Add Menu Items </h3> 280 </div> 281 <div id="available-menu-items-search" class="accordion-section cannot-expand"> 282 <div class="accordion-section-title"> 283 <label class="screen-reader-text" for="menu-items-search">Search Menu Items</label> 284 <input type="text" id="menu-items-search" placeholder="Search menu items…" aria-describedby="menu-items-search-desc" /> 285 <p class="screen-reader-text" id="menu-items-search-desc">The search results will be updated as you type.</p> 286 <span class="spinner"></span> 287 <span class="clear-results"><span class="screen-reader-text">Clear Results</span></span> 288 </div> 289 <ul class="accordion-section-content" data-type="search"></ul> 290 </div> 291 <div id="new-custom-menu-item" class="accordion-section"> 292 <h4 class="accordion-section-title" role="presentation"> 293 Custom Links <button type="button" class="not-a-button" aria-expanded="false"> 294 <span class="screen-reader-text">Toggle section: Custom Links</span> 295 <span class="toggle-indicator" aria-hidden="true"></span> 296 </button> 297 </h4> 298 <div class="accordion-section-content"> 299 <input type="hidden" value="custom" id="custom-menu-item-type" name="menu-item[-1][menu-item-type]" /> 300 <p id="menu-item-url-wrap"> 301 <label class="howto" for="custom-menu-item-url"> 302 <span>URL</span> 303 <input id="custom-menu-item-url" name="menu-item[-1][menu-item-url]" type="text" class="code menu-item-textbox" value="http://"> 304 </label> 305 </p> 306 <p id="menu-item-name-wrap"> 307 <label class="howto" for="custom-menu-item-name"> 308 <span>Link Text</span> 309 <input id="custom-menu-item-name" name="menu-item[-1][menu-item-title]" type="text" class="regular-text menu-item-textbox"> 310 </label> 311 </p> 312 <p class="button-controls"> 313 <span class="add-to-menu"> 314 <input type="submit" class="button-secondary submit-add-to-menu right" value="Add to Menu" name="add-custom-menu-item" id="custom-menu-item-submit"> 315 <span class="spinner"></span> 316 </span> 317 </p> 318 </div> 319 </div> 320 <div id="available-menu-items-post_type-post" class="accordion-section"> 321 <h4 class="accordion-section-title" role="presentation"> 322 Post <span class="spinner"></span> 323 <span class="no-items">No items</span> 324 <button type="button" class="not-a-button" aria-expanded="false"> 325 <span class="screen-reader-text">Toggle section: Post</span> 326 <span class="toggle-indicator" aria-hidden="true"></span> 327 </button> 328 </h4> 329 <ul class="accordion-section-content" data-type="post_type" data-object="post"></ul> 330 </div> 331 <div id="available-menu-items-post_type-page" class="accordion-section"> 332 <h4 class="accordion-section-title" role="presentation"> 333 Page <span class="spinner"></span> 334 <span class="no-items">No items</span> 335 <button type="button" class="not-a-button" aria-expanded="false"> 336 <span class="screen-reader-text">Toggle section: Page</span> 337 <span class="toggle-indicator" aria-hidden="true"></span> 338 </button> 339 </h4> 340 <ul class="accordion-section-content" data-type="post_type" data-object="page"></ul> 341 </div> 342 <div id="available-menu-items-taxonomy-category" class="accordion-section"> 343 <h4 class="accordion-section-title" role="presentation"> 344 Category <span class="spinner"></span> 345 <span class="no-items">No items</span> 346 <button type="button" class="not-a-button" aria-expanded="false"> 347 <span class="screen-reader-text">Toggle section: Category</span> 348 <span class="toggle-indicator" aria-hidden="true"></span> 349 </button> 350 </h4> 351 <ul class="accordion-section-content" data-type="taxonomy" data-object="category"></ul> 352 </div> 353 <div id="available-menu-items-taxonomy-post_tag" class="accordion-section"> 354 <h4 class="accordion-section-title" role="presentation"> 355 Tag <span class="spinner"></span> 356 <span class="no-items">No items</span> 357 <button type="button" class="not-a-button" aria-expanded="false"> 358 <span class="screen-reader-text">Toggle section: Tag</span> 359 <span class="toggle-indicator" aria-hidden="true"></span> 360 </button> 361 </h4> 362 <ul class="accordion-section-content" data-type="taxonomy" data-object="post_tag"></ul> 363 </div> 364 <div id="available-menu-items-taxonomy-post_format" class="accordion-section"> 365 <h4 class="accordion-section-title" role="presentation"> 366 Format <span class="spinner"></span> 367 <span class="no-items">No items</span> 368 <button type="button" class="not-a-button" aria-expanded="false"> 369 <span class="screen-reader-text">Toggle section: Format</span> 370 <span class="toggle-indicator" aria-hidden="true"></span> 371 </button> 372 </h4> 373 <ul class="accordion-section-content" data-type="taxonomy" data-object="post_format"></ul> 374 </div> 375 </div><!-- #available-menu-items --> 376 </div><!-- end nav menu templates --> 377 119 378 120 379 <script src="../../src/wp-includes/js/tinymce/tinymce.js"></script> -
trunk/tests/qunit/vendor/sinon-qunit.js
r27847 r33528 58 58 } 59 59 60 60 61 return qTest(testName, expected, sinon.test(callback), async); 61 62 }; -
trunk/tests/qunit/wp-admin/js/customize-nav-menus.js
r33451 r33528 1 1 /* global wp */ 2 jQuery( function( ){2 jQuery( window ).load( function (){ 3 3 4 4 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 } 5 primaryMenuId = 3, 6 socialMenuId = 2; 18 7 19 }); 20 8 module( 'Customize Nav Menus' ); 21 9 22 10 /** … … 27 15 ids = [ api.Menus.generatePlaceholderAutoIncrementId() ]; 28 16 29 while ( testIterations-- > 0) {17 while ( testIterations ) { 30 18 var placeholderID = api.Menus.generatePlaceholderAutoIncrementId(); 31 19 32 20 ok( -1 === ids.indexOf( placeholderID ) ); 33 21 ids.push( placeholderID ); 22 testIterations -= 1; 34 23 } 35 24 … … 38 27 test( 'it should parse _wpCustomizeMenusSettings.defaults into itself', function() { 39 28 deepEqual( window._wpCustomizeNavMenusSettings, api.Menus.data ); 40 } );29 } ); 41 30 31 test( 'empty menus should have no Menu Item Controls', function() { 32 ok( 0 === wp.customize.Menus.getMenuControl( socialMenuId ).getMenuItemControls().length, 'empty menus' ); 33 } ); 42 34 43 }); 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 } ); 38 39 // @todo Add tests for api.Menus.AvailableMenuItemsPanelView (and api.Menus.AvailableItemCollection, api.Menus.AvailableItemCollection, api.Menus.AvailableItemModel) 40 41 test( 'there is a properly configured MenusPanel', function() { 42 var panel, sections; 43 44 panel = api.panel( 'nav_menus' ); 45 ok( panel ); 46 ok( panel.extended( api.Menus.MenusPanel ) ); 47 48 sections = panel.sections(); 49 ok( 'menu_locations' === sections[0].id, 'first section is menu_locations' ); 50 ok( sections[1].extended( api.Menus.MenuSection ), 'second section is MenuSection' ); 51 ok( sections[ sections.length - 1 ].extended( api.Menus.NewMenuSection ), 'last section is NewMenuSection' ); 52 } ); 53 // @todo Add more tests for api.Menus.MenusPanel behaviors 54 55 test( 'there an expected MenuSection for the primary menu', function() { 56 var section, controls; 57 58 section = api.section( 'nav_menu[' + primaryMenuId + ']' ); 59 ok( section, 'section exists' ); 60 ok( section.extended( api.Menus.MenuSection ), 'section is a api.Menus.MenuSection' ); 61 ok( section.deferred.initSortables, 'has section.deferred.initSortables' ); 62 ok( section.active(), 'section active() is true' ); 63 ok( section.active.set( false ).get(), 'section active() cannot be set false' ); 64 65 controls = section.controls(); 66 ok( controls[0].extended( api.Menus.MenuNameControl ), 'first control in menu section is MenuNameControl' ); 67 ok( controls[1].extended( api.Menus.MenuItemControl ), 'second control in menu section is MenuItemControl' ); 68 console.info( 'noep', controls[ controls.length - 1].id ) 69 ok( controls[ controls.length - 1 ].extended( api.Menus.MenuAutoAddControl ), 'last control in menu section is a MenuAutoAddControl' ); 70 } ); 71 // @todo Add more tests for api.Menus.MenuSection behaviors 72 73 test( 'changing a MenuNameControl change the corresponding menu value', function() { 74 var section, control; 75 76 section = api.section( 'nav_menu[' + primaryMenuId + ']' ); 77 control = section.controls()[0]; 78 ok( control.extended( api.Menus.MenuNameControl ), 'control is a MenuNameControl' ); 79 equal( control.setting().name, 'Primary menu' ); 80 ok( ! control.setting._dirty ); 81 control.container.find( 'input[type=text]:first' ).val( 'Main menu' ).trigger( 'change' ); 82 equal( control.setting().name, 'Main menu' ); 83 ok( control.setting._dirty ); 84 } ); 85 // @todo Add more tests for api.Menus.MenuNameControl 86 87 test( 'manipulating a MenuItemControl works', function() { 88 var section, control, value; 89 section = api.section( 'nav_menu[' + primaryMenuId + ']' ); 90 ok( section ); 91 92 control = section.controls()[1]; 93 ok( control.extended( api.Menus.MenuItemControl ), 'control is a MenuItemControl' ); 94 95 control.actuallyEmbed(); 96 97 control.container.find( '.edit-menu-item-title' ).val( 'Hello World' ).trigger( 'change' ); 98 equal( control.setting().title, 'Hello World' ); 99 value = _.clone( control.setting() ); 100 value.title = 'Hola Mundo'; 101 equal( control.container.find( '.edit-menu-item-title' ).val(), 'Hello World' ); 102 equal( value.position, 1 ); 103 equal( control.priority(), 1 ); 104 105 // @todo test control.moveDown(); 106 } ); 107 // @todo Add more tests for api.Menus.MenuItemControl 108 109 // @todo Add tests for api.Menus.NewMenuSection 110 // @todo Add tests for api.Menus.MenuLocationControl 111 // @todo Add tests for api.Menus.MenuAutoAddControl 112 // @todo Add tests for api.Menus.MenuControl 113 // @todo Add tests for api.Menus.NewMenuControl 114 // @todo Add tests for api.Menus.applySavedData 115 // @todo Add tests for api.Menus.focusMenuItemControl 116 117 test( 'api.Menus.getMenuControl() should return the expected control', function() { 118 var control = api.Menus.getMenuControl( primaryMenuId ); 119 ok( !! control, 'control is returned' ); 120 ok( control.extended( api.Menus.MenuControl ), 'control is a MenuControl' ); 121 } ); 122 123 test( 'api.Menus.getMenuItemControl() should return the expected control', function() { 124 var control = api.Menus.getMenuItemControl( 2000 ); 125 ok( !! control, 'control is returned' ); 126 ok( control.extended( api.Menus.MenuItemControl ), 'control is a MenuItemControl' ); 127 } ); 128 129 } );
Note: See TracChangeset
for help on using the changeset viewer.