Make WordPress Core

Changeset 14436


Ignore:
Timestamp:
05/04/2010 08:31:40 AM (14 years ago)
Author:
nacin
Message:

Have 'Add to Menu' and multiple-item drag/drop only affect one meta box at a time. props ptahdunbar, with koopersmith. Non-JS will still handle the meta boxes all together as one form. see #13220, see #13219.

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

Legend:

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

    r14434 r14436  
    197197                placeholder: 'sortable-placeholder',
    198198                start: function(e, ui) {
    199                     console.log('sort start', e, ui);
    200199                    var next, height, width, parent, children, maxChildDepth;
    201200
     
    368367                   
    369368                    // Trigger the ajax
    370                     li.parents('.inside').find('.add-to-menu input').trigger('submit');
     369                    li.parents('.inside').find('.add-to-menu input').click();
    371370                   
    372371                    // Lock dimensions
     
    439438            });
    440439
    441             $(formEL).bind('submit', function(e) {
    442                 return that.eventSubmitMetaForm.call(that, this, e);
    443             });
    444             $(formEL).find('input:submit').click(function() {
    445                 $(this).siblings('img.waiting').show();
     440            // If a "Add to Menu" button was clicked, submit that metabox ajax style.
     441            $(formEL).click(function(e) {
     442                // based on the input, call that function
     443                var divcontainer = $(e.target).parent().parent().parent();
     444           
     445                if ( $(e.target).is('input') && $(e.target).hasClass('button-secondary') && !$(e.target).hasClass('quick-search-submit') ) {
     446                    if ( $(divcontainer).hasClass('customlinkdiv') ) {
     447                        that.addCustomLink();
     448                    } else if ( $(divcontainer).hasClass('posttypediv') || $(divcontainer).hasClass('taxonomydiv') ) {
     449                        that.addItemsToMenu( $(divcontainer).attr('id') );
     450                    };
     451                    return false;
     452                } else if ( $(e.target).is('input') && $(e.target).hasClass('quick-search-submit') ) {
     453                    that.quickSearch( $(divcontainer).attr('id') );
     454                    return false;
     455                };
     456            });
     457        },
     458       
     459        quickSearch : function(id) {
     460            var type = $('#' + id + ' .quick-search').attr('name'),
     461            q = $('#' + id + ' .quick-search').val(),
     462            menu = $('#menu').val(),
     463            nonce = $('#menu-settings-column-nonce').val(),
     464            params = {},
     465            that = this,
     466            processMethod = function(){};
     467
     468            processMethod = that.processQuickSearchQueryResponse;
     469
     470            params = {
     471                'action': 'menu-quick-search',
     472                'response-format': 'markup',
     473                'menu': menu,
     474                'menu-settings-column-nonce': nonce,
     475                'q': q,
     476                'type': type
     477            };
     478
     479            $.post( ajaxurl, params, function(menuMarkup) {
     480                processMethod.call(that, menuMarkup, params);
     481            });
     482        },
     483       
     484        addCustomLink : function() {
     485            var url = $('#custom-menu-item-url').val(),
     486            label = $('#custom-menu-item-name').val(),
     487            menu = $('#menu').val(),
     488            nonce = $('#menu-settings-column-nonce').val(),
     489            params = {},
     490            that = this,
     491            processMethod = function(){};
     492           
     493            if ( '' == url || 'http://' == url )
     494                return false;
     495           
     496            // Show the ajax spinner
     497            $('.customlinkdiv img.waiting').show();
     498           
     499            params = {
     500                'action': 'add-menu-item',
     501                'menu': menu,
     502                'menu-settings-column-nonce': nonce,
     503                'menu-item': {
     504                    '-1': {
     505                        'menu-item-type': 'custom',
     506                        'menu-item-url': url,
     507                        'menu-item-title': label
     508                    }
     509                }
     510            };
     511           
     512            processMethod = that.eventAddMenuItem;
     513           
     514            $.post( ajaxurl, params, function(menuMarkup) {
     515                processMethod.call(that, menuMarkup, params);
     516               
     517                // Remove the ajax spinner
     518                $('.customlinkdiv img.waiting').hide();
    446519            });
    447520        },
     
    691764
    692765        /**
    693          * Callback for the meta form submit action listener.
     766         * Adds menu items to the menu.
    694767         *
    695          * @param object thisForm The submitted form.
    696          * @param object e The event object.
     768         * @param string id The id of the metabox
    697769         */
    698         eventSubmitMetaForm : function(thisForm, e) {
    699             var inputs = thisForm.getElementsByTagName('input'),
    700             len = inputs.length,
    701             i, j,
    702             listItemData,
    703             listItemDBID,
    704             listItemDBIDMatch,
     770        addItemsToMenu : function(id) {
     771            var items = $( '.tabs-panel-active .categorychecklist li input:checked', '#' + id),
     772            menu = $('#menu').val(),
     773            nonce = $('#menu-settings-column-nonce').val(),
    705774            params = {},
     775            that = this,
    706776            processMethod = function(){},
    707777            re = new RegExp('menu-item\\[(\[^\\]\]*)');
    708 
    709             that = this;
    710             params['action'] = '';
    711 
    712             for ( i = 0; i < len; i++ ) {
    713                 if (    // we're submitting a checked item
    714                     inputs[i].name &&
    715                     -1 != inputs[i].name.indexOf('menu-item-object-id') &&
    716                     inputs[i].checked ||
    717                     ( // or we're dealing with a custom link
    718                         'undefined' != typeof inputs[i].id &&
    719                         'custom-menu-item-url' == inputs[i].id &&
    720                         '' != inputs[i].value &&
    721                         'http://' != inputs[i].value
    722                     )
    723                 ) {
    724                     params['action'] = 'add-menu-item';
    725                     processMethod = that.processAddMenuItemResponse;
    726 
    727                     listItemDBIDMatch = re.exec(inputs[i].name);
    728                     listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
    729                     listItemData = getListDataFromID(listItemDBID);
    730 
    731                     for ( j in listItemData ) {
    732                         params['menu-item[' + listItemDBID + '][' + j + ']'] = listItemData[j];
    733                     }
    734 
    735                     inputs[i].checked = false;
    736 
    737                 // we're submitting a search term
    738                 } else if (
    739                     '' == params['action'] && // give precedence to adding items
    740                     '' != inputs[i].value &&
    741                     inputs[i].className &&
    742                     -1 != inputs[i].className.search(/quick-search\b[^-]/)
    743                 ) {
    744                     params['action'] = 'menu-quick-search';
    745                     params['q'] = inputs[i].value;
    746                     params['response-format'] = 'markup';
    747                     params['type'] = inputs[i].name;
    748                     processMethod = that.processQuickSearchQueryResponse;
    749                 }
    750             }
    751             params['menu'] = thisForm.elements['menu'].value;
    752             params['menu-settings-column-nonce'] = thisForm.elements['menu-settings-column-nonce'].value;
    753 
    754             $.post( ajaxurl, params, function(menuMarkup) {
    755                 processMethod.call(that, menuMarkup, params);
    756                 $(thisForm).find('img.waiting').hide();
    757             });
    758 
    759             return false;
     778           
     779            processMethod = that.eventAddMenuItem;
     780           
     781            // If no items are checked, bail.
     782            if ( !items.length )
     783                return false;
     784           
     785            // Show the ajax spinner
     786            $('#' + id + ' img.waiting').show();
     787
     788            // do stuff
     789            $(items).each(function(){
     790                listItemDBIDMatch = re.exec( $(this).attr('name') );
     791                listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
     792                listItemData = getListDataFromID(listItemDBID);
     793
     794                params = {
     795                    'action': 'add-menu-item',
     796                    'menu': menu,
     797                    'menu-settings-column-nonce': nonce,
     798                    'menu-item': {}
     799                };
     800
     801                params['menu-item'][listItemDBID] = listItemData;
     802
     803                $.post( ajaxurl, params, function(menuMarkup) {
     804                    processMethod.call(that, menuMarkup, params);
     805                });
     806
     807                // Uncheck the item
     808                $(this).attr('checked', false);
     809            });
     810
     811            // Remove the ajax spinner
     812            $('#' + id + ' img.waiting').hide();
    760813        },
    761814
     
    766819         * @param object req The request arguments.
    767820         */
    768         processAddMenuItemResponse : function( menuMarkup, req ) {
     821        eventAddMenuItem : function( menuMarkup, req ) {
    769822            $(menuMarkup).hideAdvancedMenuItemFields().appendTo( targetList );
    770 
    771             /* set custom link form back to defaults */
    772             $('#custom-menu-item-name').val('').blur();
    773             $('#custom-menu-item-url').val('http://');
    774823        },
    775824
  • trunk/wp-admin/js/nav-menu.js

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