Make WordPress Core

Ticket #13220: add_home_link_hawtness.diff

File add_home_link_hawtness.diff, 5.3 KB (added by ptahdunbar, 14 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