WordPress.org

Make WordPress Core

Ticket #11817: ticket_11817_nav_menu_enhancements.diff

File ticket_11817_nav_menu_enhancements.diff, 70.4 KB (added by ptahdunbar, 4 years ago)

Overhauled the pages, and category list to use standard WP UI elements (http://i46.tinypic.com/2ih8rr9.jpg), tweaked the drag-n-drop js to allow for bulk selection before adding items to the menu, custom links overhaul (http://i49.tinypic.com/2u54yvb.jpg and http://i45.tinypic.com/2moshmo.jpg), nav-menus.php layout cleanup. (updated script loader + included minifed versions of the js/css changes)

  • wp-includes/nav-menu-template.php

     
    149149 
    150150                case 'default': 
    151151                        $template_dir = get_bloginfo('url'); 
     152                        $menu_id = 'menu-item-' . $menu_item->ID; 
    152153?> 
    153154                                        <dl> 
    154155                                                <dt> 
    155                                                         <a class="title" title="<?php esc_attr_e('Add to Menu'); ?>" onclick="appendToList('<?php echo esc_js( esc_url_raw( $template_dir ) ); ?>','<?php echo esc_js( $menu_item->append ); ?>','<?php echo esc_js( $menu_item->title ); ?>','<?php echo esc_js( $menu_item->link ); ?>','<?php echo esc_js( $menu_item->ID ); ?>','<?php echo esc_js( $menu_item->parent_item ); ?>','<?php echo esc_js( $menu_item->description ); ?>')" name="<?php echo esc_attr( $menu_item->title ); ?>" value="<?php echo esc_attr( $menu_item->link ); ?>"><?php echo $menu_item->title; ?></a> 
     156                                                        <label class="title"><input type="checkbox" id="<?php echo esc_attr($menu_id); ?>" onclick="updateQueue('<?php echo esc_js( esc_url_raw( $template_dir ) ); ?>','<?php echo esc_js( $menu_item->append ); ?>','<?php echo esc_js( $menu_item->title ); ?>','<?php echo esc_js( $menu_item->link ); ?>','<?php echo esc_js( $menu_item->ID ); ?>','<?php echo esc_js( $menu_item->parent_item ); ?>','<?php echo esc_js( $menu_item->description ); ?>')" name="<?php echo esc_attr( $menu_item->title ); ?>" value="<?php echo esc_attr( $menu_item->link ); ?>" /><?php echo $menu_item->title; ?></label> 
    156157                                                </dt> 
    157158                                        </dl> 
    158159<?php 
  • wp-includes/script-loader.php

     
    398398 
    399399                // Custom Navigation 
    400400                $scripts->add( 'nav-menu-default-items', "/wp-admin/js/nav-menu-default-items$suffix.js", false, '20100223' ); 
    401                 $scripts->add( 'nav-menu-dynamic-functions', "/wp-admin/js/nav-menu-dynamic-functions$suffix.js", false, '20100224b' ); 
     401                $scripts->add( 'nav-menu-dynamic-functions', "/wp-admin/js/nav-menu-dynamic-functions$suffix.js", false, '20100225b' ); 
    402402                $scripts->localize( 'nav-menu-dynamic-functions', 'navMenuL10n', array( 
    403403                        'custom' => _x('Custom', 'menu nav item type'), 
    404404                        'page' => _x('Page', 'menu nav item type'), 
     
    474474        $styles->add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.2' ); 
    475475        $styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' ); 
    476476        $styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.1' ); 
    477         $styles->add( 'nav-menu', "/wp-admin/css/nav-menu$suffix.css", array(), '20100225' ); 
     477        $styles->add( 'nav-menu', "/wp-admin/css/nav-menu$suffix.css", array(), '20100225b' ); 
    478478 
    479479        foreach ( $rtl_styles as $rtl_style ) { 
    480480                $styles->add_data( $rtl_style, 'rtl', true ); 
  • wp-admin/admin-ajax.php

     
    477477        _wp_ajax_delete_comment_response( $comment->comment_ID ); 
    478478        die( '0' ); 
    479479        break; 
     480case 'add-menu-link': 
     481        if ( !current_user_can( 'manage_links' ) ) 
     482                die('-1'); 
     483         
     484        $link_cat = is_term( __('Custom Menu Links'), 'link_category' ); 
     485        if ( $link_cat ) { 
     486                $_POST['link_category'] = array( $link_cat['term_id'] ); 
     487                 
     488                // Don't add the link if the default values haven't been changed 
     489                if ( 'Menu Item' != $_POST['link_name'] || 'http://' != $_POST['link_url'] ) { 
     490                        $link_id = add_link(); 
     491                        $r[0] = get_bookmarks( array( 'category_name' => __('Custom Menu Links'), 'limit' => 1, 'include' => $link_id ) ); 
     492                } 
     493                 
     494                $r[1] = get_bloginfo('url'); 
     495                echo json_encode( $r ); 
     496        } else { 
     497                die('-1'); 
     498        } 
     499        break; 
    480500case 'add-link-category' : // On the Fly 
    481501        check_ajax_referer( $action ); 
    482502        if ( !current_user_can( 'manage_categories' ) ) 
  • wp-admin/js/nav-menu-dynamic-functions.js

     
    1 function removeitem(c){var b=document.getElementById("menu-"+c);if(b){var a=document.getElementById("menu-"+c).parentNode;throwaway_node=a.removeChild(b)}updatepostdata()}function edititem(a){itemTitle=jQuery("#title"+a).attr("value");itemURL=jQuery("#linkurl"+a).attr("value");itemAnchorTitle=jQuery("#anchortitle"+a).attr("value");itemNewWindow=jQuery("#newwindow"+a).attr("value");itemDesc=jQuery("#description"+a).attr("value");jQuery("#dialog-confirm").dialog("option","itemID",a);jQuery("#dialog-confirm").dialog("open");jQuery("#edittitle").attr("value",itemTitle);jQuery("#editlink").attr("value",itemURL);jQuery("#editanchortitle").attr("value",itemAnchorTitle);jQuery("#editnewwindow option[value='"+itemNewWindow+"']").attr("selected","selected");jQuery("#editdescription").attr("value",itemDesc)}function updatepostdata(){var a=0;jQuery("#custom-nav").find("li").each(function(c){c=c+1;var b=jQuery(this).attr("value");jQuery(this).find("#position"+b).attr("value",c);jQuery(this).attr("id","menu-"+c);jQuery(this).attr("value",c);jQuery(this).find("#dbid"+b).attr("name","dbid"+c);jQuery(this).find("#dbid"+b).attr("id","dbid"+c);jQuery(this).find("#postmenu"+b).attr("name","postmenu"+c);jQuery(this).find("#postmenu"+b).attr("id","postmenu"+c);var d=jQuery(this).find("#parent"+b).parent().parent().parent().attr("value");jQuery(this).find("#parent"+b).attr("name","parent"+c);jQuery(this).find("#parent"+b).attr("id","parent"+c);if(d){}else{d=0}jQuery(this).find("#parent"+b).attr("value",d);jQuery(this).find("#title"+b).attr("name","title"+c);jQuery(this).find("#title"+b).attr("id","title"+c);jQuery(this).find("#linkurl"+b).attr("name","linkurl"+c);jQuery(this).find("#linkurl"+b).attr("id","linkurl"+c);jQuery(this).find("#description"+b).attr("name","description"+c);jQuery(this).find("#description"+b).attr("id","description"+c);jQuery(this).find("#icon"+b).attr("name","icon"+c);jQuery(this).find("#icon"+b).attr("id","icon"+c);jQuery(this).find("#position"+b).attr("name","position"+c);jQuery(this).find("#position"+b).attr("id","position"+c);jQuery(this).find("#linktype"+b).attr("name","linktype"+c);jQuery(this).find("#linktype"+b).attr("id","linktype"+c);jQuery(this).find("#anchortitle"+b).attr("name","anchortitle"+c);jQuery(this).find("#anchortitle"+b).attr("id","anchortitle"+c);jQuery(this).find("#newwindow"+b).attr("name","newwindow"+c);jQuery(this).find("#newwindow"+b).attr("id","newwindow"+c);jQuery(this).find("dl > dt > span > #remove"+b).attr("value",c);jQuery(this).find("dl > dt > span > #remove"+b).attr("onClick","removeitem("+c+")");jQuery(this).find("dl > dt > span > #remove"+b).attr("id","remove"+c);jQuery("#li-count").attr("value",c)})}function appendToList(b,s,d,n,h,l,e){var k="";var c="";var r="";var o="";var i="";var a="";if(s==navMenuL10n.custom){k=document.getElementById("custom-menu-item-name").value;c=document.getElementById("custom-menu-item-url").value;r="";o="";inputlinktype="custom";i=""}else{if(s==navMenuL10n.page){k=htmlentities(d.toString());c=n.toString();r=h.toString();o="0";inputlinktype="page";i=htmlentities(e.toString())}else{if(s==navMenuL10n.category){k=htmlentities(d.toString());c=n.toString();r=h.toString();o="0";inputlinktype="category";i=htmlentities(e.toString())}else{k="";k="";r="";o="";inputlinktype="custom";i=""}}}var g=document.getElementById("custom-nav").getElementsByTagName("li").length+1;var p=g;var m=0;try{var q=document.getElementById("menu-"+p.toString()).value}catch(f){m=1}while(m==0){p=p+1;try{var j=document.getElementById("menu-"+p.toString()).value}catch(f){m=1}}jQuery(".maintitle").after('<div id="message" class="updated fade below-h2"><p>Menu Item added!</p></div>');jQuery("#message").animate({opacity:1},2000).fadeOut(300,function(){jQuery(this).remove()});jQuery("#custom-nav").append('<li id="menu-'+p+'" value="'+p+'"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="title">'+k+'</span><span class="controls"><span class="type">'+s+'</span><a id="edit'+p+'" onclick="edititem('+p+')" value="'+p+'"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="'+b+'/wp-admin/images/ico-edit.png" /></a> <a id="remove'+p+'" onclick="removeitem('+p+')" value="'+p+'"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="'+b+'/wp-admin/images/ico-close.png" /></a> <a href="'+c+'" target="_blank"><img alt="View Custom Link" title="View Custom Link" src="'+b+'/wp-admin/images/ico-viewpage.png" /></a></span></dt></dl><a class="hide" href="'+c+'">'+k+'</a><input type="hidden" name="postmenu'+p+'" id="postmenu'+p+'" value="'+r+'" /><input type="hidden" name="parent'+p+'" id="parent'+p+'" value="'+o+'" /><input type="hidden" name="title'+p+'" id="title'+p+'" value="'+k+'" /><input type="hidden" name="linkurl'+p+'" id="linkurl'+p+'" value="'+c+'" /><input type="hidden" name="description'+p+'" id="description'+p+'" value="'+i+'" /><input type="hidden" name="icon'+p+'" id="icon'+p+'" value="'+a+'" /><input type="hidden" name="position'+p+'" id="position'+p+'" value="'+p+'" /><input type="hidden" name="linktype'+p+'" id="linktype'+p+'" value="'+inputlinktype+'" /><input type="hidden" name="anchortitle'+p+'" id="anchortitle'+p+'" value="'+k+'" /><input type="hidden" name="newwindow'+p+'" id="newwindow'+p+'" value="0" /></li>');jQuery("#menu-"+p+"").draggable({handle:" > dl",opacity:0.8,addClasses:false,helper:"clone",zIndex:100});jQuery("#menu-"+p+" dl, #menu-"+p+" .dropzone").droppable({accept:"#"+p+", #custom-nav li",tolerance:"pointer",drop:function(x,w){var t=jQuery(this).parent();var y=!jQuery(this).hasClass("dropzone");if(y&&t.children("ul").length==0){t.append("<ul/>")}if(y){t.children("ul").append(w.draggable)}else{t.before(w.draggable)}t.find("dl,.dropzone").css({backgroundColor:"",borderColor:""});var v=w.draggable.attr("value");var u=t.attr("value");t.find("#menu-"+v).find("#parent"+v).val(u);jQuery(this).parent().find("dt").removeAttr("style");jQuery(this).parent().find("div:first").removeAttr("style")},over:function(){if(jQuery(this).attr("class")=="dropzone ui-droppable"){jQuery(this).parent().find("div:first").css("background","none").css("height","50px")}else{if(jQuery(this).attr("class")=="ui-droppable"){jQuery(this).parent().find("dt:first").css("background","#d8d8d8")}else{}}var t=jQuery(this).parent().attr("id")},out:function(){jQuery(this).parent().find("dt").removeAttr("style");jQuery(this).parent().find("div:first").removeAttr("style");jQuery(this).filter(".dropzone").css({borderColor:""})}});updatepostdata()}; 
    2  No newline at end of file 
     1jQuery(document).ready(function(){jQuery(".quick-search").click(function(){jQuery(this).attr("value","")});jQuery(".show-all").click(function(){jQuery(this).offsetParent().find("#add-buttons-actions").attr("style","margin-bottom: 10px;");jQuery(this).offsetParent().find(".list-wrap").css("display","block");jQuery(this).siblings(".quick-search").attr("value","");jQuery(this).offsetParent().find(".list-wrap dt").css("display","block");jQuery(this).hide();jQuery(this).siblings(".hide-all").show()});jQuery(".hide-all").click(function(){jQuery(this).offsetParent().find("#add-buttons-actions").attr("style","margin-bottom: 0px;");jQuery(this).offsetParent().find(".list-wrap").css("display","none");jQuery(this).siblings(".quick-search").attr("value","Search");jQuery(this).offsetParent().find(".list-wrap dt").css("display","none");jQuery(this).hide();jQuery(this).siblings(".show-all").show()});jQuery("#add-create-link a").click(function(){var link_url=jQuery(this).parent().siblings(".howto").find("#custom-menu-item-url").val();var link_name=jQuery(this).parent().siblings(".howto").find("#custom-menu-item-name").val();var template_dir="";params={action:"add-menu-link",link_url:link_url,link_name:link_name,};jQuery.post(ajaxurl,params,function(response){template_dir=response[1];update_links_list(response[0]);update_nav_menu(template_dir,"Link",response[0][0].link_name,response[0][0].link_url,response[0][0].link_id,0,response[0][0].link_description)},"json");var links=jQuery(this).offsetParent().find("#available-links input:checked");if(links){for(var i=0;i<links.length;i++){update_nav_menu(template_dir,"Link",links[i].name,links[i].value,links[i].id.substring(5,links[i].id.length),0,"")}jQuery(links).attr("checked",false)}})});function update_links_list(e){var link='<li><dl><dt><label class="title"><input type="checkbox" id="link-'+e[0].link_id+'" name="'+e[0].link_name+'" value="'+e[0].link_url+'" />'+e[0].link_name+"</label></dt></dl></li>";jQuery("#available-links .list").prepend(link);jQuery("#available-links .list #link-"+e[0].link_id).parent().animate({backgroundColor:"#FFFF33"},{duration:"fast",complete:function(){jQuery(this).css("backgroundColor","")}})}function update_nav_menu(templatedir,additemtype,itemtext,itemurl,itemid,itemparentid,itemdescription){var inputvaluevarname="";var inputvaluevarurl="";var inputitemid="";var inputparentid="";var inputdescription="";var inputicon="";if(additemtype==navMenuL10n.custom){inputvaluevarname=htmlentities(itemtext.toString());inputvaluevarurl=itemurl.toString();inputitemid="";inputparentid="";inputlinktype="custom";inputdescription=""}else{if(additemtype==navMenuL10n.page){inputvaluevarname=htmlentities(itemtext.toString());inputvaluevarurl=itemurl.toString();inputitemid=itemid.toString();inputparentid="0";inputlinktype="page";inputdescription=htmlentities(itemdescription.toString())}else{if(additemtype==navMenuL10n.category){inputvaluevarname=htmlentities(itemtext.toString());inputvaluevarurl=itemurl.toString();inputitemid=itemid.toString();inputparentid="0";inputlinktype="category";inputdescription=htmlentities(itemdescription.toString())}else{inputvaluevarname=htmlentities(itemtext.toString());inputvaluevarurl=itemurl.toString();inputitemid=itemid;inputparentid="";inputlinktype="custom";inputdescription=htmlentities(itemdescription.toString())}}}var count=document.getElementById("custom-nav").getElementsByTagName("li").length+1;var randomnumber=count;var validatetest=0;try{var test=document.getElementById("menu-"+randomnumber.toString()).value}catch(err){validatetest=1}while(validatetest==0){randomnumber=randomnumber+1;try{var test2=document.getElementById("menu-"+randomnumber.toString()).value}catch(err){validatetest=1}}jQuery("#custom-nav").append('<li id="menu-'+randomnumber+'" value="'+randomnumber+'"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="title">'+inputvaluevarname+'</span><span class="controls"><span class="type">'+additemtype+'</span><a id="edit'+randomnumber+'" onclick="edititem('+randomnumber+')" value="'+randomnumber+'"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="'+templatedir+'/wp-admin/images/ico-edit.png" /></a> <a id="remove'+randomnumber+'" onclick="removeitem('+randomnumber+')" value="'+randomnumber+'"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="'+templatedir+'/wp-admin/images/ico-close.png" /></a> <a href="'+inputvaluevarurl+'" target="_blank"><img alt="View Custom Link" title="View Custom Link" src="'+templatedir+'/wp-admin/images/ico-viewpage.png" /></a></span></dt></dl><a class="hide" href="'+inputvaluevarurl+'">'+inputvaluevarname+'</a><input type="hidden" name="postmenu'+randomnumber+'" id="postmenu'+randomnumber+'" value="'+inputitemid+'" /><input type="hidden" name="parent'+randomnumber+'" id="parent'+randomnumber+'" value="'+inputparentid+'" /><input type="hidden" name="title'+randomnumber+'" id="title'+randomnumber+'" value="'+inputvaluevarname+'" /><input type="hidden" name="linkurl'+randomnumber+'" id="linkurl'+randomnumber+'" value="'+inputvaluevarurl+'" /><input type="hidden" name="description'+randomnumber+'" id="description'+randomnumber+'" value="'+inputdescription+'" /><input type="hidden" name="icon'+randomnumber+'" id="icon'+randomnumber+'" value="'+inputicon+'" /><input type="hidden" name="position'+randomnumber+'" id="position'+randomnumber+'" value="'+randomnumber+'" /><input type="hidden" name="linktype'+randomnumber+'" id="linktype'+randomnumber+'" value="'+inputlinktype+'" /><input type="hidden" name="anchortitle'+randomnumber+'" id="anchortitle'+randomnumber+'" value="'+inputvaluevarname+'" /><input type="hidden" name="newwindow'+randomnumber+'" id="newwindow'+randomnumber+'" value="0" /></li>');dragAndDrop()}function removeitem(o){var todelete=document.getElementById("menu-"+o);if(todelete){var parenttodelete=document.getElementById("menu-"+o).parentNode;throwaway_node=parenttodelete.removeChild(todelete)}updatepostdata()}function edititem(o){itemTitle=jQuery("#title"+o).val();itemURL=jQuery("#linkurl"+o).val();itemAnchorTitle=jQuery("#anchortitle"+o).val();itemNewWindow=jQuery("#newwindow"+o).val();itemDesc=jQuery("#description"+o).val();jQuery("#dialog-confirm").dialog("option","itemID",o);jQuery("#dialog-confirm").dialog("open");jQuery("#edittitle").val(itemTitle);if("custom"==jQuery("#linktype"+o).val()){jQuery("#editlink-wrap").css("display","inline")}else{jQuery("#editlink-wrap").css("display","none")}jQuery("#editlink").val(itemURL);jQuery("#editanchortitle").val(itemAnchorTitle);jQuery("#editnewwindow option[value='"+itemNewWindow+"']").attr("selected","selected");jQuery("#editdescription").val(itemDesc)}function updatepostdata(){var i=0;jQuery("#custom-nav").find("li").each(function(i){i=i+1;var j=jQuery(this).attr("value");jQuery(this).find("#position"+j).attr("value",i);jQuery(this).attr("id","menu-"+i);jQuery(this).attr("value",i);jQuery(this).find("#dbid"+j).attr("name","dbid"+i);jQuery(this).find("#dbid"+j).attr("id","dbid"+i);jQuery(this).find("#postmenu"+j).attr("name","postmenu"+i);jQuery(this).find("#postmenu"+j).attr("id","postmenu"+i);var p=jQuery(this).find("#parent"+j).parent().parent().parent().attr("value");jQuery(this).find("#parent"+j).attr("name","parent"+i);jQuery(this).find("#parent"+j).attr("id","parent"+i);if(p){}else{p=0}jQuery(this).find("#parent"+j).attr("value",p);jQuery(this).find("#title"+j).attr("name","title"+i);jQuery(this).find("#title"+j).attr("id","title"+i);jQuery(this).find("#linkurl"+j).attr("name","linkurl"+i);jQuery(this).find("#linkurl"+j).attr("id","linkurl"+i);jQuery(this).find("#description"+j).attr("name","description"+i);jQuery(this).find("#description"+j).attr("id","description"+i);jQuery(this).find("#icon"+j).attr("name","icon"+i);jQuery(this).find("#icon"+j).attr("id","icon"+i);jQuery(this).find("#position"+j).attr("name","position"+i);jQuery(this).find("#position"+j).attr("id","position"+i);jQuery(this).find("#linktype"+j).attr("name","linktype"+i);jQuery(this).find("#linktype"+j).attr("id","linktype"+i);jQuery(this).find("#anchortitle"+j).attr("name","anchortitle"+i);jQuery(this).find("#anchortitle"+j).attr("id","anchortitle"+i);jQuery(this).find("#newwindow"+j).attr("name","newwindow"+i);jQuery(this).find("#newwindow"+j).attr("id","newwindow"+i);jQuery(this).find("dl > dt > span > #remove"+j).attr("value",i);jQuery(this).find("dl > dt > span > #remove"+j).attr("onClick","removeitem("+i+")");jQuery(this).find("dl > dt > span > #remove"+j).attr("id","remove"+i);jQuery("#li-count").attr("value",i)})}function updateQueue(templatedir,additemtype,itemtext,itemurl,itemid,itemparentid,itemdescription){var inputvaluevarname="";var inputvaluevarurl="";var inputitemid="";var inputparentid="";var inputdescription="";var inputicon="";if(additemtype==navMenuL10n.custom){inputvaluevarname=document.getElementById("custom-menu-item-name").value;inputvaluevarurl=document.getElementById("custom-menu-item-url").value;inputitemid="";inputparentid="";inputlinktype="custom";inputdescription=""}else{if(additemtype==navMenuL10n.page){inputvaluevarname=htmlentities(itemtext.toString());inputvaluevarurl=itemurl.toString();inputitemid=itemid.toString();inputparentid="0";inputlinktype="page";inputdescription=htmlentities(itemdescription.toString())}else{if(additemtype==navMenuL10n.category){inputvaluevarname=htmlentities(itemtext.toString());inputvaluevarurl=itemurl.toString();inputitemid=itemid.toString();inputparentid="0";inputlinktype="category";inputdescription=htmlentities(itemdescription.toString())}else{inputvaluevarname="";inputvaluevarname="";inputitemid="";inputparentid="";inputlinktype="custom";inputdescription=""}}}var count=document.getElementById("custom-nav").getElementsByTagName("li").length+1;var randomnumber=count;var validatetest=0;try{var test=document.getElementById("menu-"+randomnumber.toString()).value}catch(err){validatetest=1}while(validatetest==0){randomnumber=randomnumber+1;try{var test2=document.getElementById("menu-"+randomnumber.toString()).value}catch(err){validatetest=1}}if(jQuery(menu_item_id="#menu-item-"+inputitemid).attr("checked")){jQuery("#queue").append('<li id="menu-'+randomnumber+'" value="'+randomnumber+'"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="title">'+inputvaluevarname+'</span><span class="controls"><span class="type">'+additemtype+'</span><a id="edit'+randomnumber+'" onclick="edititem('+randomnumber+')" value="'+randomnumber+'"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="'+templatedir+'/wp-admin/images/ico-edit.png" /></a> <a id="remove'+randomnumber+'" onclick="removeitem('+randomnumber+')" value="'+randomnumber+'"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="'+templatedir+'/wp-admin/images/ico-close.png" /></a> <a href="'+inputvaluevarurl+'" target="_blank"><img alt="View Custom Link" title="View Custom Link" src="'+templatedir+'/wp-admin/images/ico-viewpage.png" /></a></span></dt></dl><a class="hide" href="'+inputvaluevarurl+'">'+inputvaluevarname+'</a><input type="hidden" name="postmenu'+randomnumber+'" id="postmenu'+randomnumber+'" value="'+inputitemid+'" /><input type="hidden" name="parent'+randomnumber+'" id="parent'+randomnumber+'" value="'+inputparentid+'" /><input type="hidden" name="title'+randomnumber+'" id="title'+randomnumber+'" value="'+inputvaluevarname+'" /><input type="hidden" name="linkurl'+randomnumber+'" id="linkurl'+randomnumber+'" value="'+inputvaluevarurl+'" /><input type="hidden" name="description'+randomnumber+'" id="description'+randomnumber+'" value="'+inputdescription+'" /><input type="hidden" name="icon'+randomnumber+'" id="icon'+randomnumber+'" value="'+inputicon+'" /><input type="hidden" name="position'+randomnumber+'" id="position'+randomnumber+'" value="'+randomnumber+'" /><input type="hidden" name="linktype'+randomnumber+'" id="linktype'+randomnumber+'" value="'+inputlinktype+'" /><input type="hidden" name="anchortitle'+randomnumber+'" id="anchortitle'+randomnumber+'" value="'+inputvaluevarname+'" /><input type="hidden" name="newwindow'+randomnumber+'" id="newwindow'+randomnumber+'" value="0" /></li>')}else{for(var i=0;i<jQuery('#queue li input[name^="postmenu"]').length;i++){if(itemid==jQuery('#queue li input[name^="postmenu"]')[i].value){var menu_queue_id=jQuery('#queue li input[name^="postmenu"]')[i].name.substring(8,jQuery('#queue li input[name^="postmenu"]')[i].name.length)}}jQuery("#queue li#menu-"+menu_queue_id).remove()}}function addQueuedItemsToMenu(button){jQuery(".maintitle").after('<div id="message" class="updated fade below-h2"><p>Menu Item added!</p></div>');jQuery("#message").animate({opacity:1},2000).fadeOut(300,function(){jQuery(this).remove()});var items=jQuery("#queue").children();jQuery("#queue").empty();jQuery("#custom-nav").append(items);jQuery(button).offsetParent().find(".list-container input").attr("checked",false);updatepostdata();dragAndDrop()}function dragAndDrop(){jQuery("#custom-nav li").draggable({handle:" > dl",opacity:0.8,addClasses:false,helper:"clone",zIndex:100});jQuery("#custom-nav li dl, #custom-nav li .dropzone").droppable({accept:"#custom-nav li",tolerance:"pointer",drop:function(e,ui){var li=jQuery(this).parent();var child=!jQuery(this).hasClass("dropzone");if(child&&li.children("ul").length==0){li.append("<ul/>")}if(child){li.children("ul").append(ui.draggable)}else{li.before(ui.draggable)}li.find("dl,.dropzone").css({backgroundColor:"",borderColor:""});var draggablevalue=ui.draggable.attr("value");var droppablevalue=li.attr("value");li.find("#menu-"+draggablevalue).find("#parent"+draggablevalue).val(droppablevalue);jQuery(this).parent().find("dt").removeAttr("style");jQuery(this).parent().find("div:first").removeAttr("style")},over:function(){if(jQuery(this).attr("class")=="dropzone ui-droppable"){jQuery(this).parent().find("div:first").css("background","none").css("height","50px")}else{if(jQuery(this).attr("class")=="ui-droppable"){jQuery(this).parent().find("dt:first").css("background","#d8d8d8")}else{}}var parentid=jQuery(this).parent().attr("id")},out:function(){jQuery(this).parent().find("dt").removeAttr("style");jQuery(this).parent().find("div:first").removeAttr("style");jQuery(this).filter(".dropzone").css({borderColor:""})}})}; 
     2 No newline at end of file 
  • wp-admin/js/nav-menu-dynamic-functions.dev.js

     
    88 * @subpackage Administration 
    99 */ 
    1010 
     11jQuery(document).ready(function(){ 
     12         
     13        // Clear the search textbox 
     14        jQuery('.quick-search').click(function(){ 
     15                jQuery(this).attr( 'value', '' ); 
     16        }); 
     17         
     18        // Show All 
     19        jQuery('.show-all').click(function(){ 
     20                jQuery(this).offsetParent().find('#add-buttons-actions').attr( 'style','margin-bottom: 10px;' ); 
     21                jQuery(this).offsetParent().find('.list-wrap').css( 'display','block' ); 
     22                jQuery(this).siblings('.quick-search').attr( 'value', '' );              
     23                jQuery(this).offsetParent().find('.list-wrap dt').css( 'display', 'block' ); 
     24                jQuery(this).hide(); 
     25                jQuery(this).siblings('.hide-all').show(); 
     26        }); 
     27         
     28        // Hide All 
     29        jQuery('.hide-all').click(function(){ 
     30                jQuery(this).offsetParent().find('#add-buttons-actions').attr( 'style','margin-bottom: 0px;' ); 
     31                jQuery(this).offsetParent().find('.list-wrap').css( 'display','none' ); 
     32                jQuery(this).siblings('.quick-search').attr( 'value', 'Search' ); 
     33                jQuery(this).offsetParent().find('.list-wrap dt').css( 'display', 'none' ); 
     34                jQuery(this).hide(); 
     35                jQuery(this).siblings('.show-all').show(); 
     36        }); 
     37         
     38        // Create the link, then add it to the Queue 
     39        jQuery('#add-create-link a').click(function(){ 
     40                var link_url = jQuery(this).parent().siblings('.howto').find('#custom-menu-item-url').val(); 
     41                var link_name = jQuery(this).parent().siblings('.howto').find('#custom-menu-item-name').val(); 
     42                var template_dir = ''; 
     43                 
     44                params = { 
     45                        action: 'add-menu-link', 
     46                        link_url: link_url, 
     47                        link_name: link_name, 
     48                }; 
     49                 
     50                // save the link 
     51                jQuery.post( ajaxurl, params, function(response) { 
     52                        template_dir = response[1]; 
     53                                         
     54                        // Add link to the available links section 
     55                        update_links_list(response[0]); 
     56                         
     57                        // Update menu with new link 
     58                        update_nav_menu( template_dir, 'Link', response[0][0].link_name, response[0][0].link_url, response[0][0].link_id, 0, response[0][0].link_description ); 
     59                }, 'json'); 
     60                 
     61                var links = jQuery(this).offsetParent().find('#available-links input:checked'); 
     62                 
     63                // If links are checked in the available links section, add them to the menu 
     64                if ( links ) { 
     65                        for (var i = 0; i < links.length; i++) { 
     66                                update_nav_menu( template_dir, 'Link', links[i].name, links[i].value, links[i].id.substring( 5, links[i].id.length ), 0, '' ); 
     67                        }; 
     68                         
     69                        // Reset the checkboxes; 
     70                        jQuery(links).attr('checked', false); 
     71                }; 
     72        }); 
     73}); 
     74 
     75// Add link to the available links section 
     76function update_links_list(e) { 
     77        var link = '<li><dl><dt><label class="title"><input type="checkbox" id="link-'+ e[0].link_id +'" name="'+ e[0].link_name +'" value="'+ e[0].link_url +'" />'+ e[0].link_name +'</label></dt></dl></li>'; 
     78                 
     79        // Prepend the link to the available links section 
     80        jQuery('#available-links .list').prepend( link ); 
     81         
     82        // Give feedback to the user 
     83        jQuery('#available-links .list #link-' + e[0].link_id).parent().animate( { backgroundColor: '#FFFF33' }, { duration: 'fast', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }}); 
     84} 
     85 
    1186/* 
     87 * Adds the item to the menu 
     88 * 
     89 * @param string id - The menu item's id 
     90 * @param string templatedir - directory of the add, edit, view images. 
     91 * @param string additemtype - Page, Category, or Custom. 
     92 * @param string itemtext - menu text. 
     93 * @param string itemurl - url of the menu. 
     94 * @param int itemid - menu id. 
     95 * @param int itemparentid - default 0. 
     96 * @param string itemdescription - the description of the menu item. 
     97*/ 
     98function update_nav_menu( templatedir, additemtype, itemtext, itemurl, itemid, itemparentid, itemdescription ) { 
     99        var inputvaluevarname = ''; 
     100        var inputvaluevarurl = ''; 
     101        var inputitemid = ''; 
     102        var inputparentid= ''; 
     103        var inputdescription = ''; 
     104        var inputicon = ''; 
     105 
     106        if ( additemtype == navMenuL10n.custom ) { 
     107                inputvaluevarname = htmlentities(itemtext.toString()); 
     108                inputvaluevarurl = itemurl.toString(); 
     109                inputitemid = ''; 
     110                inputparentid = ''; 
     111                inputlinktype = 'custom'; 
     112                inputdescription = ''; 
     113        } else if ( additemtype == navMenuL10n.page ) { 
     114                inputvaluevarname = htmlentities(itemtext.toString()); 
     115                inputvaluevarurl = itemurl.toString(); 
     116                inputitemid = itemid.toString(); 
     117                inputparentid = '0'; 
     118                inputlinktype = 'page'; 
     119                inputdescription = htmlentities(itemdescription.toString()); 
     120 
     121        } else if ( additemtype == navMenuL10n.category ) { 
     122                inputvaluevarname = htmlentities(itemtext.toString()); 
     123                inputvaluevarurl = itemurl.toString(); 
     124                inputitemid = itemid.toString(); 
     125                inputparentid = '0'; 
     126                inputlinktype = 'category'; 
     127                inputdescription = htmlentities(itemdescription.toString()); 
     128        } else { 
     129                inputvaluevarname = htmlentities(itemtext.toString()); 
     130                inputvaluevarurl = itemurl.toString(); 
     131                inputitemid = itemid; 
     132                inputparentid = ''; 
     133                inputlinktype = 'custom'; 
     134                inputdescription = htmlentities(itemdescription.toString()); 
     135        } 
     136 
     137        var count = document.getElementById('custom-nav').getElementsByTagName('li').length + 1; 
     138        var randomnumber = count; 
     139        var validatetest = 0; 
     140 
     141        try { 
     142                var test = document.getElementById( 'menu-' + randomnumber.toString() ).value; 
     143        } 
     144        catch ( err ) { 
     145                validatetest = 1; 
     146        } 
     147 
     148        while ( validatetest == 0 ) { 
     149                randomnumber = randomnumber + 1; 
     150                try { 
     151                        var test2 = document.getElementById( 'menu-' + randomnumber.toString() ).value; 
     152                } 
     153                catch ( err ) { 
     154                        validatetest = 1; 
     155                } 
     156        } 
     157                         
     158        // Adds the item in the queue 
     159        jQuery('#custom-nav').append('<li id="menu-' + randomnumber + '" value="' + randomnumber + '"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="title">' + inputvaluevarname + '</span><span class="controls"><span class="type">' + additemtype + '</span><a id="edit' + randomnumber + '" onclick="edititem(' + randomnumber + ')" value="' + randomnumber +'"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="' + templatedir + '/wp-admin/images/ico-edit.png" /></a> <a id="remove' + randomnumber + '" onclick="removeitem(' + randomnumber + ')" value="' + randomnumber +'"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="' + templatedir + '/wp-admin/images/ico-close.png" /></a> <a href="' + inputvaluevarurl + '" target="_blank"><img alt="View Custom Link" title="View Custom Link" src="' + templatedir + '/wp-admin/images/ico-viewpage.png" /></a></span></dt></dl><a class="hide" href="' + inputvaluevarurl + '">' + inputvaluevarname + '</a><input type="hidden" name="postmenu' + randomnumber + '" id="postmenu' + randomnumber + '" value="' + inputitemid + '" /><input type="hidden" name="parent' + randomnumber + '" id="parent' + randomnumber + '" value="' + inputparentid + '" /><input type="hidden" name="title' + randomnumber + '" id="title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="linkurl' + randomnumber + '" id="linkurl' + randomnumber + '" value="' + inputvaluevarurl + '" /><input type="hidden" name="description' + randomnumber + '" id="description' + randomnumber + '" value="' + inputdescription + '" /><input type="hidden" name="icon' + randomnumber + '" id="icon' + randomnumber + '" value="' + inputicon + '" /><input type="hidden" name="position' + randomnumber + '" id="position' + randomnumber + '" value="' + randomnumber + '" /><input type="hidden" name="linktype' + randomnumber + '" id="linktype' + randomnumber + '" value="' + inputlinktype + '" /><input type="hidden" name="anchortitle' + randomnumber + '" id="anchortitle' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="newwindow' + randomnumber + '" id="newwindow' + randomnumber + '" value="0" /></li>'); 
     160        dragAndDrop(); 
     161}; 
     162 
     163/** 
    12164 * Removes menu items from current menu 
     165 * 
    13166 * @param int o - the id of the menu li to remove. 
    14 */ 
    15 function removeitem(o) 
    16 { 
    17  
     167 */ 
     168function removeitem( o ) { 
    18169        var todelete = document.getElementById('menu-' + o); 
    19  
    20         if (todelete) 
    21         { 
     170         
     171        if ( todelete ) { 
    22172                var parenttodelete = document.getElementById('menu-' + o).parentNode; 
    23173        throwaway_node = parenttodelete.removeChild(todelete); 
    24174        } 
     
    26176        updatepostdata(); 
    27177}; 
    28178 
    29 /* 
     179/** 
    30180 * Loads dialog window to edit menu items from current menu 
     181 * 
    31182 * @param int o - the id of the menu li to edit. 
    32 */ 
    33 function edititem(o) 
    34 { 
     183 */ 
     184function edititem( o ) { 
     185        itemTitle = jQuery('#title' + o).val(); 
     186        itemURL = jQuery('#linkurl' + o).val(); 
     187        itemAnchorTitle = jQuery('#anchortitle' + o).val(); 
     188        itemNewWindow = jQuery('#newwindow' + o).val(); 
     189        itemDesc = jQuery('#description' + o).val(); 
    35190 
    36                 itemTitle = jQuery('#title' + o).val(); 
    37                 itemURL = jQuery('#linkurl' + o).val(); 
    38                 itemAnchorTitle = jQuery('#anchortitle' + o).val(); 
    39                 itemNewWindow = jQuery('#newwindow' + o).val(); 
    40                 itemDesc = jQuery('#description' + o).val(); 
     191        jQuery('#dialog-confirm').dialog( 'option' , 'itemID' , o ) 
    41192 
    42                 jQuery('#dialog-confirm').dialog( 'option' , 'itemID' , o ) 
     193        jQuery('#dialog-confirm').dialog('open'); 
    43194 
    44                 jQuery('#dialog-confirm').dialog('open'); 
    45  
    46                 jQuery('#edittitle').val( itemTitle ); 
    47                 if ( 'custom' == jQuery( '#linktype' + o ).val() ) { 
    48                         jQuery( '#editlink-wrap' ).css( 'display', 'inline' ); 
    49                 } else { 
    50                         jQuery( '#editlink-wrap' ).css( 'display', 'none' ); 
    51                 } 
    52                 jQuery('#editlink').val( itemURL ); 
    53                 jQuery('#editanchortitle').val( itemAnchorTitle ); 
    54                 jQuery("#editnewwindow option[value='" + itemNewWindow  + "']").attr('selected', 'selected'); 
    55                 jQuery('#editdescription').val( itemDesc ); 
    56  
     195        jQuery('#edittitle').val( itemTitle ); 
     196        if ( 'custom' == jQuery( '#linktype' + o ).val() ) { 
     197                jQuery( '#editlink-wrap' ).css( 'display', 'inline' ); 
     198        } else { 
     199                jQuery( '#editlink-wrap' ).css( 'display', 'none' ); 
     200        } 
     201        jQuery('#editlink').val( itemURL ); 
     202        jQuery('#editanchortitle').val( itemAnchorTitle ); 
     203        jQuery("#editnewwindow option[value='" + itemNewWindow  + "']").attr('selected', 'selected'); 
     204        jQuery('#editdescription').val( itemDesc ); 
    57205}; 
    58206 
    59 /* 
     207/** 
    60208 * Prepares menu items for POST 
    61 */ 
    62 function updatepostdata() 
    63 { 
    64  
     209 */ 
     210function updatepostdata() { 
    65211        var i = 0; 
     212         
    66213         jQuery("#custom-nav").find("li").each(function(i) { 
    67214                i = i + 1; 
    68215        var j = jQuery(this).attr('value'); 
     
    82229        jQuery(this).find('#parent' + j).attr('name','parent' + i); 
    83230        jQuery(this).find('#parent' + j).attr('id','parent' + i); 
    84231        if (p) { 
    85                 //Do nothing 
    86         } 
    87         else { 
    88                 //reset p to be top level 
     232                // Do nothing 
     233        } else { 
     234                // reset p to be top level 
    89235                p = 0; 
    90236        } 
    91237 
     
    122268        jQuery('#li-count').attr('value',i); 
    123269 
    124270   }); 
    125  
    126  
    127  
    128271}; 
    129272 
    130273/* 
    131  * Adds item from Page, Category, or Custom options menu 
     274 * Queues items in perperation for appendToList 
     275 * 
     276 * @param string id - The menu item's id 
    132277 * @param string templatedir - directory of the add, edit, view images. 
    133278 * @param string additemtype - Page, Category, or Custom. 
    134279 * @param string itemtext - menu text. 
     
    137282 * @param int itemparentid - default 0. 
    138283 * @param string itemdescription - the description of the menu item. 
    139284*/ 
    140 function appendToList(templatedir,additemtype,itemtext,itemurl,itemid,itemparentid,itemdescription) 
    141 { 
     285function updateQueue( templatedir, additemtype, itemtext, itemurl, itemid, itemparentid, itemdescription ) { 
    142286        var inputvaluevarname = ''; 
    143287        var inputvaluevarurl = ''; 
    144288        var inputitemid = ''; 
     
    146290        var inputdescription = ''; 
    147291        var inputicon = ''; 
    148292 
    149         if (additemtype == navMenuL10n.custom) 
    150         { 
     293        if ( additemtype == navMenuL10n.custom ) { 
    151294                inputvaluevarname = document.getElementById('custom-menu-item-name').value; 
    152295                inputvaluevarurl = document.getElementById('custom-menu-item-url').value; 
    153296                inputitemid = ''; 
    154297                inputparentid = ''; 
    155298                inputlinktype = 'custom'; 
    156299                inputdescription = ''; 
    157         } 
    158         else if (additemtype == navMenuL10n.page) 
    159         { 
     300        } else if ( additemtype == navMenuL10n.page ) { 
    160301                inputvaluevarname = htmlentities(itemtext.toString()); 
    161302                inputvaluevarurl = itemurl.toString(); 
    162303                inputitemid = itemid.toString(); 
     
    164305                inputlinktype = 'page'; 
    165306                inputdescription = htmlentities(itemdescription.toString()); 
    166307 
    167         } 
    168         else if (additemtype == navMenuL10n.category) 
    169         { 
     308        } else if ( additemtype == navMenuL10n.category ) { 
    170309                inputvaluevarname = htmlentities(itemtext.toString()); 
    171310                inputvaluevarurl = itemurl.toString(); 
    172311                inputitemid = itemid.toString(); 
    173312                inputparentid = '0'; 
    174313                inputlinktype = 'category'; 
    175314                inputdescription = htmlentities(itemdescription.toString()); 
    176         } 
    177         else 
    178         { 
     315        } else { 
    179316                inputvaluevarname = ''; 
    180317                inputvaluevarname = ''; 
    181318                inputitemid = ''; 
     
    184321                inputdescription = ''; 
    185322        } 
    186323 
    187         var count=document.getElementById('custom-nav').getElementsByTagName('li').length + 1; 
    188  
     324        var count = document.getElementById('custom-nav').getElementsByTagName('li').length + 1; 
    189325        var randomnumber = count; 
    190  
    191326        var validatetest = 0; 
    192327 
    193         try 
    194         { 
    195                 var test=document.getElementById("menu-" + randomnumber.toString()).value; 
     328        try { 
     329                var test = document.getElementById( 'menu-' + randomnumber.toString() ).value; 
    196330        } 
    197         catch (err) 
    198         { 
     331        catch ( err ) { 
    199332                validatetest = 1; 
    200333        } 
    201334 
    202         while (validatetest == 0) 
    203         { 
     335        while ( validatetest == 0 ) { 
    204336                randomnumber = randomnumber + 1; 
    205  
    206                 try 
    207                 { 
    208                         var test2=document.getElementById("menu-" + randomnumber.toString()).value; 
     337                try { 
     338                        var test2 = document.getElementById( 'menu-' + randomnumber.toString() ).value; 
    209339                } 
    210                 catch (err) 
    211                 { 
     340                catch ( err ) { 
    212341                        validatetest = 1; 
    213342                } 
    214343        } 
     344                         
     345        // Adds or removes the item from the queue 
     346        if ( jQuery(menu_item_id = '#menu-item-' + inputitemid).attr('checked') ) { 
     347                 
     348                // Adds the item in the queue 
     349                jQuery('#queue').append('<li id="menu-' + randomnumber + '" value="' + randomnumber + '"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="title">' + inputvaluevarname + '</span><span class="controls"><span class="type">' + additemtype + '</span><a id="edit' + randomnumber + '" onclick="edititem(' + randomnumber + ')" value="' + randomnumber +'"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="' + templatedir + '/wp-admin/images/ico-edit.png" /></a> <a id="remove' + randomnumber + '" onclick="removeitem(' + randomnumber + ')" value="' + randomnumber +'"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="' + templatedir + '/wp-admin/images/ico-close.png" /></a> <a href="' + inputvaluevarurl + '" target="_blank"><img alt="View Custom Link" title="View Custom Link" src="' + templatedir + '/wp-admin/images/ico-viewpage.png" /></a></span></dt></dl><a class="hide" href="' + inputvaluevarurl + '">' + inputvaluevarname + '</a><input type="hidden" name="postmenu' + randomnumber + '" id="postmenu' + randomnumber + '" value="' + inputitemid + '" /><input type="hidden" name="parent' + randomnumber + '" id="parent' + randomnumber + '" value="' + inputparentid + '" /><input type="hidden" name="title' + randomnumber + '" id="title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="linkurl' + randomnumber + '" id="linkurl' + randomnumber + '" value="' + inputvaluevarurl + '" /><input type="hidden" name="description' + randomnumber + '" id="description' + randomnumber + '" value="' + inputdescription + '" /><input type="hidden" name="icon' + randomnumber + '" id="icon' + randomnumber + '" value="' + inputicon + '" /><input type="hidden" name="position' + randomnumber + '" id="position' + randomnumber + '" value="' + randomnumber + '" /><input type="hidden" name="linktype' + randomnumber + '" id="linktype' + randomnumber + '" value="' + inputlinktype + '" /><input type="hidden" name="anchortitle' + randomnumber + '" id="anchortitle' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="newwindow' + randomnumber + '" id="newwindow' + randomnumber + '" value="0" /></li>'); 
     350        } else { 
     351                 
     352                // Get the item in the queue 
     353                for ( var i = 0; i < jQuery('#queue li input[name^="postmenu"]').length; i++ ) { 
     354                        if ( itemid == jQuery('#queue li input[name^="postmenu"]')[i].value ) { 
     355                                var menu_queue_id = jQuery('#queue li input[name^="postmenu"]')[i].name.substring( 8, jQuery('#queue li input[name^="postmenu"]')[i].name.length ); 
     356                        }; 
     357                }; 
     358                 
     359                // Removes the item from the queue 
     360                jQuery('#queue li#menu-' + menu_queue_id).remove(); 
     361        }; 
     362}; 
    215363 
    216         //Notification Message 
     364/* 
     365 * Grabs items from the queue and adds them to the menu. 
     366 * 
     367 * @param string templatedir - directory of the add, edit, view images. 
     368 * @param string additemtype - Page, Category, or Custom. 
     369 * @param string itemtext - menu text. 
     370 * @param string itemurl - url of the menu. 
     371 * @param int itemid - menu id. 
     372 * @param int itemparentid - default 0. 
     373 * @param string itemdescription - the description of the menu item. 
     374*/ 
     375function addQueuedItemsToMenu( button ) {        
     376        // Notification Message 
    217377        jQuery('.maintitle').after('<div id="message" class="updated fade below-h2"><p>Menu Item added!</p></div>'); 
    218378        jQuery('#message').animate({ opacity: 1.0 },2000).fadeOut(300, function(){ jQuery(this).remove();}); 
     379         
     380        // Grab items in queue 
     381        var items = jQuery('#queue').children(); 
     382         
     383        // Empty Queue 
     384        jQuery('#queue').empty(); 
     385                 
     386        // Appends HTML to the menu 
     387        jQuery('#custom-nav').append( items ); 
     388         
     389        // Uncheck the checkboxes 
     390        jQuery(button).offsetParent().find('.list-container input').attr('checked', false); 
     391         
     392        updatepostdata(); 
     393        dragAndDrop(); 
     394}; 
    219395 
    220         //Appends HTML to the menu 
    221         jQuery('#custom-nav').append('<li id="menu-' + randomnumber + '" value="' + randomnumber + '"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="title">' + inputvaluevarname + '</span><span class="controls"><span class="type">' + additemtype + '</span><a id="edit' + randomnumber + '" onclick="edititem(' + randomnumber + ')" value="' + randomnumber +'"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="' + templatedir + '/wp-admin/images/ico-edit.png" /></a> <a id="remove' + randomnumber + '" onclick="removeitem(' + randomnumber + ')" value="' + randomnumber +'"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="' + templatedir + '/wp-admin/images/ico-close.png" /></a> <a href="' + inputvaluevarurl + '" target="_blank"><img alt="View Custom Link" title="View Custom Link" src="' + templatedir + '/wp-admin/images/ico-viewpage.png" /></a></span></dt></dl><a class="hide" href="' + inputvaluevarurl + '">' + inputvaluevarname + '</a><input type="hidden" name="postmenu' + randomnumber + '" id="postmenu' + randomnumber + '" value="' + inputitemid + '" /><input type="hidden" name="parent' + randomnumber + '" id="parent' + randomnumber + '" value="' + inputparentid + '" /><input type="hidden" name="title' + randomnumber + '" id="title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="linkurl' + randomnumber + '" id="linkurl' + randomnumber + '" value="' + inputvaluevarurl + '" /><input type="hidden" name="description' + randomnumber + '" id="description' + randomnumber + '" value="' + inputdescription + '" /><input type="hidden" name="icon' + randomnumber + '" id="icon' + randomnumber + '" value="' + inputicon + '" /><input type="hidden" name="position' + randomnumber + '" id="position' + randomnumber + '" value="' + randomnumber + '" /><input type="hidden" name="linktype' + randomnumber + '" id="linktype' + randomnumber + '" value="' + inputlinktype + '" /><input type="hidden" name="anchortitle' + randomnumber + '" id="anchortitle' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="newwindow' + randomnumber + '" id="newwindow' + randomnumber + '" value="0" /></li>'); 
    222  
    223         //make menu item draggable 
    224         jQuery('#menu-' + randomnumber + '').draggable( 
    225         { 
     396function dragAndDrop() { 
     397        // make menu item draggable 
     398        jQuery('#custom-nav li').draggable({ 
    226399                handle: ' > dl', 
    227400                opacity: .8, 
    228401                addClasses: false, 
     
    230403                zIndex: 100 
    231404        }); 
    232405 
    233         //make menu item droppable 
    234         jQuery('#menu-' + randomnumber + ' dl, #menu-' + randomnumber + ' .dropzone').droppable({ 
    235                 accept: '#' + randomnumber + ', #custom-nav li', 
     406        // make menu item droppable 
     407        jQuery('#custom-nav li dl, #custom-nav li .dropzone').droppable({ 
     408                accept: '#custom-nav li', 
    236409                tolerance: 'pointer', 
    237                 drop: function(e, ui) 
    238                 { 
     410                drop: function(e, ui) { 
    239411                        var li = jQuery(this).parent(); 
    240412                        var child = !jQuery(this).hasClass('dropzone'); 
    241                         //Append UL to first child 
    242                         if (child && li.children('ul').length == 0) 
    243                         { 
    244                                 li.append('<ul/>'); 
     413                         
     414                        // Append UL to first child 
     415                        if ( child && li.children('ul').length == 0 ) { 
     416                                li.append( '<ul/>' ); 
    245417                        } 
    246                         //Make it draggable 
    247                         if (child) 
    248                         { 
    249                                 li.children('ul').append(ui.draggable); 
     418                        // Make it draggable 
     419                        if ( child ) { 
     420                                li.children('ul').append( ui.draggable ); 
     421                        } else { 
     422                                li.before( ui.draggable ); 
    250423                        } 
    251                         else 
    252                         { 
    253                                 li.before(ui.draggable); 
    254                         } 
    255424 
    256425                        li.find('dl,.dropzone').css({ backgroundColor: '', borderColor: '' }); 
    257426 
    258427                        var draggablevalue = ui.draggable.attr('value'); 
    259                 var droppablevalue = li.attr('value'); 
    260                 li.find('#menu-' + draggablevalue).find('#parent' + draggablevalue).val(droppablevalue); 
    261                 jQuery(this).parent().find("dt").removeAttr('style'); 
    262                 jQuery(this).parent().find("div:first").removeAttr('style'); 
     428                        var droppablevalue = li.attr('value'); 
     429                         
     430                        li.find('#menu-' + draggablevalue).find('#parent' + draggablevalue).val(droppablevalue); 
     431                        jQuery(this).parent().find("dt").removeAttr('style'); 
     432                        jQuery(this).parent().find("div:first").removeAttr('style'); 
    263433 
    264434                }, 
    265                 over: function() 
    266                 { 
    267                         //Add child 
    268                         if (jQuery(this).attr('class') == 'dropzone ui-droppable') 
    269                         { 
     435                over: function() { 
     436                        // Add child 
     437                        if ( jQuery(this).attr('class') == 'dropzone ui-droppable' ) { 
    270438                                jQuery(this).parent().find("div:first").css('background', 'none').css('height', '50px'); 
    271439                        } 
    272                         //Add above 
    273                         else if (jQuery(this).attr('class') == 'ui-droppable') 
    274                         { 
     440                        // Add above 
     441                        else if ( jQuery(this).attr('class') == 'ui-droppable' ) { 
    275442                                jQuery(this).parent().find("dt:first").css('background', '#d8d8d8'); 
     443                        } else { 
     444                                        // do nothing 
    276445                        } 
    277                         //do nothing 
    278                         else { 
    279  
    280                         } 
    281446                        var parentid = jQuery(this).parent().attr('id'); 
    282447 
    283448                }, 
    284                 out: function() 
    285                 { 
     449                out: function() { 
    286450                        jQuery(this).parent().find("dt").removeAttr('style'); 
    287451                        jQuery(this).parent().find("div:first").removeAttr('style'); 
    288452                        jQuery(this).filter('.dropzone').css({ borderColor: '' }); 
    289453                } 
    290         }); 
    291  
    292         updatepostdata(); 
    293 }; 
    294  No newline at end of file 
     454                } 
     455        ); 
     456} 
     457 No newline at end of file 
  • wp-admin/nav-menus.php

     
    3838$updated = false; 
    3939$advanced_option_descriptions = 'no'; 
    4040 
     41// Create the a link_category term to store all custom links 
     42if ( !is_term( __('Custom Menu Links'), 'link_category' ) ) { 
     43        wp_create_term( __('Custom Menu Links'), 'link_category' ); 
     44} 
     45 
     46// Get all Custom Menu Links 
     47$custom_menu_links = get_bookmarks( array( 'category_name' => __('Custom Menu Links') ) ); 
     48 
    4149// Check which menu is selected and if menu is in edit already 
    4250if ( isset( $_GET['edit-menu'] ) ) { 
    4351        $menu_selected_id = (int) $_GET['edit-menu']; 
     
    164172        <?php echo $messages_div; ?> 
    165173        <div class="hide-if-js error"><p><?php _e('You do not have JavaScript enabled in your browser. Please enable it to access the Menus functionality.'); ?></p></div> 
    166174         
    167          
    168         <form onsubmit="updatepostdata()" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data"> 
     175        <form onsubmit="updatepostdata();" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data"> 
    169176                <?php if ( ! empty( $custom_menus ) && count( $custom_menus ) > 1 ) : ?> 
    170177                <ul class="subsubsub"> 
    171178                        <?php 
     
    201208                                                <h3 class="hndle"><?php esc_html_e('Add a Custom Link'); ?></h3> 
    202209                                                <div class="inside"> 
    203210                                                         
    204                                                         <p class="howto"><label for="custom-menu-item-url"><input id="custom-menu-item-url" type="text" class="widefat code" value="http://" /><?php _e('URL'); ?></label></p> 
     211                                                        <p class="howto"><label for="custom-menu-item-url"><span style="padding-right: 8px;"><?php _e('URL'); ?></span><input id="custom-menu-item-url" type="text" class="code" value="http://" /></label></p> 
    205212                                                         
    206213                                                        <?php $template_dir = get_bloginfo('url'); ?> 
    207214                                                        <input type="hidden" id="template-dir" value="<?php echo esc_attr($template_dir); ?>" /> 
    208215                                                         
    209                                                         <p class="howto"><label for="custom-menu-item-name"><input id="custom-menu-item-name" type="text" class="widefat regular-text" value="<?php echo esc_attr( __('Menu Item') ); ?>" /><?php _e('Text'); ?></label></p> 
     216                                                        <p class="howto"><label for="custom-menu-item-name"><span><?php _e('Text'); ?></span><input id="custom-menu-item-name" type="text" class="regular-text" value="<?php echo esc_attr( __('Menu Item') ); ?>" /></label></p> 
    210217                                                         
    211218                                                        <label class="howto" for="custom_menu_item_description" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?>> 
    212219                                                                <input id="custom_menu_item_description" type="text" class="widefat regular-text" value="<?php esc_attr_e('A description'); ?>" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> onfocus="jQuery('#custom_menu_item_description').attr('value','');" /> 
     
    215222                                                         
    216223                                                        <?php if ( 'no' != $advanced_option_descriptions ) { echo '<br />'; } ?> 
    217224                                                         
    218                                                         <a class="addtomenu button" onclick="appendToList('<?php echo $template_dir; ?>','<?php echo esc_js( _x('Custom', 'menu nav item type') ); ?>','','','','0','');jQuery('#custom-menu-item-name').attr('value','<?php echo esc_js( __('Menu Item') ); ?>');jQuery('#custom_menu_item_description').attr('value','<?php echo esc_js( __('A description') ); ?>');"><?php _e('Add Link'); ?></a> 
     225                                        <?php if ( $custom_menu_links ) : ?> 
     226                                                        <p id="add-buttons-actions" class="buttons-actions"> 
     227                                                                <a class="show-all button"><?php _e('View All'); ?></a> 
     228                                                                <a class="hide-all button"><?php _e('Hide All'); ?></a> 
     229                                                        </p> 
     230                                        <?php endif; ?> 
     231                                        <?php if ( $custom_menu_links ) : ?> 
     232                                                        <div id="available-links" class="list-wrap"> 
     233                                                                <div class="list-container"> 
     234                                                                        <ul class="list"> 
     235                                                                                <?php 
     236                                                                                        foreach ( $custom_menu_links as $link ) : ?> 
     237                                                                                        <li> 
     238                                                                                                <dl> 
     239                                                                                                        <dt> 
     240                                                                                                                <label class="title"><input type="checkbox" id="link-<?php echo esc_attr($link->link_id); ?>" name="<?php echo esc_attr($link->link_name); ?>" value="<?php echo esc_attr($link->link_url); ?>" /><?php echo esc_html($link->link_name); ?></label> 
     241                                                                                                        </dt> 
     242                                                                                                </dl> 
     243                                                                                        </li> 
     244                                                                                        <?php 
     245                                                                                        endforeach; 
     246                                                                                ?> 
     247                                                                        </ul> 
     248                                                                </div><!-- /.list-container--> 
     249                                                        </div><!-- /#available-links--> 
     250                                                <?php endif; ?> 
     251                                                        <p id="add-create-link" class="buttons-actions"><a class="button"><?php _e('Add'); ?></a></p> 
    219252                                                        <br class="clear" /> 
    220253                                                </div><!-- /.inside--> 
    221254                                        </div><!-- /#add-custom-link--> 
     
    226259                                                <div class="inside"> 
    227260                                                        <?php 
    228261                                                                $pages_args = array( 
    229                                                                         'child_of' => 0, 
    230                                                                         'sort_order' => 'ASC', 
    231                                                                         'sort_column' => 'post_title', 
    232                                                                         'hierarchical' => 1, 
    233                                                                         'exclude' => '', 
    234                                                                         'include' => '', 
    235                                                                         'meta_key' => '', 
    236                                                                         'meta_value' => '', 
    237                                                                         'authors' => '', 
    238                                                                         'parent' => -1, 
    239                                                                         'exclude_tree' => '', 
    240                                                                         'number' => '', 
    241                                                                         'offset' => 0 
     262                                                                        'child_of' => 0, 'sort_order' => 'ASC', 'sort_column' => 'post_title', 'hierarchical' => 1, 
     263                                                                        'exclude' => '', 'include' => '', 'meta_key' => '', 'meta_value' => '', 'authors' => '', 
     264                                                                        'parent' => -1, 'exclude_tree' => '', 'number' => '', 'offset' => 0 
    242265                                                                ); 
    243266                                                                $page_name = ''; 
    244267                                                                $pages_array = get_pages($pages_args); 
     
    252275                                                        ?> 
    253276                                                        <script type="text/javascript" charset="<?php bloginfo('charset'); ?>"> 
    254277                                                                jQuery(document).ready(function(){ 
    255                                                                         var posts = "<?php echo esc_js( $page_name ); ?>".split("|"); 
    256                                                                         jQuery("#page-search").autocomplete(posts); 
    257                                                                         jQuery("#page-search").result(function(event, data, formatted) { 
    258                                                                                 jQuery('#existing-pages').css('display','block'); 
    259                                                                                 jQuery("#existing-pages dt:contains('" + data + "')").css("display", "block"); 
    260                                                                                 jQuery('#show-pages').hide(); 
    261                                                                                 jQuery('#hide-pages').show(); 
     278                                                                        var posts = "<?php echo esc_js( $page_name ); ?>".split('|'); 
     279                                                                        jQuery('#add-pages .quick-search').autocomplete(posts); 
     280                                                                        jQuery('#add-pages .quick-search').result(function(event, data, formatted) { 
     281                                                                                jQuery('#add-pages .list-container').css('display','block'); 
     282                                                                                jQuery("#add-pages .list-container dt:contains('" + data + "')").css('display','block'); 
     283                                                                                jQuery('#add-pages .show-all').hide(); 
     284                                                                                jQuery('#add-pages .hide-all').show(); 
    262285                                                                        }); 
    263                                                                         jQuery('#existing-pages').css('display','none'); 
    264286                                                                }); 
    265287                                                        </script> 
    266                                                         <input type="text" onfocus="jQuery('#page-search').attr('value','');" id="page-search" class="regular-text" value="<?php esc_attr_e('Search Pages'); ?>" /> 
    267  
    268                                                         <a id="show-pages" style="cursor:pointer;" onclick="jQuery('#existing-pages').css('display','block');jQuery('#page-search').attr('value','');jQuery('#existing-pages dt').css('display','block');jQuery('#show-pages').hide();jQuery('#hide-pages').show();"><?php _e('View All'); ?></a> 
    269                                                         <a id="hide-pages" style="cursor:pointer;" onclick="jQuery('#existing-pages').css('display','none');jQuery('#page-search').attr('value','Search Pages');jQuery('#existing-pages dt').css('display','none');jQuery('#show-pages').show();jQuery('#hide-pages').hide();"><?php _e('Hide All'); ?></a> 
    270  
    271                                                         <script type="text/javascript"> 
    272                                                                 jQuery('#hide-pages').hide(); 
    273                                                         </script> 
     288                                                        <p class="buttons-actions"> 
     289                                                                <input type="text" class="quick-search regular-text" value="<?php esc_attr_e('Search Pages'); ?>" /> 
     290                                                                <a class="show-all button"><?php _e('View All'); ?></a> 
     291                                                                <a class="hide-all button"><?php _e('Hide All'); ?></a> 
     292                                                        </p> 
    274293                                                         
    275                                                          
    276                                                         <div id="existing-pages" class="list-container"> 
    277                                                                 <ul class="list"> 
    278                                                                 <?php $items_counter = wp_nav_menu_get_pages( 0,'default' ); ?> 
    279                                                                 </ul> 
    280                                                         </div><!-- /.list-container--> 
     294                                                        <div id="existing-pages" class="list-wrap"> 
     295                                                                <div class="list-container"> 
     296                                                                        <ul class="list"> 
     297                                                                        <?php $items_counter = wp_nav_menu_get_pages( 0,'default' ); ?> 
     298                                                                        </ul> 
     299                                                                </div><!-- /.list-container--> 
     300                                                                <p class="submit"><a class="button" onclick="addQueuedItemsToMenu(this);">Add</a></p> 
     301                                                        </div><!-- /#existing-pages--> 
    281302                                                        <br class="clear" /> 
    282303                                                </div><!-- /.inside--> 
    283304                                        </div><!--END #add-pages--> 
     
    311332                                                        ?> 
    312333                                                        <script type="text/javascript" charset="<?php bloginfo('charset'); ?>"> 
    313334                                                                jQuery(document).ready(function(){ 
    314                                                                         var categories = "<?php echo esc_js($cat_name); ?>".split("|"); 
    315                                                                         jQuery("#cat-search").autocomplete(categories); 
    316                                                                         jQuery("#cat-search").result(function(event, data, formatted) { 
    317                                                                                 jQuery('#existing-categories').css('display','block'); 
    318                                                                                 jQuery("#existing-categories dt:contains('" + data + "')").css("display", "block"); 
    319                                                                                 jQuery('#show-cats').hide(); 
    320                                                                                 jQuery('#hide-cats').show(); 
     335                                                                        var categories = "<?php echo esc_js($cat_name); ?>".split('|'); 
     336                                                                        jQuery('#add-categories .quick-search').autocomplete(categories); 
     337                                                                        jQuery('#add-categories .quick-search').result(function(event, data, formatted) { 
     338                                                                                jQuery('#add-categories .list-container').css('display','block'); 
     339                                                                                jQuery("#add-categories .list-container dt:contains('" + data + "')").css('display','block'); 
     340                                                                                jQuery('#add-categories .show-all').hide(); 
     341                                                                                jQuery('#add-categories .hide-all').show(); 
    321342                                                                        }); 
    322                                                                         jQuery('#existing-categories').css('display','none'); 
    323343                                                                }); 
    324344                                                        </script> 
    325  
    326                                                         <input type="text" onfocus="jQuery('#cat-search').attr('value','');" id="cat-search" class="regular-text" value="<?php esc_attr_e('Search Categories'); ?>" /> 
    327  
    328                                                         <a id="show-cats" style="cursor:pointer;" onclick="jQuery('#existing-categories').css('display','block');jQuery('#cat-search').attr('value','');jQuery('#existing-categories dt').css('display','block');jQuery('#show-cats').hide();jQuery('#hide-cats').show();"><?php _e('View All'); ?></a> 
    329                                                         <a id="hide-cats" style="cursor:pointer;" onclick="jQuery('#existing-categories').css('display','none');jQuery('#cat-search').attr('value','Search Categories');jQuery('#existing-categories dt').css('display','none');jQuery('#show-cats').show();jQuery('#hide-cats').hide();"><?php _e('Hide All'); ?></a> 
    330  
    331                                                         <script type="text/javascript"> 
    332                                                                 jQuery('#hide-cats').hide(); 
    333                                                         </script> 
    334  
    335                                                         <div id="existing-categories" class="list-container"> 
    336                                                                 <ul class="list"> 
    337                                                                         <?php $items_counter = wp_nav_menu_get_categories( $items_counter, 'default' ); ?> 
    338                                                                 </ul> 
    339                                                         </div><!-- /.list-container--> 
     345                                                        <p class="buttons-actions"> 
     346                                                                <input type="text" class="quick-search regular-text" value="<?php esc_attr_e('Search Categories'); ?>" /> 
     347                                                                <a class="show-all button"><?php _e('View All'); ?></a> 
     348                                                                <a class="hide-all button"><?php _e('Hide All'); ?></a> 
     349                                                        </p> 
     350                                                         
     351                                                        <div id="existing-categories" class="list-wrap"> 
     352                                                                <div class="list-container"> 
     353                                                                        <ul class="list"> 
     354                                                                                <?php $items_counter = wp_nav_menu_get_categories( $items_counter, 'default' ); ?> 
     355                                                                        </ul> 
     356                                                                </div><!-- /.list-container--> 
     357                                                                <p class="submit"><a class="button" onclick="addQueuedItemsToMenu(this);">Add</a></p> 
     358                                                        </div><!-- /#existing-categories--> 
    340359                                                        <br class="clear" /> 
    341360                                                </div><!-- /.inside--> 
    342361                                        </div><!--END #add-categories--> 
     
    361380                                                                } 
    362381                                                                ?> 
    363382                                                                </ul><!-- /#custom-nav--> 
     383                                                                 
     384                                                                <div id="queue" class="hide"> 
     385                                                                </div><!--/#queue--> 
    364386                                                        </div><!-- /.inside --> 
    365387                                                <!-- /#nav-menu-canvas .postbox--> 
    366388                                                </div> 
     
    368390                                                        <script type="text/javascript"> 
    369391                                                                updatepostdata(); 
    370392                                                        </script> 
    371                                                         <input id="save_bottom" name="save_bottom" type="submit" value="<?php esc_attr_e('Save All Changes'); ?>" /> 
    372                                                         <input id="delete-menu" name="delete-menu" type="submit" value="<?php esc_attr_e('Delete This Menu'); ?>" /> 
     393                                                        <input class="button-primary" id="save_bottom" name="save_bottom" type="submit" value="<?php esc_attr_e('Save All Changes'); ?>" /> 
     394                                                        <input class="delete" id="delete-menu" name="delete-menu" type="submit" value="<?php esc_attr_e('Delete This Menu'); ?>" /> 
    373395                                                </p> 
    374396                                                 
    375397                                        <?php else : ?> 
     
    395417        </span> 
    396418        <span id="editdescription-wrap"> 
    397419        <input id="editdescription" type="text" name="editdescription" value="" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> /><label class="editlabel" for="editdescription" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> ><?php _e('Description'); ?></label><br /></span> 
    398 </div> 
     420</div><!-- /#dialog-confirm--> 
    399421 
    400422<?php 
    401423 
  • wp-admin/css/nav-menu.css

     
    1 .maintitle{margin:0 0 20px 0!important;}.logo{vertical-align:middle;margin:0 10px 0 0;}h2.heading{margin:32px 0 10px 0;}.checkboxes{float:right;margin:10px 12px 0 0;}#menus-container{clear:both;}#nav-container .inside{padding:0 10px 10px;}#menus-container .submit{padding:0;}#menu-settings-column .inside{padding:10px;}#custom-nav ul{width:100%;}#custom-nav li{margin:0;}.ui-draggable-dragging{width:500px;}#custom-nav li dl dt{-webkit-border-bottom-left-radius:6px;-webkit-border-bottom-right-radius:6px;-webkit-border-top-left-radius:6px;-webkit-border-top-right-radius:6px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top-left-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-bottomright:6px;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;border:1px solid #E6E6E6;position:relative;padding-left:10px;background-color:#f1f1f1;height:35px;line-height:35px;}#custom-nav li dl dt:hover{cursor:move;}#custom-nav li dl dt .controls{position:absolute;right:15px;top:-1px;}#custom-nav li dl dt img{vertical-align:middle;}#custom-nav li .title{background:url(../images/ico-arrow.png) no-repeat 4px 5px;background-position:center left;padding-left:15px;}#custom-nav li ul li{margin-left:20px;opacity:.7;}#custom-nav li ul li ul li{opacity:.9;}#custom-nav li ul li ul li ul li{opacity:.9;}#custom-nav li ul li ul li ul li ul li{opacity:.95;}#add-custom-link .howto{font-size:11px;}#add-custom-link .widefat{width:85%;margin-right:5px;}.list-container{max-height:203px;overflow-y:auto;padding-left:2px;padding-right:5px;}.list{zoom:1;}.list li{margin:0;}.list dt{display:none;margin:0;border-bottom:1px solid #e3e3e3;overflow:hidden;}.list dt{background:url(../images/ico-add.png) no-repeat right;}.list li .title{cursor:pointer;display:block;width:95%;padding:5px 0;}.list li .title{background:url(../images/ico-arrow.png) no-repeat 4px 13px;background-position:center left;padding-left:5%;}.list li ul li .title{margin-left:14px;}.list li ul li ul li .title{margin-left:28px;}.list li ul li ul li ul li .title{margin-left:42px;}.list li ul li ul li ul li ul li .title{margin-left:56px;}.list li ul li ul li ul li ul li ul li .title{margin-left:70px;}.list li ul li ul li ul li ul li ul li ul li .title{margin-left:84px;}.list li ul li ul li ul li ul li ul li ul li ul li .title{margin-left:98px;}.list li ul li ul li ul li ul li ul li ul li ul li ul li .title{margin-left:112px;}img.remove,img.edit{cursor:pointer;margin:0 5px 0 0;}.dropzone{height:7px;margin:3px 0 3px 0;}.hide{display:none;}.type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}#menu_select{width:170px;}#dialog-confirm label{padding-left:10px;}.ui-dialog{background:#fff;border:1px solid #555;-moz-box-shadow:0 4px 30px #000;}.ui-dialog-titlebar{color:#CFCFCF;font-family:"Lucida Grande",Verdana,Arial,sans-serif;padding:6px 10px 6px;background-color:#222!important;border:none!important;-moz-border-radius:none!important;}#dialog-confirm{height:168px!important;padding:20px 10px 10px;}#dialog-confirm input{margin:0 0 15px 0;width:280px;}#dialog-confirm select{margin:0 0 15px 0;}.ui-dialog-buttonpane{padding:10px;}.ui-dialog-buttonpane button{margin:0 10px 0 0;background:#F2F2F2;text-shadow:0 1px 0 #FFF;border-color:#BBB;color:#464646;-moz-border-radius-bottomleft:11px;-moz-border-radius-bottomright:11px;-moz-border-radius-topleft:11px;-moz-border-radius-topright:11px;border-style:solid;border-width:1px;cursor:pointer;font-size:11px!important;line-height:14px;padding:2px 8px;text-decoration:none;}.ui-dialog-buttonpane button:hover{color:#000;border-color:#666;}.ui-icon{display:none;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.60;filter:Alpha(Opacity=60);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.60;filter:Alpha(Opacity=60);-moz-border-radius:8px;-webkit-border-radius:8px;} 
    2  No newline at end of file 
     1.maintitle{margin:0 0 20px 0!important;}.logo{vertical-align:middle;margin:0 10px 0 0;}h2.heading{margin:32px 0 10px 0;}.checkboxes{float:right;margin:10px 12px 0 0;}#menus-container{clear:both;}#nav-container .inside{padding:0 10px 10px;}#menus-container .submit{padding:0;}#menu-settings-column .inside{padding:10px;}#custom-nav ul{width:100%;}#custom-nav li{margin:0;}.ui-draggable-dragging{width:500px;}#custom-nav li dl dt{-webkit-border-bottom-left-radius:6px;-webkit-border-bottom-right-radius:6px;-webkit-border-top-left-radius:6px;-webkit-border-top-right-radius:6px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top-left-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-bottomright:6px;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;border:1px solid #E6E6E6;position:relative;padding-left:10px;background-color:#f1f1f1;height:35px;line-height:35px;}#custom-nav li dl dt:hover{cursor:move;}#custom-nav li dl dt .controls{position:absolute;right:15px;top:-1px;}#custom-nav li dl dt img{vertical-align:middle;}#custom-nav li .title{background:url(../images/ico-arrow.png) no-repeat 4px 5px;background-position:center left;padding-left:15px;}#custom-nav li ul li{margin-left:20px;opacity:.7;}#custom-nav li ul li ul li{opacity:.9;}#custom-nav li ul li ul li ul li{opacity:.9;}#custom-nav li ul li ul li ul li ul li{opacity:.95;}p .button{float:right;}#add-buttons-actions{float:left;}#add-create-link{float:right;}.buttons-actions{margin:0;}#available-links{margin:15px 0 0;}#available-links dt{display:block;}#add-custom-link .howto{font-size:11px;}#add-custom-link label span{padding-right:5px;}#custom-menu-item-url,#custom-menu-item-name{width:227px;}.show-all,.hide-all{cursor:pointer;}.hide-all{display:none;}.list-wrap{display:none;clear:both;}.list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px;border:1px solid #DFDFDF;margin:10px 0 10px;-moz-border-radius:4px;}.postbox p.submit{margin-bottom:0;}.list{zoom:1;}.list li{margin:0;}.list dt{display:none;margin:0;overflow:hidden;margin-bottom:5px;}.list li .title{cursor:pointer;display:block;}.list li .title input{margin-right:3px;margin-top:-3px;}.list li ul li .title{margin-left:14px;}.list li ul li ul li .title{margin-left:28px;}.list li ul li ul li ul li .title{margin-left:42px;}.list li ul li ul li ul li ul li .title{margin-left:56px;}.list li ul li ul li ul li ul li ul li .title{margin-left:70px;}.list li ul li ul li ul li ul li ul li ul li .title{margin-left:84px;}.list li ul li ul li ul li ul li ul li ul li ul li .title{margin-left:98px;}.list li ul li ul li ul li ul li ul li ul li ul li ul li .title{margin-left:112px;}img.remove,img.edit{cursor:pointer;margin:0 5px 0 0;}.dropzone{height:7px;margin:3px 0 3px 0;}.hide{display:none;}.type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}#menu_select{width:170px;}#dialog-confirm label{padding-left:10px;}.ui-dialog{background:#fff;border:1px solid #555;-moz-box-shadow:0 4px 30px #000;}.ui-dialog-titlebar{color:#CFCFCF;font-family:"Lucida Grande",Verdana,Arial,sans-serif;padding:6px 10px 6px;background-color:#222!important;border:none!important;-moz-border-radius:none!important;}#dialog-confirm{height:168px!important;padding:20px 10px 10px;}#dialog-confirm input{margin:0 0 15px 0;width:280px;}#dialog-confirm select{margin:0 0 15px 0;}.ui-dialog-buttonpane{padding:10px;}.ui-dialog-buttonpane button{margin:0 10px 0 0;background:#F2F2F2;text-shadow:0 1px 0 #FFF;border-color:#BBB;color:#464646;-moz-border-radius-bottomleft:11px;-moz-border-radius-bottomright:11px;-moz-border-radius-topleft:11px;-moz-border-radius-topright:11px;border-style:solid;border-width:1px;cursor:pointer;font-size:11px!important;line-height:14px;padding:2px 8px;text-decoration:none;}.ui-dialog-buttonpane button:hover{color:#000;border-color:#666;}.ui-icon{display:none;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.60;filter:Alpha(Opacity=60);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.60;filter:Alpha(Opacity=60);-moz-border-radius:8px;-webkit-border-radius:8px;} 
     2 No newline at end of file 
  • wp-admin/css/nav-menu.dev.css

     
    3232#custom-nav li ul li ul li ul li   { opacity: .9;} 
    3333#custom-nav li ul li ul li ul li ul li   { opacity: .95; } 
    3434 
     35p .button { float: right; } 
     36 
     37/* Custom Links */ 
     38#add-buttons-actions { float: left; } 
     39#add-create-link { float: right; } 
     40 
     41.buttons-actions { margin: 0; } 
     42 
     43#available-links { margin: 15px 0px 0px; } 
     44#available-links dt { display: block; } 
    3545#add-custom-link .howto { font-size: 11px; } 
    36 #add-custom-link .widefat { width: 85%; margin-right: 5px; } 
     46#add-custom-link label span { padding-right: 5px; } 
     47#custom-menu-item-url, #custom-menu-item-name { width: 227px; } 
    3748 
    38 .list-container { max-height: 203px; overflow-y: auto; padding-left: 2px; padding-right: 5px; } 
     49/* Pages/Categories */ 
     50.show-all, .hide-all { cursor: pointer; } 
     51.hide-all { display: none; } 
     52.quick-search {  } 
    3953 
     54.list-wrap { display: none; clear: both; } 
     55 
     56.list-container { max-height: 200px; overflow-y: auto; padding: 10px 10px 5px; border: 1px solid #DFDFDF; margin: 10px 0px 10px; -moz-border-radius: 4px; } 
     57 
     58.postbox p.submit { margin-bottom: 0; } 
     59 
    4060.list { zoom: 1; } 
    4161.list li { margin: 0; } 
    42 .list dt { display: none; margin: 0; border-bottom: 1px solid #e3e3e3; overflow: hidden; } 
    43 .list dt { background: url(../images/ico-add.png) no-repeat right; } 
     62.list dt { display: none; margin: 0; overflow: hidden; margin-bottom: 5px; } 
    4463 
    45 .list li .title { cursor: pointer; display: block; width: 95%; padding: 5px 0px; } 
    46 .list li .title { background: url(../images/ico-arrow.png) no-repeat 4px 13px; background-position: center left; padding-left: 5%; } 
     64.list li .title { cursor: pointer; display: block; } 
     65.list li .title input { margin-right: 3px; margin-top: -3px; } 
    4766 
    4867/* Visually shows the menu item hierarchy. */ 
    4968.list li ul li .title  { margin-left: 14px; }