/** * WordPress Administration Custom Navigation * Interface JS functions * * @version 1.1.0 * * @package WordPress * @subpackage Administration */ function wp_nav_menu_autocomplete( id ) { jQuery('#add-'+ id +' .quick-search').autocomplete(jQuery( '#add-'+ id +' .autocomplete' ).val().split('|')); jQuery('#add-'+ id +' .quick-search').result(function(event, data, formatted) { jQuery('#add-'+ id +' .list-wrap').css( 'display', 'block' ); jQuery("#add-"+ id +" .list-wrap li:contains('" + data + "')").css( 'display', 'block' ); jQuery('#add-'+ id +' .show-all').hide(); jQuery('#add-'+ id +' .hide-all').show(); }); } /** * Populate the thickbox window with the selected menu items * * @param int id - the id of the menu li to edit. */ function wp_edit_menu_item( id ) { var item_type = jQuery('#menu-item-type' + id).val(); var item_title = jQuery('#menu-item-title' + id).val(); var item_link = jQuery('#menu-item-url' + id).val(); var item_attr_title = jQuery('#menu-item-attr-title' + id).val(); var item_target = jQuery('#menu-item-target' + id).val(); var item_description = jQuery('#menu-item-description' + id).val(); var item_classes = jQuery('#menu-item-classes' + id).val(); var item_xfn = jQuery('#menu-item-xfn' + id).val(); // Only allow custom links to be editable. if ( 'custom' != item_type ) jQuery( '#edit-menu-item-url' ).attr('disabled', 'disabled' ); // Populate the fields for thickbox jQuery( '#edit-menu-item-id' ).val(id); jQuery( '#edit-menu-item-title' ).val(item_title); jQuery( '#edit-menu-item-url' ).val(item_link); jQuery( '#edit-menu-item-attr-title' ).val(item_attr_title); jQuery( '#edit-menu-item-target' ).val(item_target); jQuery( "#edit-menu-item-target option[value='" + item_target + "']" ).attr('selected', 'selected'); jQuery( '#edit-menu-item-description' ).val(item_description); jQuery( '#edit-menu-item-classes' ).val(item_classes); jQuery( '#edit-menu-item-xfn' ).val(item_xfn); // focus jQuery( '#edit-menu-item-title' ).focus(); }; /** * Update the values for the menu item being editing */ function wp_update_menu_item() { var id = jQuery('#edit-menu-item-id').val(); var item_title = jQuery('#edit-menu-item-title').val(); var item_link = jQuery('#edit-menu-item-url').val(); var item_attr_title = jQuery('#edit-menu-item-attr-title').val(); var item_target = jQuery('#edit-menu-item-target').val(); var item_description = jQuery('#edit-menu-item-description').val(); var item_classes = jQuery('#edit-menu-item-classes').val(); var item_xfn = jQuery('#edit-menu-item-xfn').val(); // update menu item settings jQuery('.menu #menu-item' + id).find('span.item-title').html(item_title); jQuery('.menu #menu-item-title' + id).val(item_title); jQuery('.menu #menu-item-url' + id).val(item_link); jQuery('.menu #menu-item-attr-title' + id).val(item_attr_title); jQuery('.menu #menu-item-target' + id).val(item_target); jQuery('.menu #menu-item-description' + id).val(item_description); jQuery('.menu #menu-item-classes' + id).val(item_classes); jQuery('.menu #menu-item-xfn' + id).val(item_xfn); jQuery('.menu #menu-item' + id + ' dt:first').animate( { backgroundColor: '#FFFF33' }, { duration: 'normal', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }}); } /** * Removes a menu item from current menu * * @param int o - the id of the menu li to remove. */ function wp_remove_menu_item( o ) { var todelete = document.getElementById('menu-item' + o); if ( todelete ) { // Give some feedback to the user jQuery( todelete ).find('dt').each(function(){ jQuery(this).animate( { backgroundColor: '#FF3333' }, { duration: 'normal', complete: function() { jQuery(this).parent().parent().remove() } } ); }); } }; /** * Adds the item to the menu * * @param string item_db_id - The menu item's db id. * @param string item_object_id - The menu item's object id. * @param string item_type - The menu item's object type. * @param string item_append - The menu item's nice name. * @param string item_parent_id - The menu item's parent id. * @param string item_title - The menu item title. * @param string item_url - The menu item url * @param string item_description - The menu item description. * @param string item_attr_title - The title attribute. * @param string item_target - The target attribute. * @param string item_classes - Optional. Additional CSS classes for the menu item * @param string item_xfn - Optional. The rel attribute. */ function wp_add_item_to_menu( item_db_id, item_object_id, item_type, item_append, item_parent_id, item_title, item_url, item_description, item_attr_title, item_target, item_classes, item_xfn ) { var randomnumber = wp_get_unique_menu_id(); var hidden = wp_get_hidden_inputs( randomnumber, item_db_id, item_object_id, item_type, item_append, item_parent_id, item_title, item_url, item_description, item_attr_title, item_target, item_classes, item_xfn ); // Adds the item in the queue jQuery('.menu').append(''); // Give some feedback to the user jQuery( '.menu #menu-item' + randomnumber + ' dt:first' ).animate( { backgroundColor: '#FFFF33' }, { duration: 'normal', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }}); // Enable drag-n-drop wp_drag_and_drop(); // Reload thickbox tb_init('a.thickbox, area.thickbox, input.thickbox'); }; /** * Grabs items from the queue and adds them to the menu. * * @param string button - a reference to the button that was clicked */ function wp_add_checked_items_to_menu( button ) { // Grab checked items var items = jQuery(button).siblings('.list-wrap').find(':checked'); // If nothing was checked, cancel if ( 0 == items.length ) return false; // Loop through each item, grab it's hidden data and add it to the menu. jQuery(items).each(function(){ var item_type = jQuery(this).parent().siblings('.menu-item-type').val(); if ( 'custom' == item_type ) { var item_attr_title = jQuery(this).parent().siblings('.menu-item-attr-title').val(); var item_target = jQuery(this).parent().siblings('.menu-item-target').val(); var item_classes = jQuery(this).parent().siblings('.menu-item-classes').val(); var item_xfn = jQuery(this).parent().siblings('.menu-item-xfn').val(); } else { var item_attr_title = ''; var item_target = '_self'; var item_classes = ''; var item_xfn = ''; }; var item_db_id = jQuery(this).parent().siblings('.menu-item-db-id').val(); var item_object_id = jQuery(this).parent().siblings('.menu-item-object-id').val(); var item_append = jQuery(this).parent().siblings('.menu-item-append').val(); var item_parent_id = jQuery(this).parent().siblings('.menu-item-parent-id').val(); var item_title = jQuery(this).parent().siblings('.menu-item-title').val(); var item_url = jQuery(this).parent().siblings('.menu-item-url').val(); var item_description = jQuery(this).parent().siblings('.menu-item-description').val(); if ( undefined == item_description ) { item_description = ''; }; // Add the menu item to the menu wp_add_item_to_menu( item_db_id, item_object_id, item_type, item_append, item_parent_id, item_title, item_url, item_description, item_attr_title, item_target, item_classes, item_xfn ); // uncheck the menu item in the list jQuery(this).attr( 'checked', false ); }); }; /** * Makes the menu items drag and droppable. */ function wp_drag_and_drop() { // Make sure all li's have dropzones jQuery('.menu li').each(function(){ if ( !jQuery(this).children('.dropzone').attr('class') ) { jQuery(this).prepend('
'); }; }); // make menu item draggable jQuery('.menu li').draggable({ handle: ' > dl', opacity: .8, addClasses: false, helper: 'clone', zIndex: 100 }); // make menu item droppable jQuery('.menu li dl, .menu li .dropzone').droppable({ accept: '.menu li', tolerance: 'pointer', drop: function(e, ui) { var li = jQuery(this).parent(); var child = !jQuery(this).hasClass('dropzone'); // Append UL to first child if ( child && li.children('ul').length == 0 ) { li.append( '