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, 8 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}