WordPress.org

Make WordPress Core

Ticket #13220: 13220.add.home.link.and.friends.1.patch

File 13220.add.home.link.and.friends.1.patch, 7.4 KB (added by koopersmith, 4 years ago)
  • 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

     
    182182 
    183183                        this.attachTabsPanelListeners(); 
    184184 
     185                        this.attachHomeLinkListener(); 
     186 
    185187                        if( menuList.length ) // If no menu, we're in the + tab. 
    186188                                this.initSortables(); 
    187189 
     
    190192                        this.initTabManager(); 
    191193                         
    192194                        this.initAddMenuItemDraggables(); 
     195                         
     196                        this.checkForEmptyMenu(); 
    193197                }, 
    194198 
    195199                initToggles : function() { 
     
    349353                                        // Set us to be the ajax target 
    350354                                        targetList = target.children('.menu-item-transport'); 
    351355                                        // Get all checked elements and assemble selected items. 
    352                                         items = menuItems.filter('.selected-menu-item').children().not( ui.helper ).clone(); 
     356                                        items = li.parents('.tabs-panel').find('.selected-menu-item').children().not( ui.helper ).clone(); 
    353357                                        ui.helper.children('.additional-menu-items').append( items ); 
    354358                                        // This class tells the sortables to treat it as a new item. 
    355359                                        ui.helper.addClass('new-menu-item'); 
     
    372376                                stop: function(e, ui) { 
    373377                                        // Reset the targetList and unselect the menu items 
    374378                                        targetList = menuList; 
    375                                         menuItems.filter('.selected-menu-item').deselectItem(); 
     379                                        $(e.target).parents('.tabs-panel').find('.selected-menu-item').deselectItem(); 
    376380                                } 
    377381                        }); 
    378382                }, 
     
    478482                        }); 
    479483                }, 
    480484                 
    481                 addCustomLink : function() { 
    482                         var url = $('#custom-menu-item-url').val(), 
    483                         label = $('#custom-menu-item-name').val(), 
     485                addCustomLink : function(url, label, addToTop) { 
     486                        var url = url || $('#custom-menu-item-url').val(), 
     487                        label = label || $('#custom-menu-item-name').val(), 
     488                        addToTop = addToTop || false, 
    484489                        menu = $('#menu').val(), 
    485490                        nonce = $('#menu-settings-column-nonce').val(), 
    486491                        params = {}, 
     
    506511                                } 
    507512                        }; 
    508513                         
    509                         processMethod = that.eventAddMenuItem; 
    510                          
     514                        processMethod = addToTop ? that.addMenuItemToTop : that.addMenuItemToBottom; 
     515 
    511516                        $.post( ajaxurl, params, function(menuMarkup) { 
    512517                                processMethod.call(that, menuMarkup, params); 
    513518                                 
    514519                                // Remove the ajax spinner 
    515520                                $('.customlinkdiv img.waiting').hide(); 
     521 
     522                                // Reset the form 
     523                                wpNavMenu.resetCustomLinkForm(); 
    516524                        }); 
    517525                }, 
     526                 
     527                resetCustomLinkForm : function() { 
     528                        // set custom link form back to defaults 
     529                        $('#custom-menu-item-name').val('').blur(); 
     530                        $('#custom-menu-item-url').val('http://'); 
     531                }, 
     532                 
     533                attachHomeLinkListener : function() { 
     534                        $('.add-home-link', '.customlinkdiv').click(function(e) { 
     535                                wpNavMenu.addCustomLink( navMenuL10n.homeurl, navMenuL10n.home, true); 
     536                                return false; 
     537                        }); 
     538                }, 
    518539 
    519540                attachTabsPanelListeners : function() { 
    520541                        $('#menu-settings-column').bind('click', function(e) { 
     
    726747 
    727748                eventOnClickMenuDelete : function(clickedEl) { 
    728749                        // Delete warning AYS 
    729                         if ( confirm( navMenuL10n.warnDeleteMenu ) ) { 
     750                        if ( confirm( navMenuL10n.warnDeleteMenu ) ) 
    730751                                return true; 
    731                         } else { 
     752                        else 
    732753                                return false; 
    733                         } 
    734754                }, 
    735755 
    736756                eventOnClickMenuItemDelete : function(clickedEl) { 
     
    768788                 * 
    769789                 * @param string id The id of the metabox 
    770790                 */ 
    771                 addItemsToMenu : function(id) { 
     791                addItemsToMenu : function(id, addToTop) { 
    772792                        var items = $( '.tabs-panel-active .categorychecklist li input:checked', '#' + id), 
    773793                        menu = $('#menu').val(), 
    774794                        nonce = $('#menu-settings-column-nonce').val(), 
    775795                        params = {}, 
    776796                        that = this, 
     797                        addToTop = addToTop || false, 
    777798                        processMethod = function(){}, 
    778799                        re = new RegExp('menu-item\\[(\[^\\]\]*)'); 
    779800                         
    780                         processMethod = that.eventAddMenuItem; 
     801                        processMethod = addToTop ? that.addMenuItemToTop : that.addMenuItemToBottom; 
    781802                         
    782803                        // If no items are checked, bail. 
    783804                        if ( !items.length ) 
     
    806827                                }); 
    807828 
    808829                                // Uncheck the item 
    809                                 $(this).attr('checked', false); 
     830                                $(this).parent().prev().deselectItem(); 
    810831                        }); 
    811832 
    812833                        // Remove the ajax spinner 
     
    819840                 * @param string menuMarkup The text server response of menu item markup. 
    820841                 * @param object req The request arguments. 
    821842                 */ 
    822                 eventAddMenuItem : function( menuMarkup, req ) { 
     843                addMenuItemToBottom : function( menuMarkup, req ) { 
    823844                        $(menuMarkup).hideAdvancedMenuItemFields().appendTo( targetList ); 
    824845                }, 
     846                 
     847                addMenuItemToTop : function( menuMarkup, req ) { 
     848                        $(menuMarkup).hideAdvancedMenuItemFields().prependTo( targetList ); 
     849                }, 
    825850 
    826851                /** 
    827852                 * Process the quick search response into a search result 
     
    886911                removeMenuItem : function(el) { 
    887912                        el = $(el) 
    888913                        var children = el.childMenuItems(); 
     914                        var that = this; 
    889915 
    890916                        el.addClass('deleting').fadeOut( 350 , function() { 
    891917                                el.remove(); 
    892918                                children.shiftDepthClass(-1).updateParentMenuItemDBId(); 
    893919                                recalculateMenuItemPositions(); 
     920                                that.checkForEmptyMenu(); 
    894921                        }); 
     922                }, 
     923                 
     924                checkForEmptyMenu : function() { 
     925                        if( menuList.children().length ) return; 
     926                        menuList.height(80).one('sortstop', function(){ 
     927                                $(this).height('auto'); 
     928                        }); 
    895929                } 
    896930        } 
    897931} 
  • wp-admin/css/nav-menu.dev.css

     
    313313        padding-top:1em; 
    314314} 
    315315 
     316#menu-to-edit { 
     317        padding: 1em 0; 
     318} 
     319 
    316320.menu ul { width: 100%; } 
    317321.menu ul.sub-menu { 
    318322}