Ticket #32688: 32688.8.diff
| File 32688.8.diff, 32.9 KB (added by , 11 years ago) |
|---|
-
tests/qunit/fixtures/customize-menus.js
diff --git tests/qunit/fixtures/customize-menus.js tests/qunit/fixtures/customize-menus.js index b2d85e4..8478510 100755
1 1 2 window._wpCustomizeNavMenusSettings = { 2 3 'nonce': 'yo', 3 4 'phpIntMax': '2147483647', 4 5 'menuItemTransport': 'postMessage', 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', 11 12 'taxonomy': 'nav_menu', … … window._wpCustomizeNavMenusSettings = { 14 15 'count': '0' 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', 21 22 'taxonomy': 'nav_menu', … … window._wpCustomizeNavMenusSettings = { 48 49 'nav_menu_term_id': 0 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' 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' 59 72 }, 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' 70 77 } 71 },78 ], 72 79 'l10n': { 73 80 'custom_label': 'Custom Link', 74 81 'customizingMenus': 'Customizing ▸ Menus', … … window._wpCustomizeNavMenusSettings = { 97 104 'untitled': '(no label)' 98 105 } 99 106 }; 100 101 107 window._wpCustomizeSettings.panels.nav_menus = { 102 108 'id': 'nav_menus', 103 109 '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 “Custom Menu” widget.</p>', … … window._wpCustomizeSettings.panels.nav_menus = { 109 115 'instanceNumber': 2 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': { 114 402 'menuItemDepthPerLevel': 30, … … window.wpNavMenu = { 120 408 'isRTL': false, 121 409 'negateIfRTL': 1 122 410 }; 123 -
tests/qunit/fixtures/customize-settings.js
diff --git tests/qunit/fixtures/customize-settings.js tests/qunit/fixtures/customize-settings.js index f5a7fc9..af1a2cf 100644
window.wp.customize = window.wp.customize || { get: function(){} }; 3 3 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 9 9 window._wpCustomizeSettings = { … … window._wpCustomizeControlsL10n = {}; 136 136 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 } 142 142 } -
tests/qunit/index.html
diff --git tests/qunit/index.html tests/qunit/index.html index ba9b0cf..71599d4 100644
34 34 <script src="../../src/wp-includes/js/customize-models.js"></script> 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> 39 48 … … 115 124 </li> 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> 121 380 <script src="editor/js/utils.js"></script> -
tests/qunit/vendor/sinon-qunit.js
diff --git tests/qunit/vendor/sinon-qunit.js tests/qunit/vendor/sinon-qunit.js index c26232f..a9dca78 100644
sinon.config = { 57 57 expected = null; 58 58 } 59 59 60 60 61 return qTest(testName, expected, sinon.test(callback), async); 61 62 }; 62 63 }(this)); -
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..45d16d2 100755
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 } 18 19 }); 5 primaryMenuId = 3, 6 socialMenuId = 2; 20 7 8 module( 'Customize Nav Menus' ); 21 9 22 10 /** 23 11 * Generate 20 ids and verify they are all unique. … … jQuery( function( ) { 26 14 var testIterations = 20, 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 36 25 } ); 37 26 38 27 test( 'it should parse _wpCustomizeMenusSettings.defaults into itself', function() { 39 28 deepEqual( window._wpCustomizeNavMenusSettings, api.Menus.data ); 40 }); 29 } ); 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 } ); 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 } ); 38 39 // @todo Add tests for api.Menus.AvailableMenuItemsPanelView (and api.Menus.AvailableItemCollection, api.Menus.AvailableItemCollection, api.Menus.AvailableItemModel) 41 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 } ); 42 128 43 } );129 } );