WordPress.org

Make WordPress Core

Ticket #13247: 13247.revert.to.checkboxes.1.patch

File 13247.revert.to.checkboxes.1.patch, 11.0 KB (added by koopersmith, 5 years ago)
  • wp-includes/nav-menu-template.php

     
    146146                $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; 
    147147 
    148148                $output .= $indent . '<li>'; 
    149                 $output .= '<ul class="potential-menu-item hide-if-no-js"><li><div>'; 
    150                 $output .= '<span class="item-title">' . esc_html( $item->title ) . '</span>'; 
    151                 $output .= '<span class="item-controls">'; 
    152                 $output .= '<span class="item-type">' . esc_html( $item->append ) . '</span>'; 
    153                 $output .= '<span class="item-edit">'; 
    154                 $output .= '<img class="waiting" src="' . esc_url( admin_url( 'images/wpspin_light.gif' ) ) . '" />'; 
    155                 $output .= '</span></span>'; 
    156                 $output .= '</div><ul class="additional-menu-items"></ul><ul class="menu-item-transport"></ul></li></ul>'; 
    157                 $output .= '<label class="menu-item-title hide-if-js">'; 
     149                $output .= '<label class="menu-item-title">'; 
    158150                $output .= '<input type="checkbox" class="menu-item-checkbox" name="menu-item[' . $possible_object_id . '][menu-item-object-id]" value="'. esc_attr( $item->object_id ) .'" /> '; 
    159151                $output .= esc_html( $item->title ) .'</label>'; 
    160152 
  • wp-admin/includes/nav-menu.php

     
    665665                return; 
    666666        } 
    667667        // paginate browsing for large numbers of objects 
    668         $per_page = 13; 
     668        $per_page = 50; 
    669669        $pagenum = isset( $_REQUEST[$taxonomy_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; 
    670670        $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; 
    671671 
  • wp-admin/js/nav-menu.dev.js

     
    114114 
    115115                        this.initTabManager(); 
    116116                 
    117                         this.initAddMenuItemDraggables(); 
    118                  
    119117                        this.checkForEmptyMenu(); 
    120118                }, 
    121119                 
     
    177175                                                }); 
    178176                                        }); 
    179177                                }, 
    180                                 selectItem : function() { 
    181                                         return this.each(function(){ 
    182                                                 $(this).addClass('selected-menu-item') 
    183                                                         .next().children('input').attr('checked','checked'); 
    184                                         }); 
    185                                 }, 
    186                                 deselectItem : function() { 
    187                                         return this.each(function(){ 
    188                                                 $(this).removeClass('selected-menu-item') 
    189                                                         .next().children('input').removeAttr('checked'); 
    190                                         }); 
    191                                 }, 
    192                                 toggleItem : function() { 
    193                                         return this.each(function(){ 
    194                                                 var t = $(this); 
    195                                                 if( t.hasClass('selected-menu-item') ) 
    196                                                         t.deselectItem(); 
    197                                                 else 
    198                                                         t.selectItem(); 
    199                                         }); 
    200                                 }, 
    201178                                /** 
    202179                                 * Adds selected menu items to the menu. 
    203180                                 * 
     
    227204                                                // Add the items 
    228205                                                api.addItemToMenu(menuItems, processMethod, function(){ 
    229206                                                        // Deselect the items and hide the ajax spinner 
    230                                                         checkboxes.parent().prev().deselectItem(); 
     207                                                        checkboxes.removeAttr('checked'); 
    231208                                                        t.find('img.waiting').hide(); 
    232209                                                }); 
    233210                                        }); 
     
    263240                                        var height, width, parent, children, maxChildDepth; 
    264241 
    265242                                        transport = ui.item.children('.menu-item-transport'); 
    266                                         // Check if the item is in the menu, or new 
    267                                         newItem = ( ui.helper.hasClass('new-menu-item') ); 
    268243                                 
    269244                                        // Set depths. currentDepth must be set before children are located. 
    270245                                        originalDepth = ( newItem ) ? 0 : ui.item.menuItemDepth(); 
    271246                                        updateCurrentDepth(ui, originalDepth); 
    272247                                 
    273                                         if( ! newItem ) { 
    274                                                 // Attach child elements to parent 
    275                                                 // Skip the placeholder 
    276                                                 parent = ( ui.item.next()[0] == ui.placeholder[0] ) ? ui.item.next() : ui.item; 
    277                                                 children = parent.childMenuItems(); 
    278                                                 transport.append( children ); 
    279                                         } 
     248                                        // Attach child elements to parent 
     249                                        // Skip the placeholder 
     250                                        parent = ( ui.item.next()[0] == ui.placeholder[0] ) ? ui.item.next() : ui.item; 
     251                                        children = parent.childMenuItems(); 
     252                                        transport.append( children ); 
    280253 
    281254                                        // Now that the element is complete, we can update... 
    282255                                        updateDepthRange(ui); 
     
    291264 
    292265                                        // Update the width of the placeholder to match the moving item. 
    293266                                        maxChildDepth = originalDepth; 
    294                                         if( ! newItem ) { // Children have already been attached to new items 
    295                                                 children.each(function(){ 
    296                                                         var depth = $(this).menuItemDepth(); 
    297                                                         maxChildDepth = (depth > maxChildDepth) ? depth : maxChildDepth; 
    298                                                 }); 
    299                                         } 
     267                                        children.each(function(){ 
     268                                                var depth = $(this).menuItemDepth(); 
     269                                                maxChildDepth = (depth > maxChildDepth) ? depth : maxChildDepth; 
     270                                        }); 
    300271                                        width = ui.helper.find('.menu-item-handle').outerWidth(); // Get original width 
    301272                                        width += depthToPx(maxChildDepth - originalDepth); // Account for children 
    302273                                        width -= 2; // Subtract 2 for borders 
     
    308279                                        // Return child elements to the list 
    309280                                        children = transport.children().insertAfter(ui.item); 
    310281                                 
    311                                         if( newItem ) { 
    312                                                 // Remove the helper item 
    313                                                 ui.item.remove(); 
    314                                                 // Update depth classes 
    315                                                 if( depthChange != 0 ) 
    316                                                         children.shiftDepthClass( depthChange ); 
    317                                                 // All new menu items must be updated 
    318                                                 children.updateParentMenuItemDBId(); 
    319                                         } else { 
    320                                                 // Update depth classes 
    321                                                 if( depthChange != 0 ) { 
    322                                                         ui.item.updateDepthClass( currentDepth ); 
    323                                                         children.shiftDepthClass( depthChange ); 
    324                                                 } 
    325                                                 // Update the item data. 
    326                                                 ui.item.updateParentMenuItemDBId(); 
     282                                        // Update depth classes 
     283                                        if( depthChange != 0 ) { 
     284                                                ui.item.updateDepthClass( currentDepth ); 
     285                                                children.shiftDepthClass( depthChange ); 
    327286                                        } 
     287                                        // Update the item data. 
     288                                        ui.item.updateParentMenuItemDBId(); 
    328289                                        // Update positions 
    329290                                        recalculateMenuItemPositions(); 
    330291                                }, 
     
    345306                                        if( depth != currentDepth ) 
    346307                                                updateCurrentDepth(ui, depth); 
    347308                                }, 
    348                                 receive: function(e, ui) { 
    349                                         transport = ui.sender.children('.menu-item-transport'); 
    350                                 } 
    351309                        }); 
    352310 
    353311                        function updateDepthRange(ui) { 
     
    371329                                currentDepth = depth; 
    372330                        } 
    373331                }, 
    374          
    375                 initAddMenuItemDraggables : function() { 
    376                         var menuItems = $('.potential-menu-item'); 
    377                         menuItems.click(function(e){ 
    378                                 $(this).toggleItem(); 
    379                         }).children().draggable({ 
    380                                 helper: 'clone', 
    381                                 connectToSortable: 'ul#menu-to-edit', 
    382                                 distance: 5, 
    383                                 zIndex: 100, 
    384                                 start: function(e, ui) { 
    385                                         var target = $(e.target), 
    386                                                 item = target.parent(), 
    387                                                 li = item.parent(), 
    388                                                 items; 
    389                                  
    390                                         // Make sure the item we're dragging is selected. 
    391                                         item.selectItem(); 
    392                                         // Set us to be the ajax target 
    393                                         targetList = target.children('.menu-item-transport'); 
    394                                         // Get all checked elements and assemble selected items. 
    395                                         items = li.parents('.tabs-panel').find('.selected-menu-item').children().not( ui.helper ).clone(); 
    396                                         ui.helper.children('.additional-menu-items').append( items ); 
    397                                         // This class tells the sortables to treat it as a new item. 
    398                                         ui.helper.addClass('new-menu-item'); 
    399                                  
    400                                         // CSS tweaks to remove some unnecessary items 
    401                                         ui.helper.children('div').hide(); 
    402                                         items.first().css('margin-top', 0); 
    403332 
    404                                         // Make the items look like menu items 
    405                                         items.children('div').addClass('menu-item-handle'); 
    406                                         ui.helper.children('div').addClass('hidden-handle'); 
    407                                  
    408                                         // Trigger the ajax 
    409                                         li.parents('.inside').find('.add-to-menu input').click(); 
    410                                  
    411                                         // Lock dimensions 
    412                                         ui.helper.width( ui.helper.width() ); 
    413                                         ui.helper.height( ui.helper.height() ); 
    414                                 }, 
    415                                 stop: function(e, ui) { 
    416                                         // Reset the targetList and unselect the menu items 
    417                                         targetList = menuList; 
    418                                         $(e.target).parents('.tabs-panel').find('.selected-menu-item').deselectItem(); 
    419                                 } 
    420                         }); 
    421                 }, 
    422  
    423333                attachMenuEditListeners : function() { 
    424334                        var that = this; 
    425335                        $('#update-nav-menu').bind('click', function(e) { 
     
    598508 
    599509                attachTabsPanelListeners : function() { 
    600510                        $('#menu-settings-column').bind('click', function(e) { 
    601                                 var selectAreaMatch, activePanel, panelIdMatch, wrapper, inputs, i; 
     511                                var selectAreaMatch, activePanel, panelIdMatch, wrapper, inputs, i, items; 
    602512                                 
    603513                                if ( e.target && e.target.className && -1 != e.target.className.indexOf('nav-tab-link') ) { 
    604514                                        panelIdMatch = /#(.*)$/.exec(e.target.href); 
     
    630540 
    631541                                        return false; 
    632542                                } else if ( e.target && e.target.className && -1 != e.target.className.indexOf('select-all') ) { 
    633                                         selectAreaMatch = /#(.*)$/.exec(e.target.href), items; 
     543                                        selectAreaMatch = /#(.*)$/.exec(e.target.href); 
    634544                                        if ( selectAreaMatch && selectAreaMatch[1] ) { 
    635                                                 items = $('#' + selectAreaMatch[1] + ' .tabs-panel-active .potential-menu-item'); 
    636                                                 if( items.length === items.filter('.selected-menu-item').length ) 
    637                                                         items.deselectItem(); 
     545                                                items = $('#' + selectAreaMatch[1] + ' .tabs-panel-active .menu-item-title input'); 
     546                                                if( items.length === items.filter(':checked').length ) 
     547                                                        items.removeAttr('checked'); 
    638548                                                else 
    639                                                         items.selectItem(); 
     549                                                        items.attr('checked', 'checked'); 
    640550                                                return false; 
    641551                                        } 
    642552                                } 
  • wp-admin/css/wp-admin.dev.css

     
    20082008.nav-menus-php .posttypediv div.tabs-panel, 
    20092009.nav-menus-php .taxonomydiv div.tabs-panel { 
    20102010        height: auto; 
    2011         overflow: visible; 
     2011        max-height: 205px; 
    20122012} 
    20132013 
    20142014div.tabs-panel-active { 
  • wp-admin/css/nav-menu.dev.css

     
    205205        height: 400px; 
    206206} 
    207207 
    208 #side-sortables .potential-menu-item { 
    209         margin-left: 0; 
    210         position: relative; 
    211         margin: 6px 0; 
    212 } 
    213 #side-sortables .potential-menu-item ul { 
    214         margin-left: 0; 
    215          
    216 } 
    217 #side-sortables .potential-menu-item li { 
    218         cursor: move; 
    219         padding: 1px 6px; 
    220         border-radius: 4px; 
    221         -webkit-border-radius: 4px; 
    222         -moz-border-radius: 4px; 
    223         -khtml-border-radius: 4px; 
    224 } 
    225         .potential-menu-item li { 
    226                 background: #eee; 
    227                 border: 1px solid #dfdfdf; 
    228                 color: #646464; 
    229         } 
    230         .potential-menu-item li:hover { 
    231                 color: #222; 
    232                 border-color: #ccc; 
    233                 background: #f9f9f9; 
    234         } 
    235                 .selected-menu-item li { 
    236                         background: #FFFFE0; 
    237                         border-color: #E6DB55; 
    238                 } 
    239                 .selected-menu-item li:hover { 
    240                         background: #ffffbe; 
    241                         border-color: #e2d537; 
    242                 } 
    243         .potential-menu-item .item-controls, 
    244         .potential-menu-item .menu-item-transport { 
    245                 display: none; 
    246         } 
    247         .potential-menu-item .ui-draggable-dragging div, 
    248         .potential-menu-item .menu-item-handle .item-controls { 
    249                 display: block; 
    250         } 
    251         #side-sortables .new-menu-item, 
    252         #side-sortables .new-menu-item li, 
    253         #side-sortables .additional-menu-items li { 
    254                 background: transparent; 
    255                 border: 0; 
    256         } 
    257         #side-sortables .additional-menu-items li { 
    258                 margin-top: 13px; 
    259         } 
    260         .item-edit img.waiting { 
    261                 display: block; 
    262         } 
    263  
    264208/* Button Primary Actions */ 
    265209#menu-container .submit { margin: 0px 0px 10px; padding: 0px; } 
    266210