WordPress.org

Make WordPress Core

Ticket #13213: non-js-add-home-link.13213.2.diff

File non-js-add-home-link.13213.2.diff, 8.0 KB (added by filosofo, 8 years ago)
  • wp-includes/nav-menu-template.php

     
    157157
    158158                $output .= $indent . '<li>';
    159159                $output .= '<label class="menu-item-title">';
    160                 $output .= '<input type="checkbox" class="menu-item-checkbox" name="menu-item[' . $possible_object_id . '][menu-item-object-id]" value="'. esc_attr( $item->object_id ) .'" /> ';
     160                $output .= '<input type="checkbox" class="menu-item-checkbox';
     161                if ( ! empty( $item->_add_to_top ) ) {
     162                        $output .= ' add-to-top';
     163                }
     164                $output .= '" name="menu-item[' . $possible_object_id . '][menu-item-object-id]" value="'. esc_attr( $item->object_id ) .'" /> ';
    161165                $output .= esc_html( $item->title ) .'</label>';
    162166
    163167                // Menu item hidden fields
  • wp-includes/nav-menu.php

     
    545545        if ( isset( $menu_item->post_type ) ) {
    546546                if ( 'nav_menu_item' == $menu_item->post_type ) {
    547547                        $menu_item->db_id = (int) $menu_item->ID;
    548                         $menu_item->menu_item_parent = get_post_meta( $menu_item->ID, '_menu_item_menu_item_parent', true );
    549                         $menu_item->object_id = get_post_meta( $menu_item->ID, '_menu_item_object_id', true );
    550                         $menu_item->object = get_post_meta( $menu_item->ID, '_menu_item_object', true );
    551                         $menu_item->type = get_post_meta( $menu_item->ID, '_menu_item_type', true );
     548                        $menu_item->menu_item_parent = empty( $menu_item->menu_item_parent ) ? get_post_meta( $menu_item->ID, '_menu_item_menu_item_parent', true ) : $menu_item->menu_item_parent;
     549                        $menu_item->object_id = empty( $menu_item->object_id ) ? get_post_meta( $menu_item->ID, '_menu_item_object_id', true ) : $menu_item->object_id;
     550                        $menu_item->object = empty( $menu_item->object ) ? get_post_meta( $menu_item->ID, '_menu_item_object', true ) : $menu_item->object;
     551                        $menu_item->type = empty( $menu_item->type ) ? get_post_meta( $menu_item->ID, '_menu_item_type', true ) : $menu_item->type;
    552552
    553553                        if ( 'post_type' == $menu_item->type ) {
    554554                                $object = get_post_type_object( $menu_item->object );
     
    574574                                $menu_item->url = get_post_meta( $menu_item->ID, '_menu_item_url', true );
    575575                        }
    576576
    577                         $menu_item->target = get_post_meta( $menu_item->ID, '_menu_item_target', true );
     577                        $menu_item->target = empty( $menu_item->target ) ? get_post_meta( $menu_item->ID, '_menu_item_target', true ) : $menu_item->target;
    578578
    579                         $menu_item->attr_title = apply_filters( 'nav_menu_attr_title', $menu_item->post_excerpt );
    580                         $menu_item->description = apply_filters( 'nav_menu_description', $menu_item->post_content );
     579                        $menu_item->attr_title = empty( $menu_item->attr_title ) ? apply_filters( 'nav_menu_attr_title', $menu_item->post_excerpt ) : $menu_item->attr_title;
     580                        $menu_item->description = empty( $menu_item->description ) ? apply_filters( 'nav_menu_description', $menu_item->post_content ) : $menu_item->description;
    581581
    582                         $menu_item->classes = (array) get_post_meta( $menu_item->ID, '_menu_item_classes', true );
    583                         $menu_item->xfn = get_post_meta( $menu_item->ID, '_menu_item_xfn', true );
     582                        $menu_item->classes = empty( $menu_item->classes ) ? (array) get_post_meta( $menu_item->ID, '_menu_item_classes', true ) : $menu_item->classes;
     583                        $menu_item->xfn = empty( $menu_item->xfn ) ? get_post_meta( $menu_item->ID, '_menu_item_xfn', true ) : $menu_item->xfn;
    584584                } else {
    585585                        $menu_item->db_id = 0;
    586586                        $menu_item->menu_item_parent = 0;
  • wp-admin/includes/nav-menu.php

     
    473473                        </p>
    474474
    475475                <p class="button-controls">
    476                         <span class="list-controls">
    477                                 <a href="#" class="select-all add-home-link"><?php _e('Add Home Link'); ?></a>
    478                         </span>
    479476                        <span class="add-to-menu">
    480477                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
    481478                                <input type="submit" class="button-secondary submit-add-to-menu" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" id="submit-customlinkdiv" />
     
    495492 * @param string $post_type The post type object.
    496493 */
    497494function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
     495        global $_nav_menu_placeholder;
     496
    498497        $post_type_name = $post_type['args']->name;
    499498
    500499        // paginate browsing for large numbers of post objects
     
    632631                        <ul id="<?php echo $post_type_name; ?>checklist" class="list:<?php echo $post_type_name?> categorychecklist form-no-clear">
    633632                                <?php
    634633                                $args['walker'] = $walker;
     634                               
     635                                // if we're dealing with pages, let's put a checkbox for the front page at the top of the list
     636                                if ( 'page' == $post_type_name ) {
     637                                        $front_page = (int) get_option( 'page_on_front' );
     638                                        if ( ! empty( $front_page ) ) {
     639                                                $front_page_obj = get_post( $front_page );
     640                                                $front_page_obj->_add_to_top = true;
     641                                                array_unshift( $posts, $front_page_obj );
     642                                        } else {
     643                                                $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1;
     644                                                array_unshift( $posts, (object) array(
     645                                                        '_add_to_top' => true,
     646                                                        'ID' => 0,
     647                                                        'object_id' => $_nav_menu_placeholder,
     648                                                        'post_title' => _x('Home', 'nav menu home label'),
     649                                                        'post_type' => 'nav_menu_item',
     650                                                        'post_content' => '',
     651                                                        'post_excerpt' => '',
     652                                                ) );
     653                                        }
     654                                }
     655
    635656                                $checkbox_items = walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args );
    636657
    637658                                if ( 'all' == $current_tab && ! empty( $_REQUEST['selectall'] ) ) {
    638659                                        $checkbox_items = preg_replace('/(type=(.)checkbox(\2))/', '$1 checked=$2checked$2', $checkbox_items);
    639660
    640661                                }
     662
    641663                                echo $checkbox_items;
    642664                                ?>
    643665                        </ul>
  • wp-admin/js/nav-menu.dev.js

     
    3838
    3939                        this.attachTabsPanelListeners();
    4040
    41                         this.attachHomeLinkListener();
    42 
    4341                        this.attachUnsavedChangesListener();
    4442
    4543                        if( api.menuList.length ) // If no menu, we're in the + tab.
     
    134132                                                        var t = $(this),
    135133                                                                listItemDBIDMatch = re.exec( t.attr('name') ),
    136134                                                                listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
     135                                                        if ( this.className && -1 != this.className.indexOf('add-to-top') )
     136                                                                processMethod = api.addMenuItemToTop;
    137137                                                        menuItems[listItemDBID] = t.closest('li').getItemData( 'add-menu-item', listItemDBID );
    138138                                                });
     139                                               
    139140                                                // Add the items
    140141                                                api.addItemToMenu(menuItems, processMethod, function(){
    141142                                                        // Deselect the items and hide the ajax spinner
     
    540541                        $(menuMarkup).hideAdvancedMenuItemFields().prependTo( api.targetList );
    541542                },
    542543
    543                 attachHomeLinkListener : function() {
    544                         $('.add-home-link', '.customlinkdiv').click(function(e) {
    545                                 api.addLinkToMenu( navMenuL10n.homeurl, navMenuL10n.home, api.addMenuItemToTop );
    546                                 return false;
    547                         });
    548                 },
    549 
    550544                attachUnsavedChangesListener : function() {
    551545                        $('#menu-management input, #menu-management select, #menu-management, #menu-management textarea').change(function(){
    552546                                api.registerChange();
  • wp-admin/nav-menus.php

     
    318318                        // Update menu items
    319319
    320320                        if ( ! is_wp_error( $_menu_object ) ) {
    321                                 $unsorted_menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID') );
     321                                $unsorted_menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID', 'post_status' => 'draft,publish') );
    322322                                $menu_items = array();
    323323                                // Index menu items by db ID
    324324                                foreach( $unsorted_menu_items as $_item )