WordPress.org

Make WordPress Core

Ticket #13220: add_home_link_hawtness.diff

File add_home_link_hawtness.diff, 5.3 KB (added by ptahdunbar, 5 years ago)

"Add Home Link" feature, doesn't work without js yet

  • wp-includes/script-loader.php

     
    395395                // Custom Navigation 
    396396                $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", false, '20100504' ); 
    397397                $scripts->localize( 'nav-menu', 'navMenuL10n', array( 
     398                        'home' => _x('Home', 'nav menu home label'), 
     399                        'homeurl' => home_url('/'), 
    398400                        'custom' => _x('Custom', 'menu nav item type'), 
    399401                        'thickbox' => _x('Edit Menu Item', 'Thickbox Title'), 
    400402                        'edit' => _x('Edit', 'menu item edit text'), 
  • wp-admin/includes/nav-menu.php

     
    314314        wp_nav_menu_post_type_meta_boxes(); 
    315315        wp_nav_menu_taxonomy_meta_boxes(); 
    316316 
    317  
    318317        // Register advanced menu items (columns) 
    319318        add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns'); 
    320319 
    321320        add_filter( 'columns_prefs_header', create_function( '', "return __('Show advanced menu properties');" )); 
    322321 
    323  
    324  
    325322        // If first time editing, disable advanced items by default. 
    326323        if( false === get_user_option( 'managenav-menuscolumnshidden' ) ) { 
    327324                $user = wp_get_current_user(); 
    328                 update_user_option($user->ID, "managenav-menuscolumnshidden", 
    329                         array ( 0 => 'link-target', 1 => 'css-classes', 2 => 'xfn', 3 => 'description', ), 
     325                update_user_option($user->ID, 'managenav-menuscolumnshidden', 
     326                        array( 0 => 'link-target', 1 => 'css-classes', 2 => 'xfn', 3 => 'description', ), 
    330327                        true); 
    331328        } 
    332329} 
     
    449446                        </p> 
    450447 
    451448                <p class="button-controls"> 
     449                        <span class="list-controls"> 
     450                                <a href="#" class="select-all add-home-link"><?php _e('Add Home Link'); ?></a> 
     451                        </span> 
    452452                        <span class="add-to-menu"> 
    453453                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> 
    454454                                <input type="submit" class="button-secondary" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" /> 
  • wp-admin/js/nav-menu.dev.js

     
    161161 
    162162                        this.attachTabsPanelListeners(); 
    163163 
     164                        this.attachHomeLinkListener(); 
     165 
    164166                        if( menuList.length ) // If no menu, we're in the + tab. 
    165167                                this.initSortables(); 
    166168 
     
    481483                        }); 
    482484                }, 
    483485                 
    484                 addCustomLink : function() { 
    485                         var url = $('#custom-menu-item-url').val(), 
    486                         label = $('#custom-menu-item-name').val(), 
     486                addCustomLink : function(url, label, addToTop) { 
     487                        var url = url || $('#custom-menu-item-url').val(), 
     488                        label = label || $('#custom-menu-item-name').val(), 
     489                        addToTop = addToTop || false, 
    487490                        menu = $('#menu').val(), 
    488491                        nonce = $('#menu-settings-column-nonce').val(), 
    489492                        params = {}, 
     
    509512                                } 
    510513                        }; 
    511514                         
    512                         processMethod = that.eventAddMenuItem; 
    513                          
     515                        processMethod = addToTop ? that.addMenuItemToTop : that.addMenuItemToBottom; 
     516 
    514517                        $.post( ajaxurl, params, function(menuMarkup) { 
    515518                                processMethod.call(that, menuMarkup, params); 
    516519                                 
    517520                                // Remove the ajax spinner 
    518521                                $('.customlinkdiv img.waiting').hide(); 
     522 
     523                                // Reset the form 
     524                                wpNavMenu.resetCustomLinkForm(); 
    519525                        }); 
    520526                }, 
     527                 
     528                resetCustomLinkForm : function() { 
     529                        // set custom link form back to defaults 
     530                        $('#custom-menu-item-name').val('').blur(); 
     531                        $('#custom-menu-item-url').val('http://'); 
     532                }, 
     533                 
     534                attachHomeLinkListener : function() { 
     535                        $('.add-home-link', '.customlinkdiv').click(function(e) { 
     536                                wpNavMenu.addCustomLink( navMenuL10n.homeurl, navMenuL10n.home, true); 
     537                                return false; 
     538                        }); 
     539                }, 
    521540 
    522541                attachTabsPanelListeners : function() { 
    523542                        $('#menu-settings-column').bind('click', function(e) { 
     
    725744 
    726745                eventOnClickMenuDelete : function(clickedEl) { 
    727746                        // Delete warning AYS 
    728                         if ( confirm( navMenuL10n.warnDeleteMenu ) ) { 
     747                        if ( confirm( navMenuL10n.warnDeleteMenu ) ) 
    729748                                return true; 
    730                         } else { 
     749                        else 
    731750                                return false; 
    732                         } 
    733751                }, 
    734752 
    735753                eventOnClickMenuItemDelete : function(clickedEl) { 
     
    767785                 * 
    768786                 * @param string id The id of the metabox 
    769787                 */ 
    770                 addItemsToMenu : function(id) { 
     788                addItemsToMenu : function(id, addToTop) { 
    771789                        var items = $( '.tabs-panel-active .categorychecklist li input:checked', '#' + id), 
    772790                        menu = $('#menu').val(), 
    773791                        nonce = $('#menu-settings-column-nonce').val(), 
    774792                        params = {}, 
    775793                        that = this, 
     794                        addToTop = addToTop || false, 
    776795                        processMethod = function(){}, 
    777796                        re = new RegExp('menu-item\\[(\[^\\]\]*)'); 
    778797                         
    779                         processMethod = that.eventAddMenuItem; 
     798                        processMethod = addToTop ? that.AddMenuItemToTop : that.AddMenuItemToBottom; 
    780799                         
    781800                        // If no items are checked, bail. 
    782801                        if ( !items.length ) 
     
    818837                 * @param string menuMarkup The text server response of menu item markup. 
    819838                 * @param object req The request arguments. 
    820839                 */ 
    821                 eventAddMenuItem : function( menuMarkup, req ) { 
     840                addMenuItemToBottom : function( menuMarkup, req ) { 
    822841                        $(menuMarkup).hideAdvancedMenuItemFields().appendTo( targetList ); 
    823842                }, 
     843                 
     844                addMenuItemToTop : function( menuMarkup, req ) { 
     845                        $(menuMarkup).hideAdvancedMenuItemFields().prependTo( targetList ); 
     846                }, 
    824847 
    825848                /** 
    826849                 * Process the quick search response into a search result