Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-admin/js
File: customize-nav-menus.js
} );
[1500] Fix | Delete
control.container.find( '.edit-menu' ).on( 'click', function() {
[1501] Fix | Delete
var menuId = control.setting();
[1502] Fix | Delete
api.section( 'nav_menu[' + menuId + ']' ).focus();
[1503] Fix | Delete
});
[1504] Fix | Delete
control.setting.bind( 'change', function() {
[1505] Fix | Delete
var menuIsSelected = 0 !== control.setting();
[1506] Fix | Delete
control.container.find( '.create-menu' ).toggleClass( 'hidden', menuIsSelected );
[1507] Fix | Delete
control.container.find( '.edit-menu' ).toggleClass( 'hidden', ! menuIsSelected );
[1508] Fix | Delete
});
[1509] Fix | Delete
[1510] Fix | Delete
// Add/remove menus from the available options when they are added and removed.
[1511] Fix | Delete
api.bind( 'add', function( setting ) {
[1512] Fix | Delete
var option, menuId, matches = setting.id.match( navMenuIdRegex );
[1513] Fix | Delete
if ( ! matches || false === setting() ) {
[1514] Fix | Delete
return;
[1515] Fix | Delete
}
[1516] Fix | Delete
menuId = matches[1];
[1517] Fix | Delete
option = new Option( displayNavMenuName( setting().name ), menuId );
[1518] Fix | Delete
control.container.find( 'select' ).append( option );
[1519] Fix | Delete
});
[1520] Fix | Delete
api.bind( 'remove', function( setting ) {
[1521] Fix | Delete
var menuId, matches = setting.id.match( navMenuIdRegex );
[1522] Fix | Delete
if ( ! matches ) {
[1523] Fix | Delete
return;
[1524] Fix | Delete
}
[1525] Fix | Delete
menuId = parseInt( matches[1], 10 );
[1526] Fix | Delete
if ( control.setting() === menuId ) {
[1527] Fix | Delete
control.setting.set( '' );
[1528] Fix | Delete
}
[1529] Fix | Delete
control.container.find( 'option[value=' + menuId + ']' ).remove();
[1530] Fix | Delete
});
[1531] Fix | Delete
api.bind( 'change', function( setting ) {
[1532] Fix | Delete
var menuId, matches = setting.id.match( navMenuIdRegex );
[1533] Fix | Delete
if ( ! matches ) {
[1534] Fix | Delete
return;
[1535] Fix | Delete
}
[1536] Fix | Delete
menuId = parseInt( matches[1], 10 );
[1537] Fix | Delete
if ( false === setting() ) {
[1538] Fix | Delete
if ( control.setting() === menuId ) {
[1539] Fix | Delete
control.setting.set( '' );
[1540] Fix | Delete
}
[1541] Fix | Delete
control.container.find( 'option[value=' + menuId + ']' ).remove();
[1542] Fix | Delete
} else {
[1543] Fix | Delete
control.container.find( 'option[value=' + menuId + ']' ).text( displayNavMenuName( setting().name ) );
[1544] Fix | Delete
}
[1545] Fix | Delete
});
[1546] Fix | Delete
}
[1547] Fix | Delete
});
[1548] Fix | Delete
[1549] Fix | Delete
api.Menus.MenuItemControl = api.Control.extend(/** @lends wp.customize.Menus.MenuItemControl.prototype */{
[1550] Fix | Delete
[1551] Fix | Delete
/**
[1552] Fix | Delete
* wp.customize.Menus.MenuItemControl
[1553] Fix | Delete
*
[1554] Fix | Delete
* Customizer control for menu items.
[1555] Fix | Delete
* Note that 'menu_item' must match the WP_Customize_Menu_Item_Control::$type.
[1556] Fix | Delete
*
[1557] Fix | Delete
* @constructs wp.customize.Menus.MenuItemControl
[1558] Fix | Delete
* @augments wp.customize.Control
[1559] Fix | Delete
*
[1560] Fix | Delete
* @inheritDoc
[1561] Fix | Delete
*/
[1562] Fix | Delete
initialize: function( id, options ) {
[1563] Fix | Delete
var control = this;
[1564] Fix | Delete
control.expanded = new api.Value( false );
[1565] Fix | Delete
control.expandedArgumentsQueue = [];
[1566] Fix | Delete
control.expanded.bind( function( expanded ) {
[1567] Fix | Delete
var args = control.expandedArgumentsQueue.shift();
[1568] Fix | Delete
args = $.extend( {}, control.defaultExpandedArguments, args );
[1569] Fix | Delete
control.onChangeExpanded( expanded, args );
[1570] Fix | Delete
});
[1571] Fix | Delete
api.Control.prototype.initialize.call( control, id, options );
[1572] Fix | Delete
control.active.validate = function() {
[1573] Fix | Delete
var value, section = api.section( control.section() );
[1574] Fix | Delete
if ( section ) {
[1575] Fix | Delete
value = section.active();
[1576] Fix | Delete
} else {
[1577] Fix | Delete
value = false;
[1578] Fix | Delete
}
[1579] Fix | Delete
return value;
[1580] Fix | Delete
};
[1581] Fix | Delete
},
[1582] Fix | Delete
[1583] Fix | Delete
/**
[1584] Fix | Delete
* Set up the initial state of the screen reader accessibility information for menu items.
[1585] Fix | Delete
*
[1586] Fix | Delete
* @since 6.6.0
[1587] Fix | Delete
*/
[1588] Fix | Delete
initAccessibility: function() {
[1589] Fix | Delete
var control = this,
[1590] Fix | Delete
menu = $( '#menu-to-edit' );
[1591] Fix | Delete
[1592] Fix | Delete
// Refresh the accessibility when the user comes close to the item in any way.
[1593] Fix | Delete
menu.on( 'mouseenter.refreshAccessibility focus.refreshAccessibility touchstart.refreshAccessibility', '.menu-item', function(){
[1594] Fix | Delete
control.refreshAdvancedAccessibilityOfItem( $( this ).find( 'button.item-edit' ) );
[1595] Fix | Delete
} );
[1596] Fix | Delete
[1597] Fix | Delete
// We have to update on click as well because we might hover first, change the item, and then click.
[1598] Fix | Delete
menu.on( 'click', 'button.item-edit', function() {
[1599] Fix | Delete
control.refreshAdvancedAccessibilityOfItem( $( this ) );
[1600] Fix | Delete
} );
[1601] Fix | Delete
},
[1602] Fix | Delete
[1603] Fix | Delete
/**
[1604] Fix | Delete
* refreshAdvancedAccessibilityOfItem( [itemToRefresh] )
[1605] Fix | Delete
*
[1606] Fix | Delete
* Refreshes advanced accessibility buttons for one menu item.
[1607] Fix | Delete
* Shows or hides buttons based on the location of the menu item.
[1608] Fix | Delete
*
[1609] Fix | Delete
* @param {Object} itemToRefresh The menu item that might need its advanced accessibility buttons refreshed
[1610] Fix | Delete
*
[1611] Fix | Delete
* @since 6.6.0
[1612] Fix | Delete
*/
[1613] Fix | Delete
refreshAdvancedAccessibilityOfItem: function( itemToRefresh ) {
[1614] Fix | Delete
// Only refresh accessibility when necessary.
[1615] Fix | Delete
if ( true !== $( itemToRefresh ).data( 'needs_accessibility_refresh' ) ) {
[1616] Fix | Delete
return;
[1617] Fix | Delete
}
[1618] Fix | Delete
[1619] Fix | Delete
var primaryItems, itemPosition, title,
[1620] Fix | Delete
parentItem, parentItemId, parentItemName, subItems, totalSubItems,
[1621] Fix | Delete
$this = $( itemToRefresh ),
[1622] Fix | Delete
menuItem = $this.closest( 'li.menu-item' ).first(),
[1623] Fix | Delete
depth = menuItem.menuItemDepth(),
[1624] Fix | Delete
isPrimaryMenuItem = ( 0 === depth ),
[1625] Fix | Delete
itemName = $this.closest( '.menu-item-handle' ).find( '.menu-item-title' ).text(),
[1626] Fix | Delete
menuItemType = $this.closest( '.menu-item-handle' ).find( '.item-type' ).text(),
[1627] Fix | Delete
totalMenuItems = $( '#menu-to-edit li' ).length;
[1628] Fix | Delete
[1629] Fix | Delete
if ( isPrimaryMenuItem ) {
[1630] Fix | Delete
primaryItems = $( '.menu-item-depth-0' ),
[1631] Fix | Delete
itemPosition = primaryItems.index( menuItem ) + 1,
[1632] Fix | Delete
totalMenuItems = primaryItems.length,
[1633] Fix | Delete
// String together help text for primary menu items.
[1634] Fix | Delete
title = menus.menuFocus.replace( '%1$s', itemName ).replace( '%2$s', menuItemType ).replace( '%3$d', itemPosition ).replace( '%4$d', totalMenuItems );
[1635] Fix | Delete
} else {
[1636] Fix | Delete
parentItem = menuItem.prevAll( '.menu-item-depth-' + parseInt( depth - 1, 10 ) ).first(),
[1637] Fix | Delete
parentItemId = parentItem.find( '.menu-item-data-db-id' ).val(),
[1638] Fix | Delete
parentItemName = parentItem.find( '.menu-item-title' ).text(),
[1639] Fix | Delete
subItems = $( '.menu-item .menu-item-data-parent-id[value="' + parentItemId + '"]' ),
[1640] Fix | Delete
totalSubItems = subItems.length,
[1641] Fix | Delete
itemPosition = $( subItems.parents( '.menu-item' ).get().reverse() ).index( menuItem ) + 1;
[1642] Fix | Delete
[1643] Fix | Delete
// String together help text for sub menu items.
[1644] Fix | Delete
if ( depth < 2 ) {
[1645] Fix | Delete
title = menus.subMenuFocus.replace( '%1$s', itemName ).replace( '%2$s', menuItemType ).replace( '%3$d', itemPosition ).replace( '%4$d', totalSubItems ).replace( '%5$s', parentItemName );
[1646] Fix | Delete
} else {
[1647] Fix | Delete
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 );
[1648] Fix | Delete
}
[1649] Fix | Delete
}
[1650] Fix | Delete
[1651] Fix | Delete
$this.find( '.screen-reader-text' ).text( title );
[1652] Fix | Delete
[1653] Fix | Delete
// Mark this item's accessibility as refreshed.
[1654] Fix | Delete
$this.data( 'needs_accessibility_refresh', false );
[1655] Fix | Delete
},
[1656] Fix | Delete
[1657] Fix | Delete
/**
[1658] Fix | Delete
* Override the embed() method to do nothing,
[1659] Fix | Delete
* so that the control isn't embedded on load,
[1660] Fix | Delete
* unless the containing section is already expanded.
[1661] Fix | Delete
*
[1662] Fix | Delete
* @since 4.3.0
[1663] Fix | Delete
*/
[1664] Fix | Delete
embed: function() {
[1665] Fix | Delete
var control = this,
[1666] Fix | Delete
sectionId = control.section(),
[1667] Fix | Delete
section;
[1668] Fix | Delete
if ( ! sectionId ) {
[1669] Fix | Delete
return;
[1670] Fix | Delete
}
[1671] Fix | Delete
section = api.section( sectionId );
[1672] Fix | Delete
if ( ( section && section.expanded() ) || api.settings.autofocus.control === control.id ) {
[1673] Fix | Delete
control.actuallyEmbed();
[1674] Fix | Delete
}
[1675] Fix | Delete
},
[1676] Fix | Delete
[1677] Fix | Delete
/**
[1678] Fix | Delete
* This function is called in Section.onChangeExpanded() so the control
[1679] Fix | Delete
* will only get embedded when the Section is first expanded.
[1680] Fix | Delete
*
[1681] Fix | Delete
* @since 4.3.0
[1682] Fix | Delete
*/
[1683] Fix | Delete
actuallyEmbed: function() {
[1684] Fix | Delete
var control = this;
[1685] Fix | Delete
if ( 'resolved' === control.deferred.embedded.state() ) {
[1686] Fix | Delete
return;
[1687] Fix | Delete
}
[1688] Fix | Delete
control.renderContent();
[1689] Fix | Delete
control.deferred.embedded.resolve(); // This triggers control.ready().
[1690] Fix | Delete
[1691] Fix | Delete
// Mark all menu items as unprocessed.
[1692] Fix | Delete
$( 'button.item-edit' ).data( 'needs_accessibility_refresh', true );
[1693] Fix | Delete
},
[1694] Fix | Delete
[1695] Fix | Delete
/**
[1696] Fix | Delete
* Set up the control.
[1697] Fix | Delete
*/
[1698] Fix | Delete
ready: function() {
[1699] Fix | Delete
if ( 'undefined' === typeof this.params.menu_item_id ) {
[1700] Fix | Delete
throw new Error( 'params.menu_item_id was not defined' );
[1701] Fix | Delete
}
[1702] Fix | Delete
[1703] Fix | Delete
this._setupControlToggle();
[1704] Fix | Delete
this._setupReorderUI();
[1705] Fix | Delete
this._setupUpdateUI();
[1706] Fix | Delete
this._setupRemoveUI();
[1707] Fix | Delete
this._setupLinksUI();
[1708] Fix | Delete
this._setupTitleUI();
[1709] Fix | Delete
},
[1710] Fix | Delete
[1711] Fix | Delete
/**
[1712] Fix | Delete
* Show/hide the settings when clicking on the menu item handle.
[1713] Fix | Delete
*/
[1714] Fix | Delete
_setupControlToggle: function() {
[1715] Fix | Delete
var control = this;
[1716] Fix | Delete
[1717] Fix | Delete
this.container.find( '.menu-item-handle' ).on( 'click', function( e ) {
[1718] Fix | Delete
e.preventDefault();
[1719] Fix | Delete
e.stopPropagation();
[1720] Fix | Delete
var menuControl = control.getMenuControl(),
[1721] Fix | Delete
isDeleteBtn = $( e.target ).is( '.item-delete, .item-delete *' ),
[1722] Fix | Delete
isAddNewBtn = $( e.target ).is( '.add-new-menu-item, .add-new-menu-item *' );
[1723] Fix | Delete
[1724] Fix | Delete
if ( $( 'body' ).hasClass( 'adding-menu-items' ) && ! isDeleteBtn && ! isAddNewBtn ) {
[1725] Fix | Delete
api.Menus.availableMenuItemsPanel.close();
[1726] Fix | Delete
}
[1727] Fix | Delete
[1728] Fix | Delete
if ( menuControl.isReordering || menuControl.isSorting ) {
[1729] Fix | Delete
return;
[1730] Fix | Delete
}
[1731] Fix | Delete
control.toggleForm();
[1732] Fix | Delete
} );
[1733] Fix | Delete
},
[1734] Fix | Delete
[1735] Fix | Delete
/**
[1736] Fix | Delete
* Set up the menu-item-reorder-nav
[1737] Fix | Delete
*/
[1738] Fix | Delete
_setupReorderUI: function() {
[1739] Fix | Delete
var control = this, template, $reorderNav;
[1740] Fix | Delete
[1741] Fix | Delete
template = wp.template( 'menu-item-reorder-nav' );
[1742] Fix | Delete
[1743] Fix | Delete
// Add the menu item reordering elements to the menu item control.
[1744] Fix | Delete
control.container.find( '.item-controls' ).after( template );
[1745] Fix | Delete
[1746] Fix | Delete
// Handle clicks for up/down/left-right on the reorder nav.
[1747] Fix | Delete
$reorderNav = control.container.find( '.menu-item-reorder-nav' );
[1748] Fix | Delete
$reorderNav.find( '.menus-move-up, .menus-move-down, .menus-move-left, .menus-move-right' ).on( 'click', function() {
[1749] Fix | Delete
var moveBtn = $( this );
[1750] Fix | Delete
control.params.depth = control.getDepth();
[1751] Fix | Delete
[1752] Fix | Delete
moveBtn.focus();
[1753] Fix | Delete
[1754] Fix | Delete
var isMoveUp = moveBtn.is( '.menus-move-up' ),
[1755] Fix | Delete
isMoveDown = moveBtn.is( '.menus-move-down' ),
[1756] Fix | Delete
isMoveLeft = moveBtn.is( '.menus-move-left' ),
[1757] Fix | Delete
isMoveRight = moveBtn.is( '.menus-move-right' );
[1758] Fix | Delete
[1759] Fix | Delete
if ( isMoveUp ) {
[1760] Fix | Delete
control.moveUp();
[1761] Fix | Delete
} else if ( isMoveDown ) {
[1762] Fix | Delete
control.moveDown();
[1763] Fix | Delete
} else if ( isMoveLeft ) {
[1764] Fix | Delete
control.moveLeft();
[1765] Fix | Delete
} else if ( isMoveRight ) {
[1766] Fix | Delete
control.moveRight();
[1767] Fix | Delete
control.params.depth += 1;
[1768] Fix | Delete
}
[1769] Fix | Delete
[1770] Fix | Delete
moveBtn.focus(); // Re-focus after the container was moved.
[1771] Fix | Delete
[1772] Fix | Delete
// Mark all menu items as unprocessed.
[1773] Fix | Delete
$( 'button.item-edit' ).data( 'needs_accessibility_refresh', true );
[1774] Fix | Delete
} );
[1775] Fix | Delete
},
[1776] Fix | Delete
[1777] Fix | Delete
/**
[1778] Fix | Delete
* Set up event handlers for menu item updating.
[1779] Fix | Delete
*/
[1780] Fix | Delete
_setupUpdateUI: function() {
[1781] Fix | Delete
var control = this,
[1782] Fix | Delete
settingValue = control.setting(),
[1783] Fix | Delete
updateNotifications;
[1784] Fix | Delete
[1785] Fix | Delete
control.elements = {};
[1786] Fix | Delete
control.elements.url = new api.Element( control.container.find( '.edit-menu-item-url' ) );
[1787] Fix | Delete
control.elements.title = new api.Element( control.container.find( '.edit-menu-item-title' ) );
[1788] Fix | Delete
control.elements.attr_title = new api.Element( control.container.find( '.edit-menu-item-attr-title' ) );
[1789] Fix | Delete
control.elements.target = new api.Element( control.container.find( '.edit-menu-item-target' ) );
[1790] Fix | Delete
control.elements.classes = new api.Element( control.container.find( '.edit-menu-item-classes' ) );
[1791] Fix | Delete
control.elements.xfn = new api.Element( control.container.find( '.edit-menu-item-xfn' ) );
[1792] Fix | Delete
control.elements.description = new api.Element( control.container.find( '.edit-menu-item-description' ) );
[1793] Fix | Delete
// @todo Allow other elements, added by plugins, to be automatically picked up here;
[1794] Fix | Delete
// allow additional values to be added to setting array.
[1795] Fix | Delete
[1796] Fix | Delete
_.each( control.elements, function( element, property ) {
[1797] Fix | Delete
element.bind(function( value ) {
[1798] Fix | Delete
if ( element.element.is( 'input[type=checkbox]' ) ) {
[1799] Fix | Delete
value = ( value ) ? element.element.val() : '';
[1800] Fix | Delete
}
[1801] Fix | Delete
[1802] Fix | Delete
var settingValue = control.setting();
[1803] Fix | Delete
if ( settingValue && settingValue[ property ] !== value ) {
[1804] Fix | Delete
settingValue = _.clone( settingValue );
[1805] Fix | Delete
settingValue[ property ] = value;
[1806] Fix | Delete
control.setting.set( settingValue );
[1807] Fix | Delete
}
[1808] Fix | Delete
});
[1809] Fix | Delete
if ( settingValue ) {
[1810] Fix | Delete
if ( ( property === 'classes' || property === 'xfn' ) && _.isArray( settingValue[ property ] ) ) {
[1811] Fix | Delete
element.set( settingValue[ property ].join( ' ' ) );
[1812] Fix | Delete
} else {
[1813] Fix | Delete
element.set( settingValue[ property ] );
[1814] Fix | Delete
}
[1815] Fix | Delete
}
[1816] Fix | Delete
});
[1817] Fix | Delete
[1818] Fix | Delete
control.setting.bind(function( to, from ) {
[1819] Fix | Delete
var itemId = control.params.menu_item_id,
[1820] Fix | Delete
followingSiblingItemControls = [],
[1821] Fix | Delete
childrenItemControls = [],
[1822] Fix | Delete
menuControl;
[1823] Fix | Delete
[1824] Fix | Delete
if ( false === to ) {
[1825] Fix | Delete
menuControl = api.control( 'nav_menu[' + String( from.nav_menu_term_id ) + ']' );
[1826] Fix | Delete
control.container.remove();
[1827] Fix | Delete
[1828] Fix | Delete
_.each( menuControl.getMenuItemControls(), function( otherControl ) {
[1829] Fix | Delete
if ( from.menu_item_parent === otherControl.setting().menu_item_parent && otherControl.setting().position > from.position ) {
[1830] Fix | Delete
followingSiblingItemControls.push( otherControl );
[1831] Fix | Delete
} else if ( otherControl.setting().menu_item_parent === itemId ) {
[1832] Fix | Delete
childrenItemControls.push( otherControl );
[1833] Fix | Delete
}
[1834] Fix | Delete
});
[1835] Fix | Delete
[1836] Fix | Delete
// Shift all following siblings by the number of children this item has.
[1837] Fix | Delete
_.each( followingSiblingItemControls, function( followingSiblingItemControl ) {
[1838] Fix | Delete
var value = _.clone( followingSiblingItemControl.setting() );
[1839] Fix | Delete
value.position += childrenItemControls.length;
[1840] Fix | Delete
followingSiblingItemControl.setting.set( value );
[1841] Fix | Delete
});
[1842] Fix | Delete
[1843] Fix | Delete
// Now move the children up to be the new subsequent siblings.
[1844] Fix | Delete
_.each( childrenItemControls, function( childrenItemControl, i ) {
[1845] Fix | Delete
var value = _.clone( childrenItemControl.setting() );
[1846] Fix | Delete
value.position = from.position + i;
[1847] Fix | Delete
value.menu_item_parent = from.menu_item_parent;
[1848] Fix | Delete
childrenItemControl.setting.set( value );
[1849] Fix | Delete
});
[1850] Fix | Delete
[1851] Fix | Delete
menuControl.debouncedReflowMenuItems();
[1852] Fix | Delete
} else {
[1853] Fix | Delete
// Update the elements' values to match the new setting properties.
[1854] Fix | Delete
_.each( to, function( value, key ) {
[1855] Fix | Delete
if ( control.elements[ key] ) {
[1856] Fix | Delete
control.elements[ key ].set( to[ key ] );
[1857] Fix | Delete
}
[1858] Fix | Delete
} );
[1859] Fix | Delete
control.container.find( '.menu-item-data-parent-id' ).val( to.menu_item_parent );
[1860] Fix | Delete
[1861] Fix | Delete
// Handle UI updates when the position or depth (parent) change.
[1862] Fix | Delete
if ( to.position !== from.position || to.menu_item_parent !== from.menu_item_parent ) {
[1863] Fix | Delete
control.getMenuControl().debouncedReflowMenuItems();
[1864] Fix | Delete
}
[1865] Fix | Delete
}
[1866] Fix | Delete
});
[1867] Fix | Delete
[1868] Fix | Delete
// Style the URL field as invalid when there is an invalid_url notification.
[1869] Fix | Delete
updateNotifications = function() {
[1870] Fix | Delete
control.elements.url.element.toggleClass( 'invalid', control.setting.notifications.has( 'invalid_url' ) );
[1871] Fix | Delete
};
[1872] Fix | Delete
control.setting.notifications.bind( 'add', updateNotifications );
[1873] Fix | Delete
control.setting.notifications.bind( 'removed', updateNotifications );
[1874] Fix | Delete
},
[1875] Fix | Delete
[1876] Fix | Delete
/**
[1877] Fix | Delete
* Set up event handlers for menu item deletion.
[1878] Fix | Delete
*/
[1879] Fix | Delete
_setupRemoveUI: function() {
[1880] Fix | Delete
var control = this, $removeBtn;
[1881] Fix | Delete
[1882] Fix | Delete
// Configure delete button.
[1883] Fix | Delete
$removeBtn = control.container.find( '.item-delete' );
[1884] Fix | Delete
[1885] Fix | Delete
$removeBtn.on( 'click', function() {
[1886] Fix | Delete
// Find an adjacent element to add focus to when this menu item goes away.
[1887] Fix | Delete
var addingItems = true, $adjacentFocusTarget, $next, $prev,
[1888] Fix | Delete
instanceCounter = 0, // Instance count of the menu item deleted.
[1889] Fix | Delete
deleteItemOriginalItemId = control.params.original_item_id,
[1890] Fix | Delete
addedItems = control.getMenuControl().$sectionContent.find( '.menu-item' ),
[1891] Fix | Delete
availableMenuItem;
[1892] Fix | Delete
[1893] Fix | Delete
if ( ! $( 'body' ).hasClass( 'adding-menu-items' ) ) {
[1894] Fix | Delete
addingItems = false;
[1895] Fix | Delete
}
[1896] Fix | Delete
[1897] Fix | Delete
$next = control.container.nextAll( '.customize-control-nav_menu_item:visible' ).first();
[1898] Fix | Delete
$prev = control.container.prevAll( '.customize-control-nav_menu_item:visible' ).first();
[1899] Fix | Delete
[1900] Fix | Delete
if ( $next.length ) {
[1901] Fix | Delete
$adjacentFocusTarget = $next.find( false === addingItems ? '.item-edit' : '.item-delete' ).first();
[1902] Fix | Delete
} else if ( $prev.length ) {
[1903] Fix | Delete
$adjacentFocusTarget = $prev.find( false === addingItems ? '.item-edit' : '.item-delete' ).first();
[1904] Fix | Delete
} else {
[1905] Fix | Delete
$adjacentFocusTarget = control.container.nextAll( '.customize-control-nav_menu' ).find( '.add-new-menu-item' ).first();
[1906] Fix | Delete
}
[1907] Fix | Delete
[1908] Fix | Delete
/*
[1909] Fix | Delete
* If the menu item deleted is the only of its instance left,
[1910] Fix | Delete
* remove the check icon of this menu item in the right panel.
[1911] Fix | Delete
*/
[1912] Fix | Delete
_.each( addedItems, function( addedItem ) {
[1913] Fix | Delete
var menuItemId, menuItemControl, matches;
[1914] Fix | Delete
[1915] Fix | Delete
// This is because menu item that's deleted is just hidden.
[1916] Fix | Delete
if ( ! $( addedItem ).is( ':visible' ) ) {
[1917] Fix | Delete
return;
[1918] Fix | Delete
}
[1919] Fix | Delete
[1920] Fix | Delete
matches = addedItem.getAttribute( 'id' ).match( /^customize-control-nav_menu_item-(-?\d+)$/, '' );
[1921] Fix | Delete
if ( ! matches ) {
[1922] Fix | Delete
return;
[1923] Fix | Delete
}
[1924] Fix | Delete
[1925] Fix | Delete
menuItemId = parseInt( matches[1], 10 );
[1926] Fix | Delete
menuItemControl = api.control( 'nav_menu_item[' + String( menuItemId ) + ']' );
[1927] Fix | Delete
[1928] Fix | Delete
// Check for duplicate menu items.
[1929] Fix | Delete
if ( menuItemControl && deleteItemOriginalItemId == menuItemControl.params.original_item_id ) {
[1930] Fix | Delete
instanceCounter++;
[1931] Fix | Delete
}
[1932] Fix | Delete
} );
[1933] Fix | Delete
[1934] Fix | Delete
if ( instanceCounter <= 1 ) {
[1935] Fix | Delete
// Revert the check icon to add icon.
[1936] Fix | Delete
availableMenuItem = $( '#menu-item-tpl-' + control.params.original_item_id );
[1937] Fix | Delete
availableMenuItem.removeClass( 'selected' );
[1938] Fix | Delete
availableMenuItem.find( '.menu-item-handle' ).removeClass( 'item-added' );
[1939] Fix | Delete
}
[1940] Fix | Delete
[1941] Fix | Delete
control.container.slideUp( function() {
[1942] Fix | Delete
control.setting.set( false );
[1943] Fix | Delete
wp.a11y.speak( api.Menus.data.l10n.itemDeleted );
[1944] Fix | Delete
$adjacentFocusTarget.focus(); // Keyboard accessibility.
[1945] Fix | Delete
} );
[1946] Fix | Delete
[1947] Fix | Delete
control.setting.set( false );
[1948] Fix | Delete
} );
[1949] Fix | Delete
},
[1950] Fix | Delete
[1951] Fix | Delete
_setupLinksUI: function() {
[1952] Fix | Delete
var $origBtn;
[1953] Fix | Delete
[1954] Fix | Delete
// Configure original link.
[1955] Fix | Delete
$origBtn = this.container.find( 'a.original-link' );
[1956] Fix | Delete
[1957] Fix | Delete
$origBtn.on( 'click', function( e ) {
[1958] Fix | Delete
e.preventDefault();
[1959] Fix | Delete
api.previewer.previewUrl( e.target.toString() );
[1960] Fix | Delete
} );
[1961] Fix | Delete
},
[1962] Fix | Delete
[1963] Fix | Delete
/**
[1964] Fix | Delete
* Update item handle title when changed.
[1965] Fix | Delete
*/
[1966] Fix | Delete
_setupTitleUI: function() {
[1967] Fix | Delete
var control = this, titleEl;
[1968] Fix | Delete
[1969] Fix | Delete
// Ensure that whitespace is trimmed on blur so placeholder can be shown.
[1970] Fix | Delete
control.container.find( '.edit-menu-item-title' ).on( 'blur', function() {
[1971] Fix | Delete
$( this ).val( $( this ).val().trim() );
[1972] Fix | Delete
} );
[1973] Fix | Delete
[1974] Fix | Delete
titleEl = control.container.find( '.menu-item-title' );
[1975] Fix | Delete
control.setting.bind( function( item ) {
[1976] Fix | Delete
var trimmedTitle, titleText;
[1977] Fix | Delete
if ( ! item ) {
[1978] Fix | Delete
return;
[1979] Fix | Delete
}
[1980] Fix | Delete
item.title = item.title || '';
[1981] Fix | Delete
trimmedTitle = item.title.trim();
[1982] Fix | Delete
[1983] Fix | Delete
titleText = trimmedTitle || item.original_title || api.Menus.data.l10n.untitled;
[1984] Fix | Delete
[1985] Fix | Delete
if ( item._invalid ) {
[1986] Fix | Delete
titleText = api.Menus.data.l10n.invalidTitleTpl.replace( '%s', titleText );
[1987] Fix | Delete
}
[1988] Fix | Delete
[1989] Fix | Delete
// Don't update to an empty title.
[1990] Fix | Delete
if ( trimmedTitle || item.original_title ) {
[1991] Fix | Delete
titleEl
[1992] Fix | Delete
.text( titleText )
[1993] Fix | Delete
.removeClass( 'no-title' );
[1994] Fix | Delete
} else {
[1995] Fix | Delete
titleEl
[1996] Fix | Delete
.text( titleText )
[1997] Fix | Delete
.addClass( 'no-title' );
[1998] Fix | Delete
}
[1999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function