WordPress.org

Make WordPress Core

Ticket #13220: nav_menu_js.diff

File nav_menu_js.diff, 5.8 KB (added by ptahdunbar, 8 years ago)

splits up the submission forms so they can be invoked individually.

  • wp-admin/js/nav-menu.dev.js

     
    340340                                that.setupQuickSearchEventListeners(el);
    341341                        });
    342342
    343                         $(formEL).bind('submit', function(e) {
    344                                 return that.eventSubmitMetaForm.call(that, this, e);
     343                        // If a "Add to Menu" button was clicked, submit that metabox ajax style.
     344                        $(formEL).click(function(e) {
     345                                // based on the input, call that function
     346                                var divcontainer = $(e.target).parent().parent().parent();
     347                       
     348                                if ( $(e.target).is('input') && $(e.target).hasClass('button-secondary') && !$(e.target).hasClass('quick-search-submit') ) {
     349                                        if ( $(divcontainer).hasClass('customlinkdiv') ) {
     350                                                that.addCustomLink();
     351                                        } else if ( $(divcontainer).hasClass('posttypediv') || $(divcontainer).hasClass('taxonomydiv') ) {
     352                                                that.addItemsToMenu( $(divcontainer).attr('id') );
     353                                        };
     354                                        return false;
     355                                } else if ( $(e.target).is('input') && $(e.target).hasClass('quick-search-submit') ) {
     356                                        that.quickSearch( $(divcontainer).attr('id') );
     357                                        return false;
     358                                };
    345359                        });
    346                         $(formEL).find('input:submit').click(function() {
    347                                 $(this).siblings('img.waiting').show();
     360                },
     361               
     362                quickSearch : function(id) {
     363                        var type = $('#' + id + ' .quick-search').attr('name'),
     364                        q = $('#' + id + ' .quick-search').val(),
     365                        menu = $('#menu').val(),
     366                        nonce = $('#menu-settings-column-nonce').val(),
     367                        params = {},
     368                        that = this,
     369                        processMethod = function(){};
     370
     371                        processMethod = that.processQuickSearchQueryResponse;
     372
     373                        params = {
     374                                'action': 'menu-quick-search',
     375                                'response-format': 'markup',
     376                                'menu': menu,
     377                                'menu-settings-column-nonce': nonce,
     378                                'q': q,
     379                                'type': type
     380                        };
     381
     382                        $.post( ajaxurl, params, function(menuMarkup) {
     383                                processMethod.call(that, menuMarkup, params);
    348384                        });
    349385                },
     386               
     387                addCustomLink : function() {
     388                        var url = $('#custom-menu-item-url').val(),
     389                        label = $('#custom-menu-item-name').val(),
     390                        menu = $('#menu').val(),
     391                        nonce = $('#menu-settings-column-nonce').val(),
     392                        params = {},
     393                        that = this,
     394                        processMethod = function(){};
     395                       
     396                        if ( '' == url || 'http://' == url )
     397                                return false;
     398                       
     399                        // Show the ajax spinner
     400                        $('.customlinkdiv img.waiting').show();
     401                       
     402                        params = {
     403                                'action': 'add-menu-item',
     404                                'menu': menu,
     405                                'menu-settings-column-nonce': nonce,
     406                                'menu-item': {
     407                                        '-1': {
     408                                                'menu-item-type': 'custom',
     409                                                'menu-item-url': url,
     410                                                'menu-item-title': label
     411                                        }
     412                                }
     413                        };
     414                       
     415                        processMethod = that.eventAddMenuItem;
     416                       
     417                        $.post( ajaxurl, params, function(menuMarkup) {
     418                                processMethod.call(that, menuMarkup, params);
     419                               
     420                                // Remove the ajax spinner
     421                                $('.customlinkdiv img.waiting').hide();
     422                        });
     423                },
    350424
    351425                attachTabsPanelListeners : function() {
    352426                        $('#menu-settings-column').bind('click', function(e) {
     
    598672                 * @param object e The event object.
    599673                 */
    600674                eventSubmitMetaForm : function(thisForm, e) {
     675                       
    601676                        var inputs = thisForm.getElementsByTagName('input'),
    602677                        i = inputs.length,
    603678                        j,
     
    624699                                        )
    625700                                ) {
    626701                                        params['action'] = 'add-menu-item';
    627                                         processMethod = that.processAddMenuItemResponse;
     702                                        processMethod = that.eventAddMenuItem;
    628703
    629704                                        listItemDBIDMatch = re.exec(inputs[i].name);
    630705                                        listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
     
    652727                        }
    653728                        params['menu'] = thisForm.elements['menu'].value;
    654729                        params['menu-settings-column-nonce'] = thisForm.elements['menu-settings-column-nonce'].value;
    655 
     730console.log(params);
    656731                        $.post( ajaxurl, params, function(menuMarkup) {
    657732                                processMethod.call(that, menuMarkup, params);
    658733                                $(thisForm).find('img.waiting').hide();
     
    660735
    661736                        return false;
    662737                },
     738               
     739                /**
     740                 * Adds menu items to the menu.
     741                 *
     742                 * @param string id The id of the metabox
     743                 */
     744                addItemsToMenu : function(id) {
     745                        var items = $( '.tabs-panel-active .categorychecklist li input:checked', '#' + id),
     746                        menu = $('#menu').val(),
     747                        nonce = $('#menu-settings-column-nonce').val(),
     748                        params = {},
     749                        that = this,
     750                        processMethod = function(){},
     751                        re = new RegExp('menu-item\\[(\[^\\]\]*)');
     752                       
     753                        processMethod = that.eventAddMenuItem;
     754                       
     755                        // If no items are checked, bail.
     756                        if ( !items.length )
     757                                return false;
     758                       
     759                        // Show the ajax spinner
     760                        $('#' + id + ' img.waiting').show();
    663761
     762                        // do stuff
     763                        $(items).each(function(){
     764                                listItemDBIDMatch = re.exec( $(this).attr('name') );
     765                                listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
     766                                listItemData = getListDataFromID(listItemDBID);
     767
     768                                params = {
     769                                        'action': 'add-menu-item',
     770                                        'menu': menu,
     771                                        'menu-settings-column-nonce': nonce,
     772                                        'menu-item': {}
     773                                };
     774
     775                                params['menu-item'][listItemDBID] = listItemData;
     776
     777                                $.post( ajaxurl, params, function(menuMarkup) {
     778                                        processMethod.call(that, menuMarkup, params);
     779                                });
     780
     781                                // Uncheck the item
     782                                $(this).attr('checked', false);
     783                        });
     784
     785                        // Remove the ajax spinner
     786                        $('#' + id + ' img.waiting').hide();
     787                },
     788               
    664789                /**
    665790                 * Process the add menu item request response into menu list item.
    666791                 *
    667792                 * @param string menuMarkup The text server response of menu item markup.
    668793                 * @param object req The request arguments.
    669794                 */
    670                 processAddMenuItemResponse : function( menuMarkup, req ) {
     795                eventAddMenuItem : function( menuMarkup, req ) {
    671796                        $(menuMarkup).hideAdvancedMenuItemFields().appendTo( menuList );
    672 
    673                         /* set custom link form back to defaults */
    674                         $('#custom-menu-item-name').val('').blur();
    675                         $('#custom-menu-item-url').val('http://');
    676797                },
    677798
    678799                /**
     
    752873
    753874jQuery(function() {
    754875        wpNavMenu.init();
    755 });
     876});
     877 No newline at end of file