/** * WordPress Administration Navigation Menu * Interface JS functions * * @version 2.0.0 * * @package WordPress * @subpackage Administration */ var wpNavMenu; (function($) { wpNavMenu = { // Functions that run on init. init : function() { wpNavMenu.initial_meta_boxes(); wpNavMenu.drag_and_drop(); // Delete AYS $('#update-nav-menu .deletion').click(function(){ if ( confirm( navMenuL10n.warnDelete ) ) { return true; } else { return false; }; }); // Handle Save Button Clicks $('#update-nav-menu').submit(function(){ wpNavMenu.update_post_data(); }); // Handle some return keypresses $('#create-menu-name').keypress(function(e){ if ( 13 == e.keyCode ) { $('#create-menu-button').click(); return false; } }); $('#custom-menu-item-url, #custom-menu-item-name').keypress(function(e){ if ( 13 == e.keyCode ) { $('#add-custom-links a.button').click(); return false; } }).focus(function(){ if ( $(this).val() == $(this).attr('defaultValue') && $(this).attr('id') != 'custom-menu-item-url' ) { $(this).val(''); } }).blur(function(){ if ( $(this).val() == '' ) { $(this).val($(this).attr('defaultValue')); } }); $('#create-menu-name').focus(function(){ if ( $(this).val() == $(this).attr('defaultValue') ) { $(this).val(''); } }).blur(function(){ if ( $(this).val() == '' ) { $(this).val($(this).attr('defaultValue')); } }); // close postboxes that should be closed $('.if-js-closed').removeClass('if-js-closed').addClass('closed'); // postboxes setup postboxes.add_postbox_toggles('nav-menus'); // Clear the quick search textbox $('.quick-search').click(function(){ $(this).attr( 'value', '' ); }); // Quick Search submit $('.quick-search-submit').click(function(){ $(this).siblings('.quick-search').search(); }); // Edit menu item $('#menu-container .item-edit').click(function(){ wpNavMenu.edit_menu_item( $(this).attr('value') ); }); // Delete menu item $('#menu-container .item-delete').click(function(){ wpNavMenu.remove_menu_item( $(this).attr('value') ); }); // Update menu item settings (thickbox) $('#update-menu-item').click(function(){ wpNavMenu.update_menu_item(); tb_remove(); }); // Close thickbox $('#cancel-save').click(function(){ tb_remove(); }); // Show All Button $('.show-all').click(function(e){ $(e.currentTarget).parent().parent().siblings('.list-wrap').css( 'display', 'block' ); $(e.currentTarget).parent().parent().siblings('.list-wrap').find('li').css( 'display', 'block' ); $(e.currentTarget).hide(); $(e.currentTarget).siblings('.hide-all').show(); }); // Hide All Button $('.hide-all').click(function(e){ $(e.currentTarget).parent().parent().siblings('.list-wrap').css( 'display', 'none' ); $(e.currentTarget).parent().parent().siblings('.list-wrap').find('li').css( 'display', 'none' ); $(e.currentTarget).hide(); $(e.currentTarget).siblings('.show-all').show(); }); // Add menu items into the menu $('.add-to-menu').click(function(e){ wpNavMenu.add_checked_items_to_menu(e.currentTarget); }); // Create a new link then add it to the menu $('#add-custom-links .add-to-menu a').click(function(e){ // Add link to menu if ( $('#custom-menu-item-url').val() == $('#custom-menu-item-url').attr('defaultValue') ) return; // Do not allow "http://" submissions to go through wpNavMenu.add_custom_link( $('#custom-menu-item-name').val(), $('#custom-menu-item-url').val() ); // Reset the fields back to their defaults $('#custom-menu-item-name').val($('#custom-menu-item-name').attr('defaultValue')); $('#custom-menu-item-url' ).val($('#custom-menu-item-url' ).attr('defaultValue')).focus(); }); }, add_custom_link : function( link_name, link_url ) { var params = { action: 'save-custom-link', link_name: link_name, link_url: link_url } $.post( ajaxurl, params, function(link_id) { if ( '-1' == link_id ) return; wpNavMenu.add_to_menu( link_id, link_id, 'custom', 'custom', navMenuL10n.custom, 0, link_name, link_url, '', '', '_self', '', '' ); }, 'json'); }, /** * In combination with the php function wp_initial_nav_menu_meta_boxes(), * this function limits the metaboxes for first time users to just links, pages and cats. */ initial_meta_boxes : function() { var hidden = $('#hidden-metaboxes').val().split( ',' ); if ( '' != hidden ) { for ( var i = 0; i < hidden.length; i++ ) { $( '#' + hidden[i] ).attr( 'style', 'display: none;' ); $( '#' + hidden[i] + '-hide' ).attr( 'checked', false ); }; }; }, // Makes the menu items drag and droppable. drag_and_drop : function() { // Make sure all li's have dropzones $('.menu li').each(function(){ if ( !$(this).children('.dropzone').attr('class') ) { $(this).prepend('
'); }; }); // make menu item draggable $('.menu li').draggable({ handle: ' > dl', opacity: .8, addClasses: false, helper: 'clone', zIndex: 100 }); // make menu item droppable $('.menu li dl, .menu li .dropzone').droppable({ accept: '.menu li', tolerance: 'pointer', drop: function(e, ui) { var li = $(this).parent(); var child = !$(this).hasClass('dropzone'); // Append UL to first child if ( child && li.children('ul').length == 0 ) { li.append( '