WordPress.org

Make WordPress Core

Changeset 14468


Ignore:
Timestamp:
05/05/10 21:23:53 (4 years ago)
Author:
nacin
Message:

Only make one ajax call for multiple items. Also move jQuery extensions into their own function. props koopersmith, see #13220.

Location:
trunk/wp-admin/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/js/nav-menu.dev.js

    r14467 r14468  
    8989    menuList, targetList, api; 
    9090 
    91     // jQuery extensions 
    92     $.fn.extend({ 
    93         menuItemDepth : function() { 
    94             return pxToDepth( this.eq(0).css('margin-left').slice(0, -2) ); 
    95         }, 
    96         updateDepthClass : function(current, prev) { 
    97             return this.each(function(){ 
    98                 var t = $(this); 
    99                 prev = prev || t.menuItemDepth(); 
    100                 $(this).removeClass('menu-item-depth-'+ prev ) 
    101                     .addClass('menu-item-depth-'+ current ); 
    102             }); 
    103         }, 
    104         shiftDepthClass : function(change) { 
    105             return this.each(function(){ 
    106                 var t = $(this), 
    107                     depth = t.menuItemDepth(); 
    108                 $(this).removeClass('menu-item-depth-'+ depth ) 
    109                     .addClass('menu-item-depth-'+ (depth + change) ); 
    110             }); 
    111         }, 
    112         childMenuItems : function() { 
    113             var result = $(); 
    114             this.each(function(){ 
    115                 var t = $(this), depth = t.menuItemDepth(), next = t.next(); 
    116                 while( next.length && next.menuItemDepth() > depth ) { 
    117                     result = result.add( next ); 
    118                     next = next.next(); 
    119                 } 
    120             }); 
    121             return result; 
    122         }, 
    123         updateParentMenuItemDBId : function() { 
    124             return this.each(function(){ 
    125                 var item = $(this), 
    126                     input = item.find('.menu-item-data-parent-id'), 
    127                     depth = item.menuItemDepth(), 
    128                     parent = item.prev(); 
    129  
    130                 if( depth == 0 ) { // Item is on the top level, has no parent 
    131                     input.val(0); 
    132                 } else { // Find the parent item, and retrieve its object id. 
    133                     while( parent.menuItemDepth() != depth - 1 ) { 
    134                         parent = parent.prev(); 
    135                     } 
    136                     input.val( parent.find('.menu-item-data-db-id').val() ); 
    137                 } 
    138             }); 
    139         }, 
    140         hideAdvancedMenuItemFields : function() { 
    141             return this.each(function(){ 
    142                 var that = $(this); 
    143                 $('.hide-column-tog').not(':checked').each(function(){ 
    144                     that.find('.field-' + $(this).val() ).addClass('hidden-field'); 
    145                 }); 
    146             }); 
    147         }, 
    148         selectItem : function() { 
    149             return this.each(function(){ 
    150                 $(this).addClass('selected-menu-item') 
    151                     .next().children('input').attr('checked','checked'); 
    152             }); 
    153         }, 
    154         deselectItem : function() { 
    155             return this.each(function(){ 
    156                 $(this).removeClass('selected-menu-item') 
    157                     .next().children('input').removeAttr('checked'); 
    158             }); 
    159         }, 
    160         toggleItem : function() { 
    161             return this.each(function(){ 
    162                 var t = $(this); 
    163                 if( t.hasClass('selected-menu-item') ) 
    164                     t.deselectItem(); 
    165                 else 
    166                     t.selectItem(); 
    167             }); 
    168         }, 
    169         /** 
    170          * Adds selected menu items to the menu. 
    171          * 
    172          * @param jQuery metabox The metabox jQuery object. 
    173          */ 
    174         addSelectedToMenu : function(processMethod) { 
    175             return this.each(function() { 
    176                 var t = $(this), 
    177                     checked = t.find('.tabs-panel-active .categorychecklist li input:checked'), 
    178                     re = new RegExp('menu-item\\[(\[^\\]\]*)'); 
    179          
    180                 processMethod = processMethod || api.addMenuItemToBottom; 
    181          
    182                 // If no items are checked, bail. 
    183                 if ( !checked.length ) 
    184                     return false; 
    185          
    186                 // Show the ajax spinner 
    187                 t.find('img.waiting').show(); 
    188  
    189                 // Retrieve menu item data 
    190                 $(checked).each(function(){ 
    191                     var checkbox = $(this), 
    192                         item = checkbox.parent().prev(); 
    193                     listItemDBIDMatch = re.exec( checkbox.attr('name') ); 
    194                     listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10); 
    195                     listItemData = getListDataFromID(listItemDBID); 
    196  
    197                     menuItem = {}; 
    198                     menuItem[listItemDBID] = listItemData; 
    199  
    200                     api.addItemToMenu(menuItem, processMethod, function(){ 
    201                         item.deselectItem(); 
    202                     }); 
    203                 }); 
    204  
    205                 // Remove the ajax spinner 
    206                 t.find('img.waiting').hide(); 
    207             }); 
    208         }, 
    209     }); 
    210  
    21191    return api = { 
    21292 
     
    21696            targetList = menuList; 
    21797 
     98            this.jQueryExtensions(); 
     99             
    218100            this.attachMenuEditListeners(); 
    219101         
     
    236118         
    237119            this.checkForEmptyMenu(); 
     120        }, 
     121         
     122        jQueryExtensions : function() { 
     123            // jQuery extensions 
     124            $.fn.extend({ 
     125                menuItemDepth : function() { 
     126                    return pxToDepth( this.eq(0).css('margin-left').slice(0, -2) ); 
     127                }, 
     128                updateDepthClass : function(current, prev) { 
     129                    return this.each(function(){ 
     130                        var t = $(this); 
     131                        prev = prev || t.menuItemDepth(); 
     132                        $(this).removeClass('menu-item-depth-'+ prev ) 
     133                            .addClass('menu-item-depth-'+ current ); 
     134                    }); 
     135                }, 
     136                shiftDepthClass : function(change) { 
     137                    return this.each(function(){ 
     138                        var t = $(this), 
     139                            depth = t.menuItemDepth(); 
     140                        $(this).removeClass('menu-item-depth-'+ depth ) 
     141                            .addClass('menu-item-depth-'+ (depth + change) ); 
     142                    }); 
     143                }, 
     144                childMenuItems : function() { 
     145                    var result = $(); 
     146                    this.each(function(){ 
     147                        var t = $(this), depth = t.menuItemDepth(), next = t.next(); 
     148                        while( next.length && next.menuItemDepth() > depth ) { 
     149                            result = result.add( next ); 
     150                            next = next.next(); 
     151                        } 
     152                    }); 
     153                    return result; 
     154                }, 
     155                updateParentMenuItemDBId : function() { 
     156                    return this.each(function(){ 
     157                        var item = $(this), 
     158                            input = item.find('.menu-item-data-parent-id'), 
     159                            depth = item.menuItemDepth(), 
     160                            parent = item.prev(); 
     161 
     162                        if( depth == 0 ) { // Item is on the top level, has no parent 
     163                            input.val(0); 
     164                        } else { // Find the parent item, and retrieve its object id. 
     165                            while( parent.menuItemDepth() != depth - 1 ) { 
     166                                parent = parent.prev(); 
     167                            } 
     168                            input.val( parent.find('.menu-item-data-db-id').val() ); 
     169                        } 
     170                    }); 
     171                }, 
     172                hideAdvancedMenuItemFields : function() { 
     173                    return this.each(function(){ 
     174                        var that = $(this); 
     175                        $('.hide-column-tog').not(':checked').each(function(){ 
     176                            that.find('.field-' + $(this).val() ).addClass('hidden-field'); 
     177                        }); 
     178                    }); 
     179                }, 
     180                selectItem : function() { 
     181                    return this.each(function(){ 
     182                        $(this).addClass('selected-menu-item') 
     183                            .next().children('input').attr('checked','checked'); 
     184                    }); 
     185                }, 
     186                deselectItem : function() { 
     187                    return this.each(function(){ 
     188                        $(this).removeClass('selected-menu-item') 
     189                            .next().children('input').removeAttr('checked'); 
     190                    }); 
     191                }, 
     192                toggleItem : function() { 
     193                    return this.each(function(){ 
     194                        var t = $(this); 
     195                        if( t.hasClass('selected-menu-item') ) 
     196                            t.deselectItem(); 
     197                        else 
     198                            t.selectItem(); 
     199                    }); 
     200                }, 
     201                /** 
     202                 * Adds selected menu items to the menu. 
     203                 * 
     204                 * @param jQuery metabox The metabox jQuery object. 
     205                 */ 
     206                addSelectedToMenu : function(processMethod) { 
     207                    return this.each(function() { 
     208                        var t = $(this), menuItems = {}, 
     209                            checkboxes = t.find('.tabs-panel-active .categorychecklist li input:checked'), 
     210                            re = new RegExp('menu-item\\[(\[^\\]\]*)'); 
     211 
     212                        processMethod = processMethod || api.addMenuItemToBottom; 
     213 
     214                        // If no items are checked, bail. 
     215                        if ( !checkboxes.length ) 
     216                            return false; 
     217 
     218                        // Show the ajax spinner 
     219                        t.find('img.waiting').show(); 
     220 
     221                        // Retrieve menu item data 
     222                        $(checkboxes).each(function(){ 
     223                            var listItemDBIDMatch = re.exec( $(this).attr('name') ), 
     224                                listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10); 
     225                            menuItems[listItemDBID] = getListDataFromID(listItemDBID); 
     226                        }); 
     227                        // Add the items 
     228                        api.addItemToMenu(menuItems, processMethod, function(){ 
     229                            // Deselect the items and hide the ajax spinner 
     230                            checkboxes.parent().prev().deselectItem(); 
     231                            t.find('img.waiting').hide(); 
     232                        }); 
     233                    }); 
     234                }, 
     235            }); 
    238236        }, 
    239237 
  • trunk/wp-admin/js/nav-menu.js

    r14467 r14468  
    1 var wpNavMenu,WPNavMenuHandler=function(d){var i={},g=30,c=11,l=function(n,r,o,q){if(n&&n[0]){var p=d.parseJSON(n[0]);if(p.post_title){if(p.ID&&p.post_type){i[p.post_title]={ID:p.ID,object_type:p.post_type}}return p.post_title}}},m=function(n,r,o,q){if(n&&n[0]){var p=d.parseJSON(n[0]);if(p.post_title){return p.post_title}}},b=function(t,s){if(!t){return false}s=s||document;var o=["menu-item-db-id","menu-item-object-id","menu-item-object","menu-item-parent-id","menu-item-position","menu-item-type","menu-item-append","menu-item-title","menu-item-url","menu-item-description","menu-item-attr-title","menu-item-target","menu-item-classes","menu-item-xfn"],n={},p=s.getElementsByTagName("input"),r=p.length,q;while(r--){q=o.length;while(q--){if(p[r]&&p[r].name&&"menu-item["+t+"]["+o[q]+"]"==p[r].name){n[o[q]]=p[r].value}}}return n},a=function(){h.find(".menu-item-data-position").val(function(n){return n+1})},f=function(n){return n*g},j=function(n){return Math.floor(n/g)},h,k,e;d.fn.extend({menuItemDepth:function(){return j(this.eq(0).css("margin-left").slice(0,-2))},updateDepthClass:function(o,n){return this.each(function(){var p=d(this);n=n||p.menuItemDepth();d(this).removeClass("menu-item-depth-"+n).addClass("menu-item-depth-"+o)})},shiftDepthClass:function(n){return this.each(function(){var o=d(this),p=o.menuItemDepth();d(this).removeClass("menu-item-depth-"+p).addClass("menu-item-depth-"+(p+n))})},childMenuItems:function(){var n=d();this.each(function(){var o=d(this),q=o.menuItemDepth(),p=o.next();while(p.length&&p.menuItemDepth()>q){n=n.add(p);p=p.next()}});return n},updateParentMenuItemDBId:function(){return this.each(function(){var p=d(this),n=p.find(".menu-item-data-parent-id"),q=p.menuItemDepth(),o=p.prev();if(q==0){n.val(0)}else{while(o.menuItemDepth()!=q-1){o=o.prev()}n.val(o.find(".menu-item-data-db-id").val())}})},hideAdvancedMenuItemFields:function(){return this.each(function(){var n=d(this);d(".hide-column-tog").not(":checked").each(function(){n.find(".field-"+d(this).val()).addClass("hidden-field")})})},selectItem:function(){return this.each(function(){d(this).addClass("selected-menu-item").next().children("input").attr("checked","checked")})},deselectItem:function(){return this.each(function(){d(this).removeClass("selected-menu-item").next().children("input").removeAttr("checked")})},toggleItem:function(){return this.each(function(){var n=d(this);if(n.hasClass("selected-menu-item")){n.deselectItem()}else{n.selectItem()}})},addSelectedToMenu:function(n){return this.each(function(){var o=d(this),q=o.find(".tabs-panel-active .categorychecklist li input:checked"),p=new RegExp("menu-item\\[([^\\]]*)");n=n||e.addMenuItemToBottom;if(!q.length){return false}o.find("img.waiting").show();d(q).each(function(){var s=d(this),r=s.parent().prev();listItemDBIDMatch=p.exec(s.attr("name"));listItemDBID="undefined"==typeof listItemDBIDMatch[1]?0:parseInt(listItemDBIDMatch[1],10);listItemData=b(listItemDBID);menuItem={};menuItem[listItemDBID]=listItemData;e.addItemToMenu(menuItem,n,function(){r.deselectItem()})});o.find("img.waiting").hide()})},});return e={init:function(){h=d("#menu-to-edit");k=h;this.attachMenuEditListeners();this.setupInputWithDefaultTitle();this.attachAddMenuItemListeners();this.attachQuickSearchListeners();this.attachTabsPanelListeners();this.attachHomeLinkListener();if(h.length){this.initSortables()}this.initToggles();this.initTabManager();this.initAddMenuItemDraggables();this.checkForEmptyMenu()},initToggles:function(){postboxes.add_postbox_toggles("nav-menus");columns.useCheckboxesForHidden();columns.checked=function(n){d(".field-"+n).removeClass("hidden-field")};columns.unchecked=function(n){d(".field-"+n).addClass("hidden-field")};h.hideAdvancedMenuItemFields()},initSortables:function(){var t=0,s,r,n,q=h.offset().left,u,p;h.sortable({handle:".menu-item-handle",placeholder:"sortable-placeholder",start:function(C,B){var w,A,z,x,y;p=B.item.children(".menu-item-transport");u=(B.helper.hasClass("new-menu-item"));s=(u)?0:B.item.menuItemDepth();o(B,s);if(!u){z=(B.item.next()[0]==B.placeholder[0])?B.item.next():B.item;x=z.childMenuItems();p.append(x)}v(B);w=p.outerHeight();w+=(w>0)?(B.placeholder.css("margin-top").slice(0,-2)*1):0;w+=B.helper.outerHeight();w-=2;B.placeholder.height(w);y=s;if(!u){x.each(function(){var D=d(this).menuItemDepth();y=(D>y)?D:y})}A=B.helper.find(".menu-item-handle").outerWidth();A+=f(y-s);A-=2;B.placeholder.width(A)},stop:function(z,y){var x,w=t-s;x=p.children().insertAfter(y.item);if(u){y.item.remove();if(w!=0){x.shiftDepthClass(w)}x.updateParentMenuItemDBId()}else{if(w!=0){y.item.updateDepthClass(t);x.shiftDepthClass(w)}y.item.updateParentMenuItemDBId()}a()},change:function(x,w){if(!w.placeholder.parent().hasClass("menu")){w.placeholder.appendTo(h)}v(w)},sort:function(x,w){var y=j(w.helper.offset().left-q);if(y<r){y=r}else{if(y>n){y=n}}if(y!=t){o(w,y)}},receive:function(x,w){p=w.sender.children(".menu-item-transport")}});function v(y){var x=y.placeholder.prev(),w=y.placeholder.next(),z;if(x[0]==y.item[0]){x=x.prev()}if(w[0]==y.item[0]){w=w.next()}r=(w.length)?w.menuItemDepth():0;if(x.length){n=((z=x.menuItemDepth()+1)>c)?c:z}else{n=0}}function o(w,x){w.placeholder.updateDepthClass(x,t);t=x}},initAddMenuItemDraggables:function(){var n=d(".potential-menu-item");n.click(function(o){d(this).toggleItem()}).children().draggable({helper:"clone",connectToSortable:"ul#menu-to-edit",distance:5,zIndex:100,start:function(t,r){var s=d(t.target),q=s.parent(),o=q.parent(),p;q.selectItem();k=s.children(".menu-item-transport");p=o.parents(".tabs-panel").find(".selected-menu-item").children().not(r.helper).clone();r.helper.children(".additional-menu-items").append(p);r.helper.addClass("new-menu-item");r.helper.children("div").hide();p.first().css("margin-top",0);p.children("div").addClass("menu-item-handle");r.helper.children("div").addClass("hidden-handle");o.parents(".inside").find(".add-to-menu input").click();r.helper.width(r.helper.width());r.helper.height(r.helper.height())},stop:function(p,o){k=h;d(p.target).parents(".tabs-panel").find(".selected-menu-item").deselectItem()}})},attachMenuEditListeners:function(){var n=this;d("#update-nav-menu").bind("click",function(o){if(o.target&&o.target.className){if(-1!=o.target.className.indexOf("item-edit")){return n.eventOnClickEditLink(o.target)}else{if(-1!=o.target.className.indexOf("menu-delete")){return n.eventOnClickMenuDelete(o.target)}else{if(-1!=o.target.className.indexOf("item-delete")){return n.eventOnClickMenuItemDelete(o.target)}else{if(-1!=o.target.className.indexOf("item-close")){return n.eventOnClickCloseLink(o.target)}}}}}})},setupInputWithDefaultTitle:function(){var n="input-with-default-title";d("."+n).each(function(){var q=d(this),p=q.attr("title"),o=q.val();q.data(n,p);if(""==o){q.val(p)}else{if(p==o){return}else{q.removeClass(n)}}}).focus(function(){var o=d(this);if(o.val()==o.data(n)){o.val("").removeClass(n)}}).blur(function(){var o=d(this);if(""==o.val()){o.addClass(n).val(o.data(n))}})},attachAddMenuItemListeners:function(){var n=d("#nav-menu-meta");n.find(".add-to-menu input").click(function(){d(this).trigger("wp-add-menu-item",[e.addMenuItemToBottom]);return false});n.find(".customlinkdiv").bind("wp-add-menu-item",function(p,o){e.addCustomLink(o)});n.find(".posttypediv, .taxonomydiv").bind("wp-add-menu-item",function(p,o){d(this).addSelectedToMenu(o)})},attachQuickSearchListeners:function(){var o=this,n=d("#nav-menu-meta");d("input.quick-search").each(function(p,q){o.setupQuickSearchEventListeners(q)});n.find(".quick-search-submit").click(function(){d(this).trigger("wp-quick-search");return false});n.find(".inside").children().bind("wp-quick-search",function(){o.quickSearch(d(this).attr("id"))})},quickSearch:function(v){var p=d("#"+v+" .quick-search").attr("name"),s=d("#"+v+" .quick-search").val(),u=d("#menu").val(),o=d("#menu-settings-column-nonce").val(),t={},r=this,n=function(){};n=r.processQuickSearchQueryResponse;t={action:"menu-quick-search","response-format":"markup",menu:u,"menu-settings-column-nonce":o,q:s,type:p};d.post(ajaxurl,t,function(q){n.call(r,q,t)})},addCustomLink:function(n){var p=d("#custom-menu-item-url").val(),o=d("#custom-menu-item-name").val();n=n||e.addMenuItemToBottom;if(""==p||"http://"==p){return false}d(".customlinkdiv img.waiting").show();this.addLinkToMenu(p,o,n,function(){d(".customlinkdiv img.waiting").hide();d("#custom-menu-item-name").val("").blur();d("#custom-menu-item-url").val("http://")})},addLinkToMenu:function(p,o,n,q){n=n||e.addMenuItemToBottom;q=q||function(){};e.addItemToMenu({"-1":{"menu-item-type":"custom","menu-item-url":p,"menu-item-title":o}},n,q)},addItemToMenu:function(p,n,r){var q=d("#menu").val(),o=d("#menu-settings-column-nonce").val();n=n||function(){};r=r||function(){};params={action:"add-menu-item",menu:q,"menu-settings-column-nonce":o,"menu-item":p,};d.post(ajaxurl,params,function(s){n(s,params);r()})},addMenuItemToBottom:function(n,o){d(n).hideAdvancedMenuItemFields().appendTo(k)},addMenuItemToTop:function(n,o){d(n).hideAdvancedMenuItemFields().prependTo(k)},attachHomeLinkListener:function(){d(".add-home-link",".customlinkdiv").click(function(n){e.addLinkToMenu(navMenuL10n.homeurl,navMenuL10n.home,e.addMenuItemToTop,a);return false})},attachTabsPanelListeners:function(){d("#menu-settings-column").bind("click",function(r){var q,s,o,t,n,p;if(r.target&&r.target.className&&-1!=r.target.className.indexOf("nav-tab-link")){o=/#(.*)$/.exec(r.target.href);t=d(r.target).parents(".inside").first()[0];n=t?t.getElementsByTagName("input"):[];p=n.length;while(p--){n[p].checked=false}d(".tabs-panel",t).each(function(){if(this.className){this.className=this.className.replace("tabs-panel-active","tabs-panel-inactive")}});d(".tabs",t).each(function(){this.className=this.className.replace("tabs","")});r.target.parentNode.className+=" tabs";if(o&&o[1]){s=document.getElementById(o[1]);if(s){s.className=s.className.replace("tabs-panel-inactive","tabs-panel-active")}}return false}else{if(r.target&&r.target.className&&-1!=r.target.className.indexOf("select-all")){q=/#(.*)$/.exec(r.target.href),items;if(q&&q[1]){items=d("#"+q[1]+" .tabs-panel-active .potential-menu-item");if(items.length===items.filter(".selected-menu-item").length){items.deselectItem()}else{items.selectItem()}return false}}}})},initTabManager:function(){var s=d(".nav-tabs-wrapper"),t=s.children(".nav-tabs"),r=t.children(".nav-tab-active"),v=t.children(".nav-tab"),p=0,w,q,u,o;resizing=false;function n(){q=s.offset().left;w=q+s.width();r.makeTabVisible()}d.fn.extend({makeTabVisible:function(){var y=this.eq(0),z,x;if(!y.length){return}z=y.offset().left;x=z+y.outerWidth();if(x>w){t.animate({"margin-left":"+="+(w-x)+"px",},"fast")}else{if(z<q){t.animate({"margin-left":"-="+(z-q)+"px",},"fast")}}return y},isTabVisible:function(){var y=this.eq(0),z=y.offset().left,x=z+y.outerWidth();return(x<=w&&z>=q)?true:false}});v.each(function(){p+=d(this).outerWidth(true)});if(p<=s.width()-t.css("padding-left").slice(0,-2)-t.css("padding-right").slice(0,-2)){return}t.css({"margin-right":(-1*p)+"px",padding:0,});u=d('<div class="nav-tabs-arrow nav-tabs-arrow-left"><a>&laquo;</a></div>');o=d('<div class="nav-tabs-arrow nav-tabs-arrow-right"><a>&raquo;</a></div>');s.wrap('<div class="nav-tabs-nav"/>').parent().prepend(u).append(o);n();d(window).resize(function(){if(resizing){return}resizing=true;setTimeout(function(){n();resizing=false},1000)});d.each([{arrow:u,next:"next",last:"first",operator:"+=",},{arrow:o,next:"prev",last:"last",operator:"-=",}],function(){var x=this;this.arrow.mousedown(function(){var z=v[x.last](),y=function(){if(!z.isTabVisible()){t.animate({"margin-left":x.operator+"90px",},300,"linear",y)}};y()}).mouseup(function(){var z,y;t.stop(true);z=v[x.last]();while((y=z[x.next]())&&y.length&&!y.isTabVisible()){z=y}z.makeTabVisible()})})},setupQuickSearchEventListeners:function(n){var o=this;d(n).autocomplete(ajaxurl+"?action=menu-quick-search&type="+n.name,{delay:500,formatItem:l,formatResult:m,minchars:2,multiple:false}).bind("blur",function(r){var p=i[this.value],q=this;if(p){d.post(ajaxurl+"?action=menu-quick-search&type=get-post-item&response-format=markup",p,function(s){o.processQuickSearchQueryResponse.call(o,s,p);i[q.value]=false})}})},eventOnClickEditLink:function(n){var p,o=/#(.*)$/.exec(n.href);if(o&&o[1]){p=d("#"+o[1]);if(0!=p.length){if(p.hasClass("menu-item-edit-inactive")){p.slideDown("fast").siblings("dl").andSelf().removeClass("menu-item-edit-inactive").addClass("menu-item-edit-active")}else{p.slideUp("fast").siblings("dl").andSelf().removeClass("menu-item-edit-active").addClass("menu-item-edit-inactive")}return false}}},eventOnClickCloseLink:function(n){d(n).closest(".menu-item-settings").siblings("dl").find(".item-edit").click();return false},eventOnClickMenuDelete:function(n){if(confirm(navMenuL10n.warnDeleteMenu)){return true}else{return false}},eventOnClickMenuItemDelete:function(n){var q,p,o=this;if(confirm(navMenuL10n.warnDeleteMenuItem)){p=/_wpnonce=([a-zA-Z0-9]*)$/.exec(n.href);if(p&&p[1]){q=parseInt(n.id.replace("delete-",""),10);d.post(ajaxurl,{action:"delete-menu-item","menu-item":q,_wpnonce:p[1]},function(r){if("1"==r){o.removeMenuItem(document.getElementById("menu-item-"+q))}});return false}return true}else{return false}},processQuickSearchQueryResponse:function(r,w){if(!w){w={}}var o=document.createElement("ul"),n=document.getElementById("nav-menu-meta"),s,v,p,x,t,u=new RegExp("menu-item\\[([^\\]]*)"),q;p=u.exec(r);if(p&&p[1]){t=p[1];while(n.elements["menu-item["+t+"][menu-item-type]"]){t--}if(t!=p[1]){r=r.replace(new RegExp("menu-item\\["+p[1]+"\\]","g"),"menu-item["+t+"]")}}o.innerHTML=r;v=o.getElementsByTagName("li");if(v[0]&&w.object_type){q=document.getElementById(w.object_type+"-search-checklist");if(q){q.appendChild(v[0])}}else{if(w.type){p=/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*)/.exec(w.type);if(p&&p[2]){q=document.getElementById(p[2]+"-search-checklist");if(q){s=v.length;if(!s){x=document.createElement("li");x.appendChild(document.createTextNode(navMenuL10n.noResultsFound));q.appendChild(x)}while(s--){q.appendChild(v[s])}}}}}},removeMenuItem:function(o){o=d(o);var n=o.childMenuItems(),p=this;o.addClass("deleting").fadeOut(350,function(){o.remove();n.shiftDepthClass(-1).updateParentMenuItemDBId();a();p.checkForEmptyMenu()})},checkForEmptyMenu:function(){if(h.children().length){return}h.height(80).one("sortstop",function(){d(this).height("auto")})}}};wpNavMenu=new WPNavMenuHandler(jQuery);jQuery(function(){wpNavMenu.init()}); 
     1var wpNavMenu,WPNavMenuHandler=function(d){var i={},g=30,c=11,l=function(n,r,o,q){if(n&&n[0]){var p=d.parseJSON(n[0]);if(p.post_title){if(p.ID&&p.post_type){i[p.post_title]={ID:p.ID,object_type:p.post_type}}return p.post_title}}},m=function(n,r,o,q){if(n&&n[0]){var p=d.parseJSON(n[0]);if(p.post_title){return p.post_title}}},b=function(t,s){if(!t){return false}s=s||document;var o=["menu-item-db-id","menu-item-object-id","menu-item-object","menu-item-parent-id","menu-item-position","menu-item-type","menu-item-append","menu-item-title","menu-item-url","menu-item-description","menu-item-attr-title","menu-item-target","menu-item-classes","menu-item-xfn"],n={},p=s.getElementsByTagName("input"),r=p.length,q;while(r--){q=o.length;while(q--){if(p[r]&&p[r].name&&"menu-item["+t+"]["+o[q]+"]"==p[r].name){n[o[q]]=p[r].value}}}return n},a=function(){h.find(".menu-item-data-position").val(function(n){return n+1})},f=function(n){return n*g},j=function(n){return Math.floor(n/g)},h,k,e;return e={init:function(){h=d("#menu-to-edit");k=h;this.jQueryExtensions();this.attachMenuEditListeners();this.setupInputWithDefaultTitle();this.attachAddMenuItemListeners();this.attachQuickSearchListeners();this.attachTabsPanelListeners();this.attachHomeLinkListener();if(h.length){this.initSortables()}this.initToggles();this.initTabManager();this.initAddMenuItemDraggables();this.checkForEmptyMenu()},jQueryExtensions:function(){d.fn.extend({menuItemDepth:function(){return j(this.eq(0).css("margin-left").slice(0,-2))},updateDepthClass:function(o,n){return this.each(function(){var p=d(this);n=n||p.menuItemDepth();d(this).removeClass("menu-item-depth-"+n).addClass("menu-item-depth-"+o)})},shiftDepthClass:function(n){return this.each(function(){var o=d(this),p=o.menuItemDepth();d(this).removeClass("menu-item-depth-"+p).addClass("menu-item-depth-"+(p+n))})},childMenuItems:function(){var n=d();this.each(function(){var o=d(this),q=o.menuItemDepth(),p=o.next();while(p.length&&p.menuItemDepth()>q){n=n.add(p);p=p.next()}});return n},updateParentMenuItemDBId:function(){return this.each(function(){var p=d(this),n=p.find(".menu-item-data-parent-id"),q=p.menuItemDepth(),o=p.prev();if(q==0){n.val(0)}else{while(o.menuItemDepth()!=q-1){o=o.prev()}n.val(o.find(".menu-item-data-db-id").val())}})},hideAdvancedMenuItemFields:function(){return this.each(function(){var n=d(this);d(".hide-column-tog").not(":checked").each(function(){n.find(".field-"+d(this).val()).addClass("hidden-field")})})},selectItem:function(){return this.each(function(){d(this).addClass("selected-menu-item").next().children("input").attr("checked","checked")})},deselectItem:function(){return this.each(function(){d(this).removeClass("selected-menu-item").next().children("input").removeAttr("checked")})},toggleItem:function(){return this.each(function(){var n=d(this);if(n.hasClass("selected-menu-item")){n.deselectItem()}else{n.selectItem()}})},addSelectedToMenu:function(n){return this.each(function(){var p=d(this),o={},r=p.find(".tabs-panel-active .categorychecklist li input:checked"),q=new RegExp("menu-item\\[([^\\]]*)");n=n||e.addMenuItemToBottom;if(!r.length){return false}p.find("img.waiting").show();d(r).each(function(){var s=q.exec(d(this).attr("name")),t="undefined"==typeof s[1]?0:parseInt(s[1],10);o[t]=b(t)});e.addItemToMenu(o,n,function(){r.parent().prev().deselectItem();p.find("img.waiting").hide()})})},})},initToggles:function(){postboxes.add_postbox_toggles("nav-menus");columns.useCheckboxesForHidden();columns.checked=function(n){d(".field-"+n).removeClass("hidden-field")};columns.unchecked=function(n){d(".field-"+n).addClass("hidden-field")};h.hideAdvancedMenuItemFields()},initSortables:function(){var t=0,s,r,n,q=h.offset().left,u,p;h.sortable({handle:".menu-item-handle",placeholder:"sortable-placeholder",start:function(C,B){var w,A,z,x,y;p=B.item.children(".menu-item-transport");u=(B.helper.hasClass("new-menu-item"));s=(u)?0:B.item.menuItemDepth();o(B,s);if(!u){z=(B.item.next()[0]==B.placeholder[0])?B.item.next():B.item;x=z.childMenuItems();p.append(x)}v(B);w=p.outerHeight();w+=(w>0)?(B.placeholder.css("margin-top").slice(0,-2)*1):0;w+=B.helper.outerHeight();w-=2;B.placeholder.height(w);y=s;if(!u){x.each(function(){var D=d(this).menuItemDepth();y=(D>y)?D:y})}A=B.helper.find(".menu-item-handle").outerWidth();A+=f(y-s);A-=2;B.placeholder.width(A)},stop:function(z,y){var x,w=t-s;x=p.children().insertAfter(y.item);if(u){y.item.remove();if(w!=0){x.shiftDepthClass(w)}x.updateParentMenuItemDBId()}else{if(w!=0){y.item.updateDepthClass(t);x.shiftDepthClass(w)}y.item.updateParentMenuItemDBId()}a()},change:function(x,w){if(!w.placeholder.parent().hasClass("menu")){w.placeholder.appendTo(h)}v(w)},sort:function(x,w){var y=j(w.helper.offset().left-q);if(y<r){y=r}else{if(y>n){y=n}}if(y!=t){o(w,y)}},receive:function(x,w){p=w.sender.children(".menu-item-transport")}});function v(y){var x=y.placeholder.prev(),w=y.placeholder.next(),z;if(x[0]==y.item[0]){x=x.prev()}if(w[0]==y.item[0]){w=w.next()}r=(w.length)?w.menuItemDepth():0;if(x.length){n=((z=x.menuItemDepth()+1)>c)?c:z}else{n=0}}function o(w,x){w.placeholder.updateDepthClass(x,t);t=x}},initAddMenuItemDraggables:function(){var n=d(".potential-menu-item");n.click(function(o){d(this).toggleItem()}).children().draggable({helper:"clone",connectToSortable:"ul#menu-to-edit",distance:5,zIndex:100,start:function(t,r){var s=d(t.target),q=s.parent(),o=q.parent(),p;q.selectItem();k=s.children(".menu-item-transport");p=o.parents(".tabs-panel").find(".selected-menu-item").children().not(r.helper).clone();r.helper.children(".additional-menu-items").append(p);r.helper.addClass("new-menu-item");r.helper.children("div").hide();p.first().css("margin-top",0);p.children("div").addClass("menu-item-handle");r.helper.children("div").addClass("hidden-handle");o.parents(".inside").find(".add-to-menu input").click();r.helper.width(r.helper.width());r.helper.height(r.helper.height())},stop:function(p,o){k=h;d(p.target).parents(".tabs-panel").find(".selected-menu-item").deselectItem()}})},attachMenuEditListeners:function(){var n=this;d("#update-nav-menu").bind("click",function(o){if(o.target&&o.target.className){if(-1!=o.target.className.indexOf("item-edit")){return n.eventOnClickEditLink(o.target)}else{if(-1!=o.target.className.indexOf("menu-delete")){return n.eventOnClickMenuDelete(o.target)}else{if(-1!=o.target.className.indexOf("item-delete")){return n.eventOnClickMenuItemDelete(o.target)}else{if(-1!=o.target.className.indexOf("item-close")){return n.eventOnClickCloseLink(o.target)}}}}}})},setupInputWithDefaultTitle:function(){var n="input-with-default-title";d("."+n).each(function(){var q=d(this),p=q.attr("title"),o=q.val();q.data(n,p);if(""==o){q.val(p)}else{if(p==o){return}else{q.removeClass(n)}}}).focus(function(){var o=d(this);if(o.val()==o.data(n)){o.val("").removeClass(n)}}).blur(function(){var o=d(this);if(""==o.val()){o.addClass(n).val(o.data(n))}})},attachAddMenuItemListeners:function(){var n=d("#nav-menu-meta");n.find(".add-to-menu input").click(function(){d(this).trigger("wp-add-menu-item",[e.addMenuItemToBottom]);return false});n.find(".customlinkdiv").bind("wp-add-menu-item",function(p,o){e.addCustomLink(o)});n.find(".posttypediv, .taxonomydiv").bind("wp-add-menu-item",function(p,o){d(this).addSelectedToMenu(o)})},attachQuickSearchListeners:function(){var o=this,n=d("#nav-menu-meta");d("input.quick-search").each(function(p,q){o.setupQuickSearchEventListeners(q)});n.find(".quick-search-submit").click(function(){d(this).trigger("wp-quick-search");return false});n.find(".inside").children().bind("wp-quick-search",function(){o.quickSearch(d(this).attr("id"))})},quickSearch:function(v){var p=d("#"+v+" .quick-search").attr("name"),s=d("#"+v+" .quick-search").val(),u=d("#menu").val(),o=d("#menu-settings-column-nonce").val(),t={},r=this,n=function(){};n=r.processQuickSearchQueryResponse;t={action:"menu-quick-search","response-format":"markup",menu:u,"menu-settings-column-nonce":o,q:s,type:p};d.post(ajaxurl,t,function(q){n.call(r,q,t)})},addCustomLink:function(n){var p=d("#custom-menu-item-url").val(),o=d("#custom-menu-item-name").val();n=n||e.addMenuItemToBottom;if(""==p||"http://"==p){return false}d(".customlinkdiv img.waiting").show();this.addLinkToMenu(p,o,n,function(){d(".customlinkdiv img.waiting").hide();d("#custom-menu-item-name").val("").blur();d("#custom-menu-item-url").val("http://")})},addLinkToMenu:function(p,o,n,q){n=n||e.addMenuItemToBottom;q=q||function(){};e.addItemToMenu({"-1":{"menu-item-type":"custom","menu-item-url":p,"menu-item-title":o}},n,q)},addItemToMenu:function(p,n,r){var q=d("#menu").val(),o=d("#menu-settings-column-nonce").val();n=n||function(){};r=r||function(){};params={action:"add-menu-item",menu:q,"menu-settings-column-nonce":o,"menu-item":p,};d.post(ajaxurl,params,function(s){n(s,params);r()})},addMenuItemToBottom:function(n,o){d(n).hideAdvancedMenuItemFields().appendTo(k)},addMenuItemToTop:function(n,o){d(n).hideAdvancedMenuItemFields().prependTo(k)},attachHomeLinkListener:function(){d(".add-home-link",".customlinkdiv").click(function(n){e.addLinkToMenu(navMenuL10n.homeurl,navMenuL10n.home,e.addMenuItemToTop,a);return false})},attachTabsPanelListeners:function(){d("#menu-settings-column").bind("click",function(r){var q,s,o,t,n,p;if(r.target&&r.target.className&&-1!=r.target.className.indexOf("nav-tab-link")){o=/#(.*)$/.exec(r.target.href);t=d(r.target).parents(".inside").first()[0];n=t?t.getElementsByTagName("input"):[];p=n.length;while(p--){n[p].checked=false}d(".tabs-panel",t).each(function(){if(this.className){this.className=this.className.replace("tabs-panel-active","tabs-panel-inactive")}});d(".tabs",t).each(function(){this.className=this.className.replace("tabs","")});r.target.parentNode.className+=" tabs";if(o&&o[1]){s=document.getElementById(o[1]);if(s){s.className=s.className.replace("tabs-panel-inactive","tabs-panel-active")}}return false}else{if(r.target&&r.target.className&&-1!=r.target.className.indexOf("select-all")){q=/#(.*)$/.exec(r.target.href),items;if(q&&q[1]){items=d("#"+q[1]+" .tabs-panel-active .potential-menu-item");if(items.length===items.filter(".selected-menu-item").length){items.deselectItem()}else{items.selectItem()}return false}}}})},initTabManager:function(){var s=d(".nav-tabs-wrapper"),t=s.children(".nav-tabs"),r=t.children(".nav-tab-active"),v=t.children(".nav-tab"),p=0,w,q,u,o;resizing=false;function n(){q=s.offset().left;w=q+s.width();r.makeTabVisible()}d.fn.extend({makeTabVisible:function(){var y=this.eq(0),z,x;if(!y.length){return}z=y.offset().left;x=z+y.outerWidth();if(x>w){t.animate({"margin-left":"+="+(w-x)+"px",},"fast")}else{if(z<q){t.animate({"margin-left":"-="+(z-q)+"px",},"fast")}}return y},isTabVisible:function(){var y=this.eq(0),z=y.offset().left,x=z+y.outerWidth();return(x<=w&&z>=q)?true:false}});v.each(function(){p+=d(this).outerWidth(true)});if(p<=s.width()-t.css("padding-left").slice(0,-2)-t.css("padding-right").slice(0,-2)){return}t.css({"margin-right":(-1*p)+"px",padding:0,});u=d('<div class="nav-tabs-arrow nav-tabs-arrow-left"><a>&laquo;</a></div>');o=d('<div class="nav-tabs-arrow nav-tabs-arrow-right"><a>&raquo;</a></div>');s.wrap('<div class="nav-tabs-nav"/>').parent().prepend(u).append(o);n();d(window).resize(function(){if(resizing){return}resizing=true;setTimeout(function(){n();resizing=false},1000)});d.each([{arrow:u,next:"next",last:"first",operator:"+=",},{arrow:o,next:"prev",last:"last",operator:"-=",}],function(){var x=this;this.arrow.mousedown(function(){var z=v[x.last](),y=function(){if(!z.isTabVisible()){t.animate({"margin-left":x.operator+"90px",},300,"linear",y)}};y()}).mouseup(function(){var z,y;t.stop(true);z=v[x.last]();while((y=z[x.next]())&&y.length&&!y.isTabVisible()){z=y}z.makeTabVisible()})})},setupQuickSearchEventListeners:function(n){var o=this;d(n).autocomplete(ajaxurl+"?action=menu-quick-search&type="+n.name,{delay:500,formatItem:l,formatResult:m,minchars:2,multiple:false}).bind("blur",function(r){var p=i[this.value],q=this;if(p){d.post(ajaxurl+"?action=menu-quick-search&type=get-post-item&response-format=markup",p,function(s){o.processQuickSearchQueryResponse.call(o,s,p);i[q.value]=false})}})},eventOnClickEditLink:function(n){var p,o=/#(.*)$/.exec(n.href);if(o&&o[1]){p=d("#"+o[1]);if(0!=p.length){if(p.hasClass("menu-item-edit-inactive")){p.slideDown("fast").siblings("dl").andSelf().removeClass("menu-item-edit-inactive").addClass("menu-item-edit-active")}else{p.slideUp("fast").siblings("dl").andSelf().removeClass("menu-item-edit-active").addClass("menu-item-edit-inactive")}return false}}},eventOnClickCloseLink:function(n){d(n).closest(".menu-item-settings").siblings("dl").find(".item-edit").click();return false},eventOnClickMenuDelete:function(n){if(confirm(navMenuL10n.warnDeleteMenu)){return true}else{return false}},eventOnClickMenuItemDelete:function(n){var q,p,o=this;if(confirm(navMenuL10n.warnDeleteMenuItem)){p=/_wpnonce=([a-zA-Z0-9]*)$/.exec(n.href);if(p&&p[1]){q=parseInt(n.id.replace("delete-",""),10);d.post(ajaxurl,{action:"delete-menu-item","menu-item":q,_wpnonce:p[1]},function(r){if("1"==r){o.removeMenuItem(document.getElementById("menu-item-"+q))}});return false}return true}else{return false}},processQuickSearchQueryResponse:function(r,w){if(!w){w={}}var o=document.createElement("ul"),n=document.getElementById("nav-menu-meta"),s,v,p,x,t,u=new RegExp("menu-item\\[([^\\]]*)"),q;p=u.exec(r);if(p&&p[1]){t=p[1];while(n.elements["menu-item["+t+"][menu-item-type]"]){t--}if(t!=p[1]){r=r.replace(new RegExp("menu-item\\["+p[1]+"\\]","g"),"menu-item["+t+"]")}}o.innerHTML=r;v=o.getElementsByTagName("li");if(v[0]&&w.object_type){q=document.getElementById(w.object_type+"-search-checklist");if(q){q.appendChild(v[0])}}else{if(w.type){p=/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*)/.exec(w.type);if(p&&p[2]){q=document.getElementById(p[2]+"-search-checklist");if(q){s=v.length;if(!s){x=document.createElement("li");x.appendChild(document.createTextNode(navMenuL10n.noResultsFound));q.appendChild(x)}while(s--){q.appendChild(v[s])}}}}}},removeMenuItem:function(o){o=d(o);var n=o.childMenuItems(),p=this;o.addClass("deleting").fadeOut(350,function(){o.remove();n.shiftDepthClass(-1).updateParentMenuItemDBId();a();p.checkForEmptyMenu()})},checkForEmptyMenu:function(){if(h.children().length){return}h.height(80).one("sortstop",function(){d(this).height("auto")})}}};wpNavMenu=new WPNavMenuHandler(jQuery);jQuery(function(){wpNavMenu.init()}); 
Note: See TracChangeset for help on using the changeset viewer.