wp/wp-admin/js/nav-menu.js
author ymh <ymh.work@gmail.com>
Fri, 05 Sep 2025 18:52:52 +0200
changeset 22 8c2e4d02f4ef
parent 21 48c4eec2b7e6
permissions -rw-r--r--
Update WordPress to latest version (6.7) - Sync WordPress core files from latest release - Updated admin interface, blocks, and core functionality - Enhanced block editor features and performance - Security updates and bug fixes - Preserved custom wp-content directory and configuration 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
 * WordPress Administration Navigation Menu
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * Interface JS functions
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * @version 2.0.0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 * @package WordPress
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * @subpackage Administration
9
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
     9
 * @output wp-admin/js/nav-menu.js
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
    12
/* global menus, postboxes, columns, isRtl, ajaxurl, wpNavMenu */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
(function($) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    16
	var api;
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    17
9
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    18
	/**
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    19
	 * Contains all the functions to handle WordPress navigation menus administration.
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    20
	 *
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    21
	 * @namespace wpNavMenu
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    22
	 */
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    23
	api = window.wpNavMenu = {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
		options : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
			menuItemDepthPerLevel : 30, // Do not use directly. Use depthToPx and pxToDepth instead.
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    27
			globalMaxDepth:  11,
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    28
			sortableItems:   '> *',
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    29
			targetTolerance: 0
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
		menuList : undefined,	// Set in init.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
		targetList : undefined, // Set in init.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
		menusChanged : false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		isRTL: !! ( 'undefined' != typeof isRtl && isRtl ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
		negateIfRTL: ( 'undefined' != typeof isRtl && isRtl ) ? -1 : 1,
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    37
		lastSearch: '',
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
		// Functions that run on init.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
		init : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
			api.menuList = $('#menu-to-edit');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
			api.targetList = api.menuList;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
			this.jQueryExtensions();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
			this.attachMenuEditListeners();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
    48
			this.attachBulkSelectButtonListeners();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
    49
			this.attachMenuCheckBoxListeners();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
    50
			this.attachMenuItemDeleteButton();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
    51
			this.attachPendingMenuItemsListForDeletion();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
    52
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
			this.attachQuickSearchListeners();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
			this.attachThemeLocationsListeners();
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    55
			this.attachMenuSaveSubmitListeners();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
			this.attachTabsPanelListeners();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
			this.attachUnsavedChangesListener();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
			if ( api.menuList.length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
				this.initSortables();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
			if ( menus.oneThemeLocationNoMenus )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
				$( '#posttype-page' ).addSelectedToMenu( api.addMenuItemToBottom );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
			this.initManageLocations();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
			this.initAccessibility();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
			this.initToggles();
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    72
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    73
			this.initPreviewing();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
		jQueryExtensions : function() {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
    77
			// jQuery extensions.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
			$.fn.extend({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
				menuItemDepth : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
					var margin = api.isRTL ? this.eq(0).css('margin-right') : this.eq(0).css('margin-left');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
					return api.pxToDepth( margin && -1 != margin.indexOf('px') ? margin.slice(0, -2) : 0 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
				updateDepthClass : function(current, prev) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
					return this.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
						var t = $(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
						prev = prev || t.menuItemDepth();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
						$(this).removeClass('menu-item-depth-'+ prev )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
							.addClass('menu-item-depth-'+ current );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
				shiftDepthClass : function(change) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
					return this.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
						var t = $(this),
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    94
							depth = t.menuItemDepth(),
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    95
							newDepth = depth + change;
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    96
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    97
						t.removeClass( 'menu-item-depth-'+ depth )
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    98
							.addClass( 'menu-item-depth-'+ ( newDepth ) );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    99
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   100
						if ( 0 === newDepth ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   101
							t.find( '.is-submenu' ).hide();
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   102
						}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
				childMenuItems : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
					var result = $();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
					this.each(function(){
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   108
						var t = $(this), depth = t.menuItemDepth(), next = t.next( '.menu-item' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
						while( next.length && next.menuItemDepth() > depth ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
							result = result.add( next );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   111
							next = next.next( '.menu-item' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
					return result;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
				shiftHorizontally : function( dir ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
					return this.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
						var t = $(this),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
							depth = t.menuItemDepth(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
							newDepth = depth + dir;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   122
						// Change .menu-item-depth-n class.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
						t.moveHorizontally( newDepth, depth );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
				moveHorizontally : function( newDepth, depth ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
					return this.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
						var t = $(this),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
							children = t.childMenuItems(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
							diff = newDepth - depth,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
							subItemText = t.find('.is-submenu');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   133
						// Change .menu-item-depth-n class.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
						t.updateDepthClass( newDepth, depth ).updateParentMenuItemDBId();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   136
						// If it has children, move those too.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
						if ( children ) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   138
							children.each(function() {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
								var t = $(this),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
									thisDepth = t.menuItemDepth(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
									newDepth = thisDepth + diff;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
								t.updateDepthClass(newDepth, thisDepth).updateParentMenuItemDBId();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
							});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   146
						// Show "Sub item" helper text.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
						if (0 === newDepth)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
							subItemText.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
						else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
							subItemText.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
				updateParentMenuItemDBId : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
					return this.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
						var item = $(this),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
							input = item.find( '.menu-item-data-parent-id' ),
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   157
							depth = parseInt( item.menuItemDepth(), 10 ),
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
							parentDepth = depth - 1,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
							parent = item.prevAll( '.menu-item-depth-' + parentDepth ).first();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   161
						if ( 0 === depth ) { // Item is on the top level, has no parent.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
							input.val(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
						} else { // Find the parent item, and retrieve its object id.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
							input.val( parent.find( '.menu-item-data-db-id' ).val() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
				hideAdvancedMenuItemFields : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
					return this.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
						var that = $(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
						$('.hide-column-tog').not(':checked').each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
							that.find('.field-' + $(this).val() ).addClass('hidden-field');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
						});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
				/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
				 * Adds selected menu items to the menu.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
				 *
9
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   179
				 * @ignore
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   180
				 *
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
				 * @param jQuery metabox The metabox jQuery object.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
				 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
				addSelectedToMenu : function(processMethod) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   184
					if ( 0 === $('#menu-to-edit').length ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
						return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
					return this.each(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
						var t = $(this), menuItems = {},
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   190
							checkboxes = ( menus.oneThemeLocationNoMenus && 0 === t.find( '.tabs-panel-active .categorychecklist li input:checked' ).length ) ? t.find( '#page-all li input[type="checkbox"]' ) : t.find( '.tabs-panel-active .categorychecklist li input:checked' ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   191
							re = /menu-item\[([^\]]*)/;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
						processMethod = processMethod || api.addMenuItemToBottom;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
						// If no items are checked, bail.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
						if ( !checkboxes.length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
							return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   199
						// Show the Ajax spinner.
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   200
						t.find( '.button-controls .spinner' ).addClass( 'is-active' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   202
						// Retrieve menu item data.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
						$(checkboxes).each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
							var t = $(this),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
								listItemDBIDMatch = re.exec( t.attr('name') ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
								listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
							if ( this.className && -1 != this.className.indexOf('add-to-top') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
								processMethod = api.addMenuItemToTop;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
							menuItems[listItemDBID] = t.closest('li').getItemData( 'add-menu-item', listItemDBID );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
						});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   213
						// Add the items.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
						api.addItemToMenu(menuItems, processMethod, function(){
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   215
							// Deselect the items and hide the Ajax spinner.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   216
							checkboxes.prop( 'checked', false );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   217
							t.find( '.button-controls .select-all' ).prop( 'checked', false );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   218
							t.find( '.button-controls .spinner' ).removeClass( 'is-active' );
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   219
							t.updateParentDropdown();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   220
							t.updateOrderDropdown();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
						});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
				getItemData : function( itemType, id ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
					itemType = itemType || 'menu-item';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
					var itemData = {}, i,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
					fields = [
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
						'menu-item-db-id',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
						'menu-item-object-id',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
						'menu-item-object',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
						'menu-item-parent-id',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
						'menu-item-position',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
						'menu-item-type',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
						'menu-item-title',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
						'menu-item-url',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
						'menu-item-description',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
						'menu-item-attr-title',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
						'menu-item-target',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
						'menu-item-classes',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
						'menu-item-xfn'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
					];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
					if( !id && itemType == 'menu-item' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
						id = this.find('.menu-item-data-db-id').val();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
					if( !id ) return itemData;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
					this.find('input').each(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
						var field;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
						i = fields.length;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
						while ( i-- ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
							if( itemType == 'menu-item' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
								field = fields[i] + '[' + id + ']';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
							else if( itemType == 'add-menu-item' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
								field = 'menu-item[' + id + '][' + fields[i] + ']';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
							if (
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
								this.name &&
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
								field == this.name
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
							) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
								itemData[fields[i]] = this.value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
					return itemData;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
				setItemData : function( itemData, itemType, id ) { // Can take a type, such as 'menu-item', or an id.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
					itemType = itemType || 'menu-item';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
					if( !id && itemType == 'menu-item' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
						id = $('.menu-item-data-db-id', this).val();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
					if( !id ) return this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
					this.find('input').each(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
						var t = $(this), field;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
						$.each( itemData, function( attr, val ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
							if( itemType == 'menu-item' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
								field = attr + '[' + id + ']';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
							else if( itemType == 'add-menu-item' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
								field = 'menu-item[' + id + '][' + attr + ']';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
							if ( field == t.attr('name') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
								t.val( val );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
						});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
					return this;
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   293
				},
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   294
				updateParentDropdown : function() {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   295
					return this.each(function(){
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   296
						var menuItems = $( '#menu-to-edit li' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   297
							parentDropdowns = $( '.edit-menu-item-parent' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   298
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   299
						$.each( parentDropdowns, function() {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   300
							var parentDropdown = $( this ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   301
								$html = '',
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   302
								$selected = '',
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   303
								currentItemID = parentDropdown.closest( 'li.menu-item' ).find( '.menu-item-data-db-id' ).val(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   304
								currentparentID = parentDropdown.closest( 'li.menu-item' ).find( '.menu-item-data-parent-id' ).val(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   305
								currentItem = parentDropdown.closest( 'li.menu-item' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   306
								currentMenuItemChild = currentItem.childMenuItems(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   307
								excludeMenuItem = [ currentItemID ];
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   308
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   309
							if ( currentMenuItemChild.length > 0 ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   310
								$.each( currentMenuItemChild, function(){
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   311
									var childItem = $(this),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   312
										childID = childItem.find( '.menu-item-data-db-id' ).val();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   313
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   314
									excludeMenuItem.push( childID );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   315
								});
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   316
							}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   317
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   318
							if ( currentparentID == 0 ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   319
								$selected = 'selected';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   320
							}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   321
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   322
							$html += '<option ' + $selected + ' value="0">' + wp.i18n._x( 'No Parent', 'menu item without a parent in navigation menu' ) + '</option>';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   323
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   324
							$.each( menuItems, function() {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   325
								var menuItem = $(this),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   326
								$selected = '',
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   327
								menuID = menuItem.find( '.menu-item-data-db-id' ).val(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   328
								menuTitle = menuItem.find( '.edit-menu-item-title' ).val();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   329
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   330
								if ( ! excludeMenuItem.includes( menuID ) ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   331
									if ( currentparentID == menuID ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   332
										$selected = 'selected';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   333
									}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   334
									$html += '<option ' + $selected + ' value="' + menuID + '">' + menuTitle + '</option>';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   335
								}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   336
							});
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   337
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   338
							parentDropdown.html( $html );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   339
						});
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   340
						
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   341
					});
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   342
				},
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   343
				updateOrderDropdown : function() {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   344
					return this.each( function() {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   345
						var itemPosition,
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   346
							orderDropdowns = $( '.edit-menu-item-order' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   347
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   348
						$.each( orderDropdowns, function() {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   349
							var orderDropdown = $( this ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   350
								menuItem = orderDropdown.closest( 'li.menu-item' ).first(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   351
								depth = menuItem.menuItemDepth(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   352
								isPrimaryMenuItem = ( 0 === depth ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   353
								$html = '',
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   354
								$selected = '';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   355
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   356
							if ( isPrimaryMenuItem ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   357
								var primaryItems = $( '.menu-item-depth-0' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   358
									totalMenuItems = primaryItems.length;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   359
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   360
								itemPosition = primaryItems.index( menuItem ) + 1;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   361
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   362
								for ( let i = 1; i < totalMenuItems + 1; i++ ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   363
									$selected = '';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   364
									if ( i == itemPosition ) { 
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   365
										$selected = 'selected';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   366
									}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   367
									var itemString = wp.i18n.sprintf( 
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   368
										/* translators: 1: The current menu item number, 2: The total number of menu items. */
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   369
										wp.i18n._x( '%1$s of %2$s', 'part of a total number of menu items' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   370
										i,
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   371
										totalMenuItems
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   372
									);
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   373
									$html += '<option ' + $selected + ' value="' + i + '">' + itemString + '</option>';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   374
								}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   375
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   376
							} else {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   377
								var parentItem = menuItem.prevAll( '.menu-item-depth-' + parseInt( depth - 1, 10 ) ).first(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   378
									parentItemId = parentItem.find( '.menu-item-data-db-id' ).val(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   379
									subItems = $( '.menu-item .menu-item-data-parent-id[value="' + parentItemId + '"]' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   380
									totalSubMenuItems = subItems.length;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   381
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   382
								itemPosition = $( subItems.parents('.menu-item').get().reverse() ).index( menuItem ) + 1;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   383
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   384
								for ( let i = 1; i < totalSubMenuItems + 1; i++ ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   385
									$selected = '';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   386
									if ( i == itemPosition ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   387
										$selected = 'selected';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   388
									}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   389
									var submenuString = wp.i18n.sprintf( 
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   390
										/* translators: 1: The current submenu item number, 2: The total number of submenu items. */
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   391
										wp.i18n._x( '%1$s of %2$s', 'part of a total number of menu items' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   392
										i,
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   393
										totalSubMenuItems
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   394
									);
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   395
									$html += '<option ' + $selected + ' value="' + i + '">' + submenuString + '</option>';
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   396
								}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   397
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   398
							}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   399
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   400
							orderDropdown.html( $html );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   401
						});
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   402
						
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   403
					});
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
		countMenuItems : function( depth ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
			return $( '.menu-item-depth-' + depth ).length;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
		moveMenuItem : function( $this, dir ) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   413
			var items, newItemPosition, newDepth,
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   414
				menuItems = $( '#menu-to-edit li' ),
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
				menuItemsCount = menuItems.length,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
				thisItem = $this.parents( 'li.menu-item' ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
				thisItemChildren = thisItem.childMenuItems(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
				thisItemData = thisItem.getItemData(),
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   419
				thisItemDepth = parseInt( thisItem.menuItemDepth(), 10 ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   420
				thisItemPosition = parseInt( thisItem.index(), 10 ),
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
				nextItem = thisItem.next(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
				nextItemChildren = nextItem.childMenuItems(),
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   423
				nextItemDepth = parseInt( nextItem.menuItemDepth(), 10 ) + 1,
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
				prevItem = thisItem.prev(),
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   425
				prevItemDepth = parseInt( prevItem.menuItemDepth(), 10 ),
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   426
				prevItemId = prevItem.getItemData()['menu-item-db-id'],
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   427
				a11ySpeech = menus[ 'moved' + dir.charAt(0).toUpperCase() + dir.slice(1) ];
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
			switch ( dir ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
			case 'up':
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   431
				newItemPosition = thisItemPosition - 1;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   433
				// Already at top.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
				if ( 0 === thisItemPosition )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   437
				// If a sub item is moved to top, shift it to 0 depth.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
				if ( 0 === newItemPosition && 0 !== thisItemDepth )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
					thisItem.moveHorizontally( 0, thisItemDepth );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   441
				// If prev item is sub item, shift to match depth.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
				if ( 0 !== prevItemDepth )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
					thisItem.moveHorizontally( prevItemDepth, thisItemDepth );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
				// Does this item have sub items?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
				if ( thisItemChildren ) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   447
					items = thisItem.add( thisItemChildren );
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   448
					// Move the entire block.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
					items.detach().insertBefore( menuItems.eq( newItemPosition ) ).updateParentMenuItemDBId();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
				} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
					thisItem.detach().insertBefore( menuItems.eq( newItemPosition ) ).updateParentMenuItemDBId();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
			case 'down':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
				// Does this item have sub items?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
				if ( thisItemChildren ) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   457
					items = thisItem.add( thisItemChildren ),
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
						nextItem = menuItems.eq( items.length + thisItemPosition ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
						nextItemChildren = 0 !== nextItem.childMenuItems().length;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
					if ( nextItemChildren ) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   462
						newDepth = parseInt( nextItem.menuItemDepth(), 10 ) + 1;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
						thisItem.moveHorizontally( newDepth, thisItemDepth );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
					// Have we reached the bottom?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
					if ( menuItemsCount === thisItemPosition + items.length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
					items.detach().insertAfter( menuItems.eq( thisItemPosition + items.length ) ).updateParentMenuItemDBId();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
				} else {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   472
					// If next item has sub items, shift depth.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
					if ( 0 !== nextItemChildren.length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
						thisItem.moveHorizontally( nextItemDepth, thisItemDepth );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   476
					// Have we reached the bottom?
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
					if ( menuItemsCount === thisItemPosition + 1 )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
					thisItem.detach().insertAfter( menuItems.eq( thisItemPosition + 1 ) ).updateParentMenuItemDBId();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
			case 'top':
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   483
				// Already at top.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
				if ( 0 === thisItemPosition )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
				// Does this item have sub items?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
				if ( thisItemChildren ) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   488
					items = thisItem.add( thisItemChildren );
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   489
					// Move the entire block.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
					items.detach().insertBefore( menuItems.eq( 0 ) ).updateParentMenuItemDBId();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
				} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
					thisItem.detach().insertBefore( menuItems.eq( 0 ) ).updateParentMenuItemDBId();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
			case 'left':
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   496
				// As far left as possible.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
				if ( 0 === thisItemDepth )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
				thisItem.shiftHorizontally( -1 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
			case 'right':
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   502
				// Can't be sub item at top.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
				if ( 0 === thisItemPosition )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
					break;
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   505
				// Already sub item of prevItem.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
				if ( thisItemData['menu-item-parent-id'] === prevItemId )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
				thisItem.shiftHorizontally( 1 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
   511
			$this.trigger( 'focus' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
			api.registerChange();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
			api.refreshKeyboardAccessibility();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
			api.refreshAdvancedAccessibility();
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   515
			thisItem.updateParentDropdown();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   516
			thisItem.updateOrderDropdown();
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   517
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   518
			if ( a11ySpeech ) {
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   519
				wp.a11y.speak( a11ySpeech );
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   520
			}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
		initAccessibility : function() {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   524
			var menu = $( '#menu-to-edit' );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   525
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
			api.refreshKeyboardAccessibility();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
			api.refreshAdvancedAccessibility();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   529
			// Refresh the accessibility when the user comes close to the item in any way.
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   530
			menu.on( 'mouseenter.refreshAccessibility focus.refreshAccessibility touchstart.refreshAccessibility' , '.menu-item' , function(){
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   531
				api.refreshAdvancedAccessibilityOfItem( $( this ).find( 'a.item-edit' ) );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   532
			} );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   533
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   534
			// We have to update on click as well because we might hover first, change the item, and then click.
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   535
			menu.on( 'click', 'a.item-edit', function() {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   536
				api.refreshAdvancedAccessibilityOfItem( $( this ) );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   537
			} );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   538
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   539
			// Links for moving items.
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   540
			menu.on( 'click', '.menus-move', function () {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   541
				var $this = $( this ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   542
					dir = $this.data( 'dir' );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   543
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   544
				if ( 'undefined' !== typeof dir ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   545
					api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), dir );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   546
				}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
			});
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   548
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   549
			// Set menu parents data for all menu items.
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   550
			menu.updateParentDropdown();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   551
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   552
			// Set menu order data for all menu items.
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   553
			menu.updateOrderDropdown();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   554
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   555
			// Update menu item parent when value is changed.
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   556
			menu.on( 'change', '.edit-menu-item-parent', function() {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   557
				api.changeMenuParent( $( this ) );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   558
			});
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   559
			
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   560
			// Update menu item order when value is changed.
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   561
			menu.on( 'change', '.edit-menu-item-order', function() {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   562
				api.changeMenuOrder( $( this ) );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   563
			});
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   564
		},
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   565
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   566
		/**
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   567
		 * changeMenuParent( [parentDropdown] )
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   568
		 * 
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   569
		 * @since 6.7.0
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   570
		 *
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   571
		 * @param {object} parentDropdown select field
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   572
		 */
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   573
		changeMenuParent : function( parentDropdown ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   574
			var menuItemNewPosition,
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   575
				menuItems = $( '#menu-to-edit li' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   576
				$this = $( parentDropdown ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   577
				newParentID = $this.val(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   578
				menuItem = $this.closest( 'li.menu-item' ).first(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   579
				menuItemOldDepth = menuItem.menuItemDepth(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   580
				menuItemChildren = menuItem.childMenuItems(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   581
				menuItemNoChildren = parseInt( menuItem.childMenuItems().length, 10 ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   582
				parentItem = $( '#menu-item-' + newParentID ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   583
				parentItemDepth = parentItem.menuItemDepth(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   584
				menuItemNewDepth = parseInt( parentItemDepth ) + 1;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   585
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   586
			if ( newParentID == 0 ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   587
				menuItemNewDepth = 0;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   588
			}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   589
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   590
			menuItem.find( '.menu-item-data-parent-id' ).val( newParentID );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   591
			menuItem.moveHorizontally( menuItemNewDepth, menuItemOldDepth );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   592
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   593
			if ( menuItemNoChildren > 0 ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   594
				menuItem = menuItem.add( menuItemChildren );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   595
			}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   596
			menuItem.detach();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   597
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   598
			menuItems = $( '#menu-to-edit li' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   599
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   600
			var	parentItemPosition = parseInt( parentItem.index(), 10 ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   601
				parentItemNoChild = parseInt( parentItem.childMenuItems().length, 10 );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   602
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   603
			if ( parentItemNoChild > 0 ){
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   604
				menuItemNewPosition = parentItemPosition + parentItemNoChild;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   605
			} else {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   606
				menuItemNewPosition = parentItemPosition;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   607
			}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   608
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   609
			if ( newParentID == 0 ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   610
				menuItemNewPosition = menuItems.length - 1;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   611
			}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   612
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   613
			menuItem.insertAfter( menuItems.eq( menuItemNewPosition ) ).updateParentMenuItemDBId().updateParentDropdown().updateOrderDropdown();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   614
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   615
			api.registerChange();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   616
			api.refreshKeyboardAccessibility();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   617
			api.refreshAdvancedAccessibility();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   618
			$this.trigger( 'focus' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   619
			wp.a11y.speak( menus.parentUpdated, 'polite' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   620
		},
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   621
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   622
		/**
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   623
		 * changeMenuOrder( [OrderDropdown] )
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   624
		 * 
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   625
		 * @since 6.7.0
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   626
		 *
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   627
		 * @param {object} orderDropdown select field
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   628
		 */
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   629
		changeMenuOrder : function( orderDropdown ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   630
			var menuItems = $( '#menu-to-edit li' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   631
				$this = $( orderDropdown ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   632
				newOrderID = parseInt( $this.val(), 10),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   633
				menuItem = $this.closest( 'li.menu-item' ).first(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   634
				menuItemChildren = menuItem.childMenuItems(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   635
				menuItemNoChildren = menuItemChildren.length,
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   636
				menuItemCurrentPosition = parseInt( menuItem.index(), 10 ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   637
				parentItemID = menuItem.find( '.menu-item-data-parent-id' ).val(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   638
				subItems = $( '.menu-item .menu-item-data-parent-id[value="' + parentItemID + '"]' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   639
				currentItemAtPosition = $(subItems[newOrderID - 1]).closest( 'li.menu-item' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   640
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   641
			if ( menuItemNoChildren > 0 ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   642
				menuItem = menuItem.add( menuItemChildren );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   643
			}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   644
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   645
			var currentItemNoChildren = currentItemAtPosition.childMenuItems().length,
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   646
				currentItemPosition = parseInt( currentItemAtPosition.index(), 10 );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   647
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   648
			menuItems = $( '#menu-to-edit li' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   649
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   650
			var	menuItemNewPosition = currentItemPosition;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   651
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   652
			if(menuItemCurrentPosition > menuItemNewPosition){
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   653
				menuItemNewPosition = currentItemPosition;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   654
				menuItem.detach().insertBefore( menuItems.eq( menuItemNewPosition ) ).updateOrderDropdown();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   655
			} else {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   656
				menuItemNewPosition = menuItemNewPosition + currentItemNoChildren;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   657
				menuItem.detach().insertAfter( menuItems.eq( menuItemNewPosition ) ).updateOrderDropdown();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   658
			}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   659
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   660
			api.registerChange();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   661
			api.refreshKeyboardAccessibility();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   662
			api.refreshAdvancedAccessibility();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   663
			$this.trigger( 'focus' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   664
			wp.a11y.speak( menus.orderUpdated, 'polite' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   665
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   666
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   667
		/**
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   668
		 * refreshAdvancedAccessibilityOfItem( [itemToRefresh] )
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   669
		 *
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   670
		 * Refreshes advanced accessibility buttons for one menu item.
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   671
		 * Shows or hides buttons based on the location of the menu item.
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   672
		 *
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   673
		 * @param {Object} itemToRefresh The menu item that might need its advanced accessibility buttons refreshed
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   674
		 */
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   675
		refreshAdvancedAccessibilityOfItem : function( itemToRefresh ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   676
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   677
			// Only refresh accessibility when necessary.
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   678
			if ( true !== $( itemToRefresh ).data( 'needs_accessibility_refresh' ) ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   679
				return;
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   680
			}
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   681
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   682
			var thisLink, thisLinkText, primaryItems, itemPosition, title,
21
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   683
				parentItem, parentItemId, parentItemName, subItems, totalSubItems,
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   684
				$this = $( itemToRefresh ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   685
				menuItem = $this.closest( 'li.menu-item' ).first(),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   686
				depth = menuItem.menuItemDepth(),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   687
				isPrimaryMenuItem = ( 0 === depth ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   688
				itemName = $this.closest( '.menu-item-handle' ).find( '.menu-item-title' ).text(),
21
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   689
				menuItemType = $this.closest( '.menu-item-handle' ).find( '.item-controls' ).find( '.item-type' ).text(),
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   690
				position = parseInt( menuItem.index(), 10 ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   691
				prevItemDepth = ( isPrimaryMenuItem ) ? depth : parseInt( depth - 1, 10 ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   692
				prevItemNameLeft = menuItem.prevAll('.menu-item-depth-' + prevItemDepth).first().find( '.menu-item-title' ).text(),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   693
				prevItemNameRight = menuItem.prevAll('.menu-item-depth-' + depth).first().find( '.menu-item-title' ).text(),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   694
				totalMenuItems = $('#menu-to-edit li').length,
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   695
				hasSameDepthSibling = menuItem.nextAll( '.menu-item-depth-' + depth ).length;
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   696
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   697
				menuItem.find( '.field-move' ).toggle( totalMenuItems > 1 );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   698
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   699
			// Where can they move this menu item?
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   700
			if ( 0 !== position ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   701
				thisLink = menuItem.find( '.menus-move-up' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   702
				thisLink.attr( 'aria-label', menus.moveUp ).css( 'display', 'inline' );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   703
			}
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   704
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   705
			if ( 0 !== position && isPrimaryMenuItem ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   706
				thisLink = menuItem.find( '.menus-move-top' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   707
				thisLink.attr( 'aria-label', menus.moveToTop ).css( 'display', 'inline' );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   708
			}
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   709
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   710
			if ( position + 1 !== totalMenuItems && 0 !== position ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   711
				thisLink = menuItem.find( '.menus-move-down' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   712
				thisLink.attr( 'aria-label', menus.moveDown ).css( 'display', 'inline' );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   713
			}
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   714
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   715
			if ( 0 === position && 0 !== hasSameDepthSibling ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   716
				thisLink = menuItem.find( '.menus-move-down' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   717
				thisLink.attr( 'aria-label', menus.moveDown ).css( 'display', 'inline' );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   718
			}
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   719
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   720
			if ( ! isPrimaryMenuItem ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   721
				thisLink = menuItem.find( '.menus-move-left' ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   722
				thisLinkText = menus.outFrom.replace( '%s', prevItemNameLeft );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   723
				thisLink.attr( 'aria-label', menus.moveOutFrom.replace( '%s', prevItemNameLeft ) ).text( thisLinkText ).css( 'display', 'inline' );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   724
			}
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   725
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   726
			if ( 0 !== position ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   727
				if ( menuItem.find( '.menu-item-data-parent-id' ).val() !== menuItem.prev().find( '.menu-item-data-db-id' ).val() ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   728
					thisLink = menuItem.find( '.menus-move-right' ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   729
					thisLinkText = menus.under.replace( '%s', prevItemNameRight );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   730
					thisLink.attr( 'aria-label', menus.moveUnder.replace( '%s', prevItemNameRight ) ).text( thisLinkText ).css( 'display', 'inline' );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   731
				}
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   732
			}
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   733
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   734
			if ( isPrimaryMenuItem ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   735
				primaryItems = $( '.menu-item-depth-0' ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   736
				itemPosition = primaryItems.index( menuItem ) + 1,
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   737
				totalMenuItems = primaryItems.length,
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   738
				// String together help text for primary menu items.
21
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   739
				title = menus.menuFocus.replace( '%1$s', itemName ).replace( '%2$s', menuItemType ).replace( '%3$d', itemPosition ).replace( '%4$d', totalMenuItems );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   740
			} else {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   741
				parentItem = menuItem.prevAll( '.menu-item-depth-' + parseInt( depth - 1, 10 ) ).first(),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   742
				parentItemId = parentItem.find( '.menu-item-data-db-id' ).val(),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   743
				parentItemName = parentItem.find( '.menu-item-title' ).text(),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   744
				subItems = $( '.menu-item .menu-item-data-parent-id[value="' + parentItemId + '"]' ),
21
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   745
				totalSubItems = subItems.length,
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   746
				itemPosition = $( subItems.parents('.menu-item').get().reverse() ).index( menuItem ) + 1;
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   747
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   748
				// String together help text for sub menu items.
21
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   749
				if ( depth < 2 ) {
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   750
					title = menus.subMenuFocus.replace( '%1$s', itemName ).replace( '%2$s', menuItemType ).replace( '%3$d', itemPosition ).replace( '%4$d', totalSubItems ).replace( '%5$s', parentItemName );
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   751
				} else {
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   752
					title = menus.subMenuMoreDepthFocus.replace( '%1$s', itemName ).replace( '%2$s', menuItemType ).replace( '%3$d', itemPosition ).replace( '%4$d', totalSubItems ).replace( '%5$s', parentItemName ).replace( '%6$d', depth );
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   753
				}
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   754
			}
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   755
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   756
			$this.attr( 'aria-label', title );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   757
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   758
			// Mark this item's accessibility as refreshed.
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   759
			$this.data( 'needs_accessibility_refresh', false );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   760
		},
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   761
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   762
		/**
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   763
		 * refreshAdvancedAccessibility
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   764
		 *
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   765
		 * Hides all advanced accessibility buttons and marks them for refreshing.
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   766
		 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   767
		refreshAdvancedAccessibility : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   768
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   769
			// Hide all the move buttons by default.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   770
			$( '.menu-item-settings .field-move .menus-move' ).hide();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   771
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   772
			// Mark all menu items as unprocessed.
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   773
			$( 'a.item-edit' ).data( 'needs_accessibility_refresh', true );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   774
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   775
			// All open items have to be refreshed or they will show no links.
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   776
			$( '.menu-item-edit-active a.item-edit' ).each( function() {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   777
				api.refreshAdvancedAccessibilityOfItem( this );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   778
			} );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   779
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   780
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   781
		refreshKeyboardAccessibility : function() {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   782
			$( 'a.item-edit' ).off( 'focus' ).on( 'focus', function(){
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   783
				$(this).off( 'keydown' ).on( 'keydown', function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   784
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   785
					var arrows,
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   786
						$this = $( this ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   787
						thisItem = $this.parents( 'li.menu-item' ),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   788
						thisItemData = thisItem.getItemData();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   789
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   790
					// Bail if it's not an arrow key.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   791
					if ( 37 != e.which && 38 != e.which && 39 != e.which && 40 != e.which )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   792
						return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   793
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   794
					// Avoid multiple keydown events.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   795
					$this.off('keydown');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   796
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   797
					// Bail if there is only one menu item.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   798
					if ( 1 === $('#menu-to-edit li').length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   799
						return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   800
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   801
					// If RTL, swap left/right arrows.
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   802
					arrows = { '38': 'up', '40': 'down', '37': 'left', '39': 'right' };
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   803
					if ( $('body').hasClass('rtl') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   804
						arrows = { '38' : 'up', '40' : 'down', '39' : 'left', '37' : 'right' };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   805
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   806
					switch ( arrows[e.which] ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   807
					case 'up':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   808
						api.moveMenuItem( $this, 'up' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   809
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   810
					case 'down':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   811
						api.moveMenuItem( $this, 'down' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   812
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   813
					case 'left':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   814
						api.moveMenuItem( $this, 'left' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   815
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   816
					case 'right':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   817
						api.moveMenuItem( $this, 'right' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   818
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   819
					}
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   820
					// Put focus back on same menu item.
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
   821
					$( '#edit-' + thisItemData['menu-item-db-id'] ).trigger( 'focus' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   822
					return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   823
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   824
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   825
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   826
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   827
		initPreviewing : function() {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   828
			// Update the item handle title when the navigation label is changed.
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   829
			$( '#menu-to-edit' ).on( 'change input', '.edit-menu-item-title', function(e) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   830
				var input = $( e.currentTarget ), title, titleEl;
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   831
				title = input.val();
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   832
				titleEl = input.closest( '.menu-item' ).find( '.menu-item-title' );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   833
				// Don't update to empty title.
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   834
				if ( title ) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   835
					titleEl.text( title ).removeClass( 'no-title' );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   836
				} else {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   837
					titleEl.text( wp.i18n._x( '(no label)', 'missing menu item navigation label' ) ).addClass( 'no-title' );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   838
				}
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   839
			} );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   840
		},
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   841
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   842
		initToggles : function() {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   843
			// Init postboxes.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   844
			postboxes.add_postbox_toggles('nav-menus');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   845
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   846
			// Adjust columns functions for menus UI.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   847
			columns.useCheckboxesForHidden();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   848
			columns.checked = function(field) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   849
				$('.field-' + field).removeClass('hidden-field');
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   850
			};
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   851
			columns.unchecked = function(field) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   852
				$('.field-' + field).addClass('hidden-field');
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   853
			};
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   854
			// Hide fields.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   855
			api.menuList.hideAdvancedMenuItemFields();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   856
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
   857
			$('.hide-postbox-tog').on( 'click', function () {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   858
				var hidden = $( '.accordion-container li.accordion-section' ).filter(':hidden').map(function() { return this.id; }).get().join(',');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   859
				$.post(ajaxurl, {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   860
					action: 'closed-postboxes',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   861
					hidden: hidden,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   862
					closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   863
					page: 'nav-menus'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   864
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   865
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   866
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   867
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   868
		initSortables : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   869
			var currentDepth = 0, originalDepth, minDepth, maxDepth,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   870
				prev, next, prevBottom, nextThreshold, helperHeight, transport,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   871
				menuEdge = api.menuList.offset().left,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   872
				body = $('body'), maxChildDepth,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   873
				menuMaxDepth = initialMenuMaxDepth();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   874
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   875
			if( 0 !== $( '#menu-to-edit li' ).length )
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   876
				$( '.drag-instructions' ).show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   877
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   878
			// Use the right edge if RTL.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   879
			menuEdge += api.isRTL ? api.menuList.width() : 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   880
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   881
			api.menuList.sortable({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   882
				handle: '.menu-item-handle',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   883
				placeholder: 'sortable-placeholder',
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   884
				items: api.options.sortableItems,
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   885
				start: function(e, ui) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   886
					var height, width, parent, children, tempHolder;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   887
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   888
					// Handle placement for RTL orientation.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   889
					if ( api.isRTL )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   890
						ui.item[0].style.right = 'auto';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   891
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   892
					transport = ui.item.children('.menu-item-transport');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   893
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   894
					// Set depths. currentDepth must be set before children are located.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   895
					originalDepth = ui.item.menuItemDepth();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   896
					updateCurrentDepth(ui, originalDepth);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   897
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   898
					// Attach child elements to parent.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   899
					// Skip the placeholder.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   900
					parent = ( ui.item.next()[0] == ui.placeholder[0] ) ? ui.item.next() : ui.item;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   901
					children = parent.childMenuItems();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   902
					transport.append( children );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   903
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   904
					// Update the height of the placeholder to match the moving item.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   905
					height = transport.outerHeight();
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   906
					// If there are children, account for distance between top of children and parent.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   907
					height += ( height > 0 ) ? (ui.placeholder.css('margin-top').slice(0, -2) * 1) : 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   908
					height += ui.helper.outerHeight();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   909
					helperHeight = height;
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   910
					height -= 2;                                              // Subtract 2 for borders.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   911
					ui.placeholder.height(height);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   912
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   913
					// Update the width of the placeholder to match the moving item.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   914
					maxChildDepth = originalDepth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   915
					children.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   916
						var depth = $(this).menuItemDepth();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   917
						maxChildDepth = (depth > maxChildDepth) ? depth : maxChildDepth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   918
					});
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   919
					width = ui.helper.find('.menu-item-handle').outerWidth(); // Get original width.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   920
					width += api.depthToPx(maxChildDepth - originalDepth);    // Account for children.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   921
					width -= 2;                                               // Subtract 2 for borders.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   922
					ui.placeholder.width(width);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   923
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   924
					// Update the list of menu items.
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   925
					tempHolder = ui.placeholder.next( '.menu-item' );
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   926
					tempHolder.css( 'margin-top', helperHeight + 'px' ); // Set the margin to absorb the placeholder.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   927
					ui.placeholder.detach();         // Detach or jQuery UI will think the placeholder is a menu item.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   928
					$(this).sortable( 'refresh' );   // The children aren't sortable. We should let jQuery UI know.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   929
					ui.item.after( ui.placeholder ); // Reattach the placeholder.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   930
					tempHolder.css('margin-top', 0); // Reset the margin.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   931
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   932
					// Now that the element is complete, we can update...
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   933
					updateSharedVars(ui);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   934
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   935
				stop: function(e, ui) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   936
					var children, subMenuTitle,
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   937
						depthChange = currentDepth - originalDepth;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   938
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   939
					// Return child elements to the list.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   940
					children = transport.children().insertAfter(ui.item);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   941
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   942
					// Add "sub menu" description.
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   943
					subMenuTitle = ui.item.find( '.item-title .is-submenu' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   944
					if ( 0 < currentDepth )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   945
						subMenuTitle.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   946
					else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   947
						subMenuTitle.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   948
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   949
					// Update depth classes.
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   950
					if ( 0 !== depthChange ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   951
						ui.item.updateDepthClass( currentDepth );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   952
						children.shiftDepthClass( depthChange );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   953
						updateMenuMaxDepth( depthChange );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   954
					}
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   955
					// Register a change.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   956
					api.registerChange();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   957
					// Update the item data.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   958
					ui.item.updateParentMenuItemDBId();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   959
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   960
					// Address sortable's incorrectly-calculated top in Opera.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   961
					ui.item[0].style.top = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   962
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   963
					// Handle drop placement for rtl orientation.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   964
					if ( api.isRTL ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   965
						ui.item[0].style.left = 'auto';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   966
						ui.item[0].style.right = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   967
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   968
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   969
					api.refreshKeyboardAccessibility();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   970
					api.refreshAdvancedAccessibility();
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   971
					ui.item.updateParentDropdown();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
   972
					ui.item.updateOrderDropdown();
21
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   973
					api.refreshAdvancedAccessibilityOfItem( ui.item.find( 'a.item-edit' ) );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   974
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   975
				change: function(e, ui) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   976
					// Make sure the placeholder is inside the menu.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   977
					// Otherwise fix it, or we're in trouble.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   978
					if( ! ui.placeholder.parent().hasClass('menu') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   979
						(prev.length) ? prev.after( ui.placeholder ) : api.menuList.prepend( ui.placeholder );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   980
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   981
					updateSharedVars(ui);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   982
				},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   983
				sort: function(e, ui) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   984
					var offset = ui.helper.offset(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   985
						edge = api.isRTL ? offset.left + ui.helper.width() : offset.left,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   986
						depth = api.negateIfRTL * api.pxToDepth( edge - menuEdge );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   987
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   988
					/*
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   989
					 * Check and correct if depth is not within range.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   990
					 * Also, if the dragged element is dragged upwards over an item,
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   991
					 * shift the placeholder to a child position.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
   992
					 */
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   993
					if ( depth > maxDepth || offset.top < ( prevBottom - api.options.targetTolerance ) ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   994
						depth = maxDepth;
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   995
					} else if ( depth < minDepth ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   996
						depth = minDepth;
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   997
					}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   998
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   999
					if( depth != currentDepth )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1000
						updateCurrentDepth(ui, depth);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1001
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1002
					// If we overlap the next element, manually shift downwards.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1003
					if( nextThreshold && offset.top + helperHeight > nextThreshold ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1004
						next.after( ui.placeholder );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1005
						updateSharedVars( ui );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1006
						$( this ).sortable( 'refreshPositions' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1007
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1008
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1009
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1010
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1011
			function updateSharedVars(ui) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1012
				var depth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1013
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1014
				prev = ui.placeholder.prev( '.menu-item' );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1015
				next = ui.placeholder.next( '.menu-item' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1016
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1017
				// Make sure we don't select the moving item.
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1018
				if( prev[0] == ui.item[0] ) prev = prev.prev( '.menu-item' );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1019
				if( next[0] == ui.item[0] ) next = next.next( '.menu-item' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1020
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1021
				prevBottom = (prev.length) ? prev.offset().top + prev.height() : 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1022
				nextThreshold = (next.length) ? next.offset().top + next.height() / 3 : 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1023
				minDepth = (next.length) ? next.menuItemDepth() : 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1024
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1025
				if( prev.length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1026
					maxDepth = ( (depth = prev.menuItemDepth() + 1) > api.options.globalMaxDepth ) ? api.options.globalMaxDepth : depth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1027
				else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1028
					maxDepth = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1029
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1030
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1031
			function updateCurrentDepth(ui, depth) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1032
				ui.placeholder.updateDepthClass( depth, currentDepth );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1033
				currentDepth = depth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1034
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1035
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1036
			function initialMenuMaxDepth() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1037
				if( ! body[0].className ) return 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1038
				var match = body[0].className.match(/menu-max-depth-(\d+)/);
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1039
				return match && match[1] ? parseInt( match[1], 10 ) : 0;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1040
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1041
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1042
			function updateMenuMaxDepth( depthChange ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1043
				var depth, newDepth = menuMaxDepth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1044
				if ( depthChange === 0 ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1045
					return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1046
				} else if ( depthChange > 0 ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1047
					depth = maxChildDepth + depthChange;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1048
					if( depth > menuMaxDepth )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1049
						newDepth = depth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1050
				} else if ( depthChange < 0 && maxChildDepth == menuMaxDepth ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1051
					while( ! $('.menu-item-depth-' + newDepth, api.menuList).length && newDepth > 0 )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1052
						newDepth--;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1053
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1054
				// Update the depth class.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1055
				body.removeClass( 'menu-max-depth-' + menuMaxDepth ).addClass( 'menu-max-depth-' + newDepth );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1056
				menuMaxDepth = newDepth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1057
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1058
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1059
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1060
		initManageLocations : function () {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1061
			$('#menu-locations-wrap form').on( 'submit', function(){
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1062
				window.onbeforeunload = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1063
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1064
			$('.menu-location-menus select').on('change', function () {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1065
				var editLink = $(this).closest('tr').find('.locations-edit-menu-link');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1066
				if ($(this).find('option:selected').data('orig'))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1067
					editLink.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1068
				else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1069
					editLink.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1070
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1071
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1072
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1073
		attachMenuEditListeners : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1074
			var that = this;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1075
			$('#update-nav-menu').on('click', function(e) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1076
				if ( e.target && e.target.className ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1077
					if ( -1 != e.target.className.indexOf('item-edit') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1078
						return that.eventOnClickEditLink(e.target);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1079
					} else if ( -1 != e.target.className.indexOf('menu-save') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1080
						return that.eventOnClickMenuSave(e.target);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1081
					} else if ( -1 != e.target.className.indexOf('menu-delete') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1082
						return that.eventOnClickMenuDelete(e.target);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1083
					} else if ( -1 != e.target.className.indexOf('item-delete') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1084
						return that.eventOnClickMenuItemDelete(e.target);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1085
					} else if ( -1 != e.target.className.indexOf('item-cancel') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1086
						return that.eventOnClickCancelLink(e.target);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1087
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1088
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1089
			});
9
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1090
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1091
			$( '#menu-name' ).on( 'input', _.debounce( function () {
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1092
				var menuName = $( document.getElementById( 'menu-name' ) ),
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1093
					menuNameVal = menuName.val();
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1094
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1095
				if ( ! menuNameVal || ! menuNameVal.replace( /\s+/, '' ) ) {
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1096
					// Add warning for invalid menu name.
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1097
					menuName.parent().addClass( 'form-invalid' );
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1098
				} else {
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1099
					// Remove warning for valid menu name.
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1100
					menuName.parent().removeClass( 'form-invalid' );
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1101
				}
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1102
			}, 500 ) );
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1103
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1104
			$('#add-custom-links input[type="text"]').on( 'keypress', function(e){
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1105
				$( '#customlinkdiv' ).removeClass( 'form-invalid' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1106
				$( '#custom-menu-item-url' ).removeAttr( 'aria-invalid' ).removeAttr( 'aria-describedby' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1107
				$( '#custom-url-error' ).hide();
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1108
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1109
				if ( e.keyCode === 13 ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1110
					e.preventDefault();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1111
					$( '#submit-customlinkdiv' ).trigger( 'click' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1112
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1113
			});
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1114
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1115
			$( '#submit-customlinkdiv' ).on( 'click', function (e) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1116
				var urlInput = $( '#custom-menu-item-url' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1117
					url = urlInput.val().trim(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1118
					errorMessage = $( '#custom-url-error' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1119
					urlWrap = $( '#menu-item-url-wrap' ),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1120
					urlRegex;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1121
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1122
				// Hide the error message initially
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1123
				errorMessage.hide();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1124
				urlWrap.removeClass( 'has-error' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1125
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1126
				/*
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1127
				 * Allow URLs including:
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1128
				 * - http://example.com/
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1129
				 * - //example.com
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1130
				 * - /directory/
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1131
				 * - ?query-param
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1132
				 * - #target
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1133
				 * - mailto:foo@example.com
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1134
				 *
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1135
				 * Any further validation will be handled on the server when the setting is attempted to be saved,
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1136
				 * so this pattern does not need to be complete.
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1137
				 */
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1138
				urlRegex = /^((\w+:)?\/\/\w.*|\w+:(?!\/\/$)|\/|\?|#)/;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1139
				if ( ! urlRegex.test( url ) ) {
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1140
					e.preventDefault();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1141
					urlInput.addClass( 'form-invalid' )
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1142
						.attr( 'aria-invalid', 'true' )
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1143
						.attr( 'aria-describedby', 'custom-url-error' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1144
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1145
					errorMessage.show();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1146
					var errorText = errorMessage.text();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1147
					urlWrap.addClass( 'has-error' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1148
					// Announce error message via screen reader
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1149
					wp.a11y.speak( errorText, 'assertive' );
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1150
				}
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1151
			});
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1152
		},
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1153
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1154
		/**
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1155
		 * Handle toggling bulk selection checkboxes for menu items.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1156
		 *
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1157
		 * @since 5.8.0
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1158
		 */ 
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1159
		attachBulkSelectButtonListeners : function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1160
			var that = this;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1161
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1162
			$( '.bulk-select-switcher' ).on( 'change', function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1163
				if ( this.checked ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1164
					$( '.bulk-select-switcher' ).prop( 'checked', true );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1165
					that.enableBulkSelection();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1166
				} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1167
					$( '.bulk-select-switcher' ).prop( 'checked', false );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1168
					that.disableBulkSelection();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1169
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1170
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1171
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1172
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1173
		/**
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1174
		 * Enable bulk selection checkboxes for menu items.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1175
		 *
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1176
		 * @since 5.8.0
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1177
		 */ 
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1178
		enableBulkSelection : function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1179
			var checkbox = $( '#menu-to-edit .menu-item-checkbox' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1180
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1181
			$( '#menu-to-edit' ).addClass( 'bulk-selection' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1182
			$( '#nav-menu-bulk-actions-top' ).addClass( 'bulk-selection' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1183
			$( '#nav-menu-bulk-actions-bottom' ).addClass( 'bulk-selection' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1184
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1185
			$.each( checkbox, function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1186
				$(this).prop( 'disabled', false );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1187
			});
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1188
		},
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1189
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1190
		/**
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1191
		 * Disable bulk selection checkboxes for menu items.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1192
		 *
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1193
		 * @since 5.8.0
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1194
		 */ 
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1195
		disableBulkSelection : function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1196
			var checkbox = $( '#menu-to-edit .menu-item-checkbox' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1197
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1198
			$( '#menu-to-edit' ).removeClass( 'bulk-selection' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1199
			$( '#nav-menu-bulk-actions-top' ).removeClass( 'bulk-selection' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1200
			$( '#nav-menu-bulk-actions-bottom' ).removeClass( 'bulk-selection' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1201
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1202
			if ( $( '.menu-items-delete' ).is( '[aria-describedby="pending-menu-items-to-delete"]' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1203
				$( '.menu-items-delete' ).removeAttr( 'aria-describedby' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1204
			}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1205
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1206
			$.each( checkbox, function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1207
				$(this).prop( 'disabled', true ).prop( 'checked', false );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1208
			});
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1209
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1210
			$( '.menu-items-delete' ).addClass( 'disabled' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1211
			$( '#pending-menu-items-to-delete ul' ).empty();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1212
		},
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1213
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1214
		/**
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1215
		 * Listen for state changes on bulk action checkboxes.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1216
		 *
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1217
		 * @since 5.8.0
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1218
		 */ 
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1219
		attachMenuCheckBoxListeners : function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1220
			var that = this;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1221
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1222
			$( '#menu-to-edit' ).on( 'change', '.menu-item-checkbox', function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1223
				that.setRemoveSelectedButtonStatus();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1224
			});
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1225
		},
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1226
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1227
		/**
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1228
		 * Create delete button to remove menu items from collection.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1229
		 *
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1230
		 * @since 5.8.0
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1231
		 */ 
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1232
		attachMenuItemDeleteButton : function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1233
			var that = this;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1234
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1235
			$( document ).on( 'click', '.menu-items-delete', function( e ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1236
				var itemsPendingDeletion, itemsPendingDeletionList, deletionSpeech;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1237
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1238
				e.preventDefault();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1239
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1240
				if ( ! $(this).hasClass( 'disabled' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1241
					$.each( $( '.menu-item-checkbox:checked' ), function( index, element ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1242
						$( element ).parents( 'li' ).find( 'a.item-delete' ).trigger( 'click' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1243
					});
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1244
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1245
					$( '.menu-items-delete' ).addClass( 'disabled' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1246
					$( '.bulk-select-switcher' ).prop( 'checked', false );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1247
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1248
					itemsPendingDeletion     = '';
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1249
					itemsPendingDeletionList = $( '#pending-menu-items-to-delete ul li' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1250
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1251
					$.each( itemsPendingDeletionList, function( index, element ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1252
						var itemName = $( element ).find( '.pending-menu-item-name' ).text();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1253
						var itemSpeech = menus.menuItemDeletion.replace( '%s', itemName );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1254
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1255
						itemsPendingDeletion += itemSpeech;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1256
						if ( ( index + 1 ) < itemsPendingDeletionList.length ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1257
							itemsPendingDeletion += ', ';
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1258
						}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1259
					});
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1260
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1261
					deletionSpeech = menus.itemsDeleted.replace( '%s', itemsPendingDeletion );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1262
					wp.a11y.speak( deletionSpeech, 'polite' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1263
					that.disableBulkSelection();
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1264
					$( '#menu-to-edit' ).updateParentDropdown();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1265
					$( '#menu-to-edit' ).updateOrderDropdown();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1266
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1267
			});
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1268
		},
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1269
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1270
		/**
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1271
		 * List menu items awaiting deletion.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1272
		 *
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1273
		 * @since 5.8.0
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1274
		 */ 
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1275
		attachPendingMenuItemsListForDeletion : function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1276
			$( '#post-body-content' ).on( 'change', '.menu-item-checkbox', function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1277
				var menuItemName, menuItemType, menuItemID, listedMenuItem;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1278
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1279
				if ( ! $( '.menu-items-delete' ).is( '[aria-describedby="pending-menu-items-to-delete"]' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1280
					$( '.menu-items-delete' ).attr( 'aria-describedby', 'pending-menu-items-to-delete' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1281
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1282
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1283
				menuItemName = $(this).next().text();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1284
				menuItemType = $(this).parent().next( '.item-controls' ).find( '.item-type' ).text();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1285
				menuItemID   = $(this).attr( 'data-menu-item-id' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1286
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1287
				listedMenuItem = $( '#pending-menu-items-to-delete ul' ).find( '[data-menu-item-id=' + menuItemID + ']' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1288
				if ( listedMenuItem.length > 0 ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1289
					listedMenuItem.remove();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1290
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1291
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1292
				if ( this.checked === true ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1293
					$( '#pending-menu-items-to-delete ul' ).append(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1294
						'<li data-menu-item-id="' + menuItemID + '">' +
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1295
							'<span class="pending-menu-item-name">' + menuItemName + '</span> ' +
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1296
							'<span class="pending-menu-item-type">(' + menuItemType + ')</span>' +
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1297
							'<span class="separator"></span>' +
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1298
						'</li>'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1299
					);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1300
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1301
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1302
				$( '#pending-menu-items-to-delete li .separator' ).html( ', ' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1303
				$( '#pending-menu-items-to-delete li .separator' ).last().html( '.' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1304
			});
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1305
		},
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1306
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1307
		/**
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1308
		 * Set status of bulk delete checkbox.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1309
		 *
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1310
		 * @since 5.8.0
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1311
		 */ 
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1312
		setBulkDeleteCheckboxStatus : function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1313
			var that = this;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1314
			var checkbox = $( '#menu-to-edit .menu-item-checkbox' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1315
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1316
			$.each( checkbox, function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1317
				if ( $(this).prop( 'disabled' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1318
					$(this).prop( 'disabled', false );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1319
				} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1320
					$(this).prop( 'disabled', true );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1321
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1322
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1323
				if ( $(this).is( ':checked' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1324
					$(this).prop( 'checked', false );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1325
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1326
			});
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1327
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1328
			that.setRemoveSelectedButtonStatus();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1329
		},
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1330
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1331
		/**
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1332
		 * Set status of menu items removal button.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1333
		 *
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1334
		 * @since 5.8.0
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1335
		 */ 
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1336
		setRemoveSelectedButtonStatus : function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1337
			var button = $( '.menu-items-delete' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1338
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1339
			if ( $( '.menu-item-checkbox:checked' ).length > 0 ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1340
				button.removeClass( 'disabled' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1341
			} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1342
				button.addClass( 'disabled' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1343
			}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1344
		},
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1345
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1346
		attachMenuSaveSubmitListeners : function() {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1347
			/*
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1348
			 * When a navigation menu is saved, store a JSON representation of all form data
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1349
			 * in a single input to avoid PHP `max_input_vars` limitations. See #14134.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1350
			 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1351
			$( '#update-nav-menu' ).on( 'submit', function() {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1352
				var navMenuData = $( '#update-nav-menu' ).serializeArray();
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1353
				$( '[name="nav-menu-data"]' ).val( JSON.stringify( navMenuData ) );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1354
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1355
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1356
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1357
		attachThemeLocationsListeners : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1358
			var loc = $('#nav-menu-theme-locations'), params = {};
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1359
			params.action = 'menu-locations-save';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1360
			params['menu-settings-column-nonce'] = $('#menu-settings-column-nonce').val();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1361
			loc.find('input[type="submit"]').on( 'click', function() {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1362
				loc.find('select').each(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1363
					params[this.name] = $(this).val();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1364
				});
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1365
				loc.find( '.spinner' ).addClass( 'is-active' );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1366
				$.post( ajaxurl, params, function() {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1367
					loc.find( '.spinner' ).removeClass( 'is-active' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1368
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1369
				return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1370
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1371
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1372
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1373
		attachQuickSearchListeners : function() {
9
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1374
			var searchTimer;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1375
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1376
			// Prevent form submission.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1377
			$( '#nav-menu-meta' ).on( 'submit', function( event ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1378
				event.preventDefault();
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1379
			});
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1380
9
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1381
			$( '#nav-menu-meta' ).on( 'input', '.quick-search', function() {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1382
				var $this = $( this );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1383
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1384
				$this.attr( 'autocomplete', 'off' );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1385
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1386
				if ( searchTimer ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1387
					clearTimeout( searchTimer );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1388
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1389
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1390
				searchTimer = setTimeout( function() {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1391
					api.updateQuickSearchResults( $this );
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1392
				}, 500 );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1393
			}).on( 'blur', '.quick-search', function() {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1394
				api.lastSearch = '';
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1395
			});
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1396
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1397
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1398
		updateQuickSearchResults : function(input) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1399
			var panel, params,
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1400
				minSearchLength = 2,
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1401
				q = input.val();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1402
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1403
			/*
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1404
			 * Minimum characters for a search. Also avoid a new Ajax search when
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1405
			 * the pressed key (e.g. arrows) doesn't change the searched term.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1406
			 */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1407
			if ( q.length < minSearchLength || api.lastSearch == q ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1408
				return;
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1409
			}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1410
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1411
			api.lastSearch = q;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1412
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1413
			panel = input.parents('.tabs-panel');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1414
			params = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1415
				'action': 'menu-quick-search',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1416
				'response-format': 'markup',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1417
				'menu': $('#menu').val(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1418
				'menu-settings-column-nonce': $('#menu-settings-column-nonce').val(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1419
				'q': q,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1420
				'type': input.attr('name')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1421
			};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1422
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1423
			$( '.spinner', panel ).addClass( 'is-active' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1424
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1425
			$.post( ajaxurl, params, function(menuMarkup) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1426
				api.processQuickSearchQueryResponse(menuMarkup, params, panel);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1427
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1428
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1429
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1430
		addCustomLink : function( processMethod ) {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1431
			var url = $('#custom-menu-item-url').val().toString(),
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1432
				label = $('#custom-menu-item-name').val(),
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1433
				urlRegex;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1434
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1435
			if ( '' !== url ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1436
				url = url.trim();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1437
			}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1438
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1439
			processMethod = processMethod || api.addMenuItemToBottom;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1440
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1441
			/*
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1442
			 * Allow URLs including:
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1443
			 * - http://example.com/
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1444
			 * - //example.com
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1445
			 * - /directory/
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1446
			 * - ?query-param
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1447
			 * - #target
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1448
			 * - mailto:foo@example.com
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1449
			 *
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1450
			 * Any further validation will be handled on the server when the setting is attempted to be saved,
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1451
			 * so this pattern does not need to be complete.
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1452
			 */
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1453
			urlRegex = /^((\w+:)?\/\/\w.*|\w+:(?!\/\/$)|\/|\?|#)/;
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1454
			if ( ! urlRegex.test( url ) ) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1455
				$('#customlinkdiv').addClass('form-invalid');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1456
				return false;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1457
			}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1458
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1459
			// Show the Ajax spinner.
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1460
			$( '.customlinkdiv .spinner' ).addClass( 'is-active' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1461
			this.addLinkToMenu( url, label, processMethod, function() {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1462
				// Remove the Ajax spinner.
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1463
				$( '.customlinkdiv .spinner' ).removeClass( 'is-active' );
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1464
				// Set custom link form back to defaults.
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1465
				$('#custom-menu-item-name').val('').trigger( 'blur' );
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1466
				$( '#custom-menu-item-url' ).val( '' ).attr( 'placeholder', 'https://' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1467
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1468
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1469
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1470
		addLinkToMenu : function(url, label, processMethod, callback) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1471
			processMethod = processMethod || api.addMenuItemToBottom;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1472
			callback = callback || function(){};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1473
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1474
			api.addItemToMenu({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1475
				'-1': {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1476
					'menu-item-type': 'custom',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1477
					'menu-item-url': url,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1478
					'menu-item-title': label
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1479
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1480
			}, processMethod, callback);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1481
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1482
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1483
		addItemToMenu : function(menuItem, processMethod, callback) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1484
			var menu = $('#menu').val(),
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1485
				nonce = $('#menu-settings-column-nonce').val(),
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1486
				params;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1487
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1488
			processMethod = processMethod || function(){};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1489
			callback = callback || function(){};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1490
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1491
			params = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1492
				'action': 'add-menu-item',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1493
				'menu': menu,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1494
				'menu-settings-column-nonce': nonce,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1495
				'menu-item': menuItem
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1496
			};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1497
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1498
			$.post( ajaxurl, params, function(menuMarkup) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1499
				var ins = $('#menu-instructions');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1500
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1501
				menuMarkup = menuMarkup || '';
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1502
				menuMarkup = menuMarkup.toString().trim(); // Trim leading whitespaces.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1503
				processMethod(menuMarkup, params);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1504
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1505
				// Make it stand out a bit more visually, by adding a fadeIn.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1506
				$( 'li.pending' ).hide().fadeIn('slow');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1507
				$( '.drag-instructions' ).show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1508
				if( ! ins.hasClass( 'menu-instructions-inactive' ) && ins.siblings().length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1509
					ins.addClass( 'menu-instructions-inactive' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1510
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1511
				callback();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1512
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1513
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1514
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1515
		/**
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1516
		 * Process the add menu item request response into menu list item. Appends to menu.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1517
		 *
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1518
		 * @param {string} menuMarkup The text server response of menu item markup.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1519
		 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1520
		 * @fires document#menu-item-added Passes menuMarkup as a jQuery object.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1521
		 */
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1522
		addMenuItemToBottom : function( menuMarkup ) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1523
			var $menuMarkup = $( menuMarkup );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1524
			$menuMarkup.hideAdvancedMenuItemFields().appendTo( api.targetList );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1525
			api.refreshKeyboardAccessibility();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1526
			api.refreshAdvancedAccessibility();
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1527
			wp.a11y.speak( menus.itemAdded );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1528
			$( document ).trigger( 'menu-item-added', [ $menuMarkup ] );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1529
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1530
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1531
		/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1532
		 * Process the add menu item request response into menu list item. Prepends to menu.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1533
		 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1534
		 * @param {string} menuMarkup The text server response of menu item markup.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1535
		 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1536
		 * @fires document#menu-item-added Passes menuMarkup as a jQuery object.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1537
		 */
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1538
		addMenuItemToTop : function( menuMarkup ) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1539
			var $menuMarkup = $( menuMarkup );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1540
			$menuMarkup.hideAdvancedMenuItemFields().prependTo( api.targetList );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1541
			api.refreshKeyboardAccessibility();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1542
			api.refreshAdvancedAccessibility();
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1543
			wp.a11y.speak( menus.itemAdded );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1544
			$( document ).trigger( 'menu-item-added', [ $menuMarkup ] );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1545
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1546
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1547
		attachUnsavedChangesListener : function() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1548
			$('#menu-management input, #menu-management select, #menu-management, #menu-management textarea, .menu-location-menus select').on( 'change', function(){
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1549
				api.registerChange();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1550
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1551
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1552
			if ( 0 !== $('#menu-to-edit').length || 0 !== $('.menu-location-menus select').length ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1553
				window.onbeforeunload = function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1554
					if ( api.menusChanged )
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1555
						return wp.i18n.__( 'The changes you made will be lost if you navigate away from this page.' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1556
				};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1557
			} else {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1558
				// Make the post boxes read-only, as they can't be used yet.
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1559
				$( '#menu-settings-column' ).find( 'input,select' ).end().find( 'a' ).attr( 'href', '#' ).off( 'click' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1560
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1561
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1562
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1563
		registerChange : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1564
			api.menusChanged = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1565
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1566
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1567
		attachTabsPanelListeners : function() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1568
			$('#menu-settings-column').on('click', function(e) {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1569
				var selectAreaMatch, selectAll, panelId, wrapper, items,
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1570
					target = $(e.target);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1571
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1572
				if ( target.hasClass('nav-tab-link') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1573
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1574
					panelId = target.data( 'type' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1575
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1576
					wrapper = target.parents('.accordion-section-content').first();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1577
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1578
					// Upon changing tabs, we want to uncheck all checkboxes.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1579
					$( 'input', wrapper ).prop( 'checked', false );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1580
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1581
					$('.tabs-panel-active', wrapper).removeClass('tabs-panel-active').addClass('tabs-panel-inactive');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1582
					$('#' + panelId, wrapper).removeClass('tabs-panel-inactive').addClass('tabs-panel-active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1583
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1584
					$('.tabs', wrapper).removeClass('tabs');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1585
					target.parent().addClass('tabs');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1586
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1587
					// Select the search bar.
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1588
					$('.quick-search', wrapper).trigger( 'focus' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1589
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1590
					// Hide controls in the search tab if no items found.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1591
					if ( ! wrapper.find( '.tabs-panel-active .menu-item-title' ).length ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1592
						wrapper.addClass( 'has-no-menu-item' );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1593
					} else {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1594
						wrapper.removeClass( 'has-no-menu-item' );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1595
					}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1596
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1597
					e.preventDefault();
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1598
				} else if ( target.hasClass( 'select-all' ) ) {
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1599
					selectAreaMatch = target.closest( '.button-controls' ).data( 'items-type' );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1600
					if ( selectAreaMatch ) {
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1601
						items = $( '#' + selectAreaMatch + ' .tabs-panel-active .menu-item-title input' );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1602
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1603
						if ( items.length === items.filter( ':checked' ).length && ! target.is( ':checked' ) ) {
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1604
							items.prop( 'checked', false );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1605
						} else if ( target.is( ':checked' ) ) {
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1606
							items.prop( 'checked', true );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1607
						}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1608
					}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1609
				} else if ( target.hasClass( 'menu-item-checkbox' ) ) {
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1610
					selectAreaMatch = target.closest( '.tabs-panel-active' ).parent().attr( 'id' );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1611
					if ( selectAreaMatch ) {
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1612
						items     = $( '#' + selectAreaMatch + ' .tabs-panel-active .menu-item-title input' );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1613
						selectAll = $( '.button-controls[data-items-type="' + selectAreaMatch + '"] .select-all' );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1614
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1615
						if ( items.length === items.filter( ':checked' ).length && ! selectAll.is( ':checked' ) ) {
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1616
							selectAll.prop( 'checked', true );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1617
						} else if ( selectAll.is( ':checked' ) ) {
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1618
							selectAll.prop( 'checked', false );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1619
						}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1620
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1621
				} else if ( target.hasClass('submit-add-to-menu') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1622
					api.registerChange();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1623
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1624
					if ( e.target.id && 'submit-customlinkdiv' == e.target.id )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1625
						api.addCustomLink( api.addMenuItemToBottom );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1626
					else if ( e.target.id && -1 != e.target.id.indexOf('submit-') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1627
						$('#' + e.target.id.replace(/submit-/, '')).addSelectedToMenu( api.addMenuItemToBottom );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1628
					return false;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1629
				}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1630
			});
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1631
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1632
			/*
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1633
			 * Delegate the `click` event and attach it just to the pagination
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1634
			 * links thus excluding the current page `<span>`. See ticket #35577.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1635
			 */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1636
			$( '#nav-menu-meta' ).on( 'click', 'a.page-numbers', function() {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1637
				var $container = $( this ).closest( '.inside' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1638
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1639
				$.post( ajaxurl, this.href.replace( /.*\?/, '' ).replace( /action=([^&]*)/, '' ) + '&action=menu-get-metabox',
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1640
					function( resp ) {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1641
						var metaBoxData = JSON.parse( resp ),
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1642
							toReplace;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1643
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1644
						if ( -1 === resp.indexOf( 'replace-id' ) ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1645
							return;
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1646
						}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1647
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1648
						// Get the post type menu meta box to update.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1649
						toReplace = document.getElementById( metaBoxData['replace-id'] );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1650
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1651
						if ( ! metaBoxData.markup || ! toReplace ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1652
							return;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1653
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1654
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1655
						// Update the post type menu meta box with new content from the response.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1656
						$container.html( metaBoxData.markup );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1657
					}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1658
				);
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1659
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1660
				return false;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1661
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1662
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1663
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1664
		eventOnClickEditLink : function(clickedEl) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1665
			var settings, item,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1666
			matchedSection = /#(.*)$/.exec(clickedEl.href);
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1667
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1668
			if ( matchedSection && matchedSection[1] ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1669
				settings = $('#'+matchedSection[1]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1670
				item = settings.parent();
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1671
				if( 0 !== item.length ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1672
					if( item.hasClass('menu-item-edit-inactive') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1673
						if( ! settings.data('menu-item-data') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1674
							settings.data( 'menu-item-data', settings.getItemData() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1675
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1676
						settings.slideDown('fast');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1677
						item.removeClass('menu-item-edit-inactive')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1678
							.addClass('menu-item-edit-active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1679
					} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1680
						settings.slideUp('fast');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1681
						item.removeClass('menu-item-edit-active')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1682
							.addClass('menu-item-edit-inactive');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1683
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1684
					return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1685
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1686
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1687
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1688
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1689
		eventOnClickCancelLink : function(clickedEl) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1690
			var settings = $( clickedEl ).closest( '.menu-item-settings' ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1691
				thisMenuItem = $( clickedEl ).closest( '.menu-item' );
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1692
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1693
			thisMenuItem.removeClass( 'menu-item-edit-active' ).addClass( 'menu-item-edit-inactive' );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1694
			settings.setItemData( settings.data( 'menu-item-data' ) ).hide();
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1695
			// Restore the title of the currently active/expanded menu item.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1696
			thisMenuItem.find( '.menu-item-title' ).text( settings.data( 'menu-item-data' )['menu-item-title'] );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1697
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1698
			return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1699
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1700
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1701
		eventOnClickMenuSave : function() {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1702
			var locs = '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1703
			menuName = $('#menu-name'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1704
			menuNameVal = menuName.val();
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1705
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1706
			// Cancel and warn if invalid menu name.
9
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1707
			if ( ! menuNameVal || ! menuNameVal.replace( /\s+/, '' ) ) {
177826044cd9 upgrade wordpress to 5.2.3
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1708
				menuName.parent().addClass( 'form-invalid' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1709
				return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1710
			}
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1711
			// Copy menu theme locations.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1712
			$('#nav-menu-theme-locations select').each(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1713
				locs += '<input type="hidden" name="' + this.name + '" value="' + $(this).val() + '" />';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1714
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1715
			$('#update-nav-menu').append( locs );
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1716
			// Update menu item position data.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1717
			api.menuList.find('.menu-item-data-position').val( function(index) { return index + 1; } );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1718
			window.onbeforeunload = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1719
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1720
			return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1721
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1722
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1723
		eventOnClickMenuDelete : function() {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1724
			// Delete warning AYS.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1725
			if ( window.confirm( wp.i18n.__( 'You are about to permanently delete this menu.\n\'Cancel\' to stop, \'OK\' to delete.' ) ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1726
				window.onbeforeunload = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1727
				return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1728
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1729
			return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1730
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1731
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1732
		eventOnClickMenuItemDelete : function(clickedEl) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1733
			var itemID = parseInt(clickedEl.id.replace('delete-', ''), 10);
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1734
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1735
			api.removeMenuItem( $('#menu-item-' + itemID) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1736
			api.registerChange();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1737
			return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1738
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1739
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1740
		/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1741
		 * Process the quick search response into a search result
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1742
		 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1743
		 * @param string resp The server response to the query.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1744
		 * @param object req The request arguments.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1745
		 * @param jQuery panel The tabs panel we're searching in.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1746
		 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1747
		processQuickSearchQueryResponse : function(resp, req, panel) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1748
			var matched, newID,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1749
			takenIDs = {},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1750
			form = document.getElementById('nav-menu-meta'),
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1751
			pattern = /menu-item[(\[^]\]*/,
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1752
			$items = $('<div>').html(resp).find('li'),
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1753
			wrapper = panel.closest( '.accordion-section-content' ),
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1754
			selectAll = wrapper.find( '.button-controls .select-all' ),
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1755
			$item;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1756
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1757
			if( ! $items.length ) {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1758
				$('.categorychecklist', panel).html( '<li><p>' + wp.i18n.__( 'No results found.' ) + '</p></li>' );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1759
				$( '.spinner', panel ).removeClass( 'is-active' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1760
				wrapper.addClass( 'has-no-menu-item' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1761
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1762
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1763
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1764
			$items.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1765
				$item = $(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1766
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1767
				// Make a unique DB ID number.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1768
				matched = pattern.exec($item.html());
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1769
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1770
				if ( matched && matched[1] ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1771
					newID = matched[1];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1772
					while( form.elements['menu-item[' + newID + '][menu-item-type]'] || takenIDs[ newID ] ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1773
						newID--;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1774
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1775
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1776
					takenIDs[newID] = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1777
					if ( newID != matched[1] ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1778
						$item.html( $item.html().replace(new RegExp(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1779
							'menu-item\\[' + matched[1] + '\\]', 'g'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1780
							'menu-item[' + newID + ']'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1781
						) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1782
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1783
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1784
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1785
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1786
			$('.categorychecklist', panel).html( $items );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1787
			$( '.spinner', panel ).removeClass( 'is-active' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1788
			wrapper.removeClass( 'has-no-menu-item' );
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1789
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1790
			if ( selectAll.is( ':checked' ) ) {
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1791
				selectAll.prop( 'checked', false );
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1792
			}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1793
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1794
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1795
		/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1796
		 * Remove a menu item.
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1797
		 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 9
diff changeset
  1798
		 * @param {Object} el The element to be removed as a jQuery object.
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1799
		 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1800
		 * @fires document#menu-removing-item Passes the element to be removed.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1801
		 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1802
		removeMenuItem : function(el) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1803
			var children = el.childMenuItems();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1804
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1805
			$( document ).trigger( 'menu-removing-item', [ el ] );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1806
			el.addClass('deleting').animate({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1807
					opacity : 0,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1808
					height: 0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1809
				}, 350, function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1810
					var ins = $('#menu-instructions');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1811
					el.remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1812
					children.shiftDepthClass( -1 ).updateParentMenuItemDBId();
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1813
					if ( 0 === $( '#menu-to-edit li' ).length ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1814
						$( '.drag-instructions' ).hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1815
						ins.removeClass( 'menu-instructions-inactive' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1816
					}
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1817
					api.refreshAdvancedAccessibility();
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1818
					wp.a11y.speak( menus.itemRemoved );
22
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1819
					$( '#menu-to-edit' ).updateParentDropdown();
8c2e4d02f4ef Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents: 21
diff changeset
  1820
					$( '#menu-to-edit' ).updateOrderDropdown();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1821
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1822
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1823
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1824
		depthToPx : function(depth) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1825
			return depth * api.options.menuItemDepthPerLevel;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1826
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1827
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1828
		pxToDepth : function(px) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1829
			return Math.floor(px / api.options.menuItemDepthPerLevel);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1830
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1831
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1832
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1833
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1834
	$( function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1835
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1836
		wpNavMenu.init();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1837
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1838
		// Prevent focused element from being hidden by the sticky footer.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1839
		$( '.menu-edit a, .menu-edit button, .menu-edit input, .menu-edit textarea, .menu-edit select' ).on('focus', function() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1840
			if ( window.innerWidth >= 783 ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1841
				var navMenuHeight = $( '#nav-menu-footer' ).height() + 20;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1842
				var bottomOffset = $(this).offset().top - ( $(window).scrollTop() + $(window).height() - $(this).height() );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1843
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1844
				if ( bottomOffset > 0 ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1845
					bottomOffset = 0;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1846
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1847
				bottomOffset = bottomOffset * -1;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1848
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1849
				if( bottomOffset < navMenuHeight ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1850
					var scrollTop = $(document).scrollTop();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1851
					$(document).scrollTop( scrollTop + ( navMenuHeight - bottomOffset ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1852
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1853
			}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1854
		});
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1855
	});
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1856
21
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1857
	// Show bulk action.
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1858
	$( document ).on( 'menu-item-added', function() {
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1859
		if ( ! $( '.bulk-actions' ).is( ':visible' ) ) {
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1860
			$( '.bulk-actions' ).show();
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1861
		}
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1862
	} );
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1863
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1864
	// Hide bulk action.
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1865
	$( document ).on( 'menu-removing-item', function( e, el ) {
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1866
		var menuElement = $( el ).parents( '#menu-to-edit' );
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1867
		if ( menuElement.find( 'li' ).length === 1 && $( '.bulk-actions' ).is( ':visible' ) ) {
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1868
			$( '.bulk-actions' ).hide();
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1869
		}
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1870
	} );
48c4eec2b7e6 Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
  1871
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1872
})(jQuery);