WordPress.org

Make WordPress Core

Ticket #13220: 13220.select.all.1.patch

File 13220.select.all.1.patch, 2.8 KB (added by koopersmith, 5 years ago)
  • wp-admin/js/nav-menu.dev.js

     
    146146                                }); 
    147147                        }); 
    148148                }, 
     149                selectItem : function() { 
     150                        return this.each(function(){ 
     151                                $(this).addClass('selected-menu-item') 
     152                                        .next().children('input').attr('checked','checked'); 
     153                        }); 
     154                }, 
     155                deselectItem : function() { 
     156                        return this.each(function(){ 
     157                                $(this).removeClass('selected-menu-item') 
     158                                        .next().children('input').removeAttr('checked'); 
     159                        }); 
     160                }, 
     161                toggleItem : function() { 
     162                        return this.each(function(){ 
     163                                var t = $(this); 
     164                                if( t.hasClass('selected-menu-item') ) 
     165                                        t.deselectItem(); 
     166                                else 
     167                                        t.selectItem(); 
     168                        }); 
     169                } 
    149170        }); 
    150171 
    151172        return { 
     
    309330                }, 
    310331                 
    311332                initAddMenuItemDraggables : function() { 
    312                         $.fn.extend({ 
    313                                 checkItem : function() { 
    314                                         return this.each(function(){ 
    315                                                 $(this).addClass('selected-menu-item') 
    316                                                         .next().children('input').attr('checked','checked'); 
    317                                         }); 
    318                                 }, 
    319                                 uncheckItem : function() { 
    320                                         return this.each(function(){ 
    321                                                 $(this).removeClass('selected-menu-item') 
    322                                                         .next().children('input').removeAttr('checked'); 
    323                                         }); 
    324                                 }, 
    325                                 toggleItem : function() { 
    326                                         return this.each(function(){ 
    327                                                 var t = $(this); 
    328                                                 if( t.hasClass('selected-menu-item') ) 
    329                                                         t.uncheckItem(); 
    330                                                 else 
    331                                                         t.checkItem(); 
    332                                         }); 
    333                                 } 
    334                         }); 
    335                          
    336333                        var menuItems = $('.potential-menu-item'); 
    337334                        menuItems.click(function(e){ 
    338335                                $(this).toggleItem(); 
     
    348345                                                items; 
    349346                                         
    350347                                        // Make sure the item we're dragging is selected. 
    351                                         item.checkItem(); 
     348                                        item.selectItem(); 
    352349                                        // Set us to be the ajax target 
    353350                                        targetList = target.children('.menu-item-transport'); 
    354351                                        // Get all checked elements and assemble selected items. 
     
    375372                                stop: function(e, ui) { 
    376373                                        // Reset the targetList and unselect the menu items 
    377374                                        targetList = menuList; 
    378                                         menuItems.filter('.selected-menu-item').uncheckItem(); 
     375                                        menuItems.filter('.selected-menu-item').deselectItem(); 
    379376                                } 
    380377                        }); 
    381378                }, 
     
    553550 
    554551                                        return false; 
    555552                                } else if ( e.target && e.target.className && -1 != e.target.className.indexOf('select-all') ) { 
    556                                         var selectAreaMatch = /#(.*)$/.exec(e.target.href); 
     553                                        var selectAreaMatch = /#(.*)$/.exec(e.target.href), items; 
    557554                                        if ( selectAreaMatch && selectAreaMatch[1] ) { 
    558                                                 $('#' + selectAreaMatch[1] + ' .tabs-panel-active input[type=checkbox]').attr('checked', 'checked'); 
     555                                                items = $('#' + selectAreaMatch[1] + ' .tabs-panel-active .potential-menu-item'); 
     556                                                if( items.length === items.filter('.selected-menu-item').length ) 
     557                                                        items.deselectItem(); 
     558                                                else 
     559                                                        items.selectItem(); 
    559560                                                return false; 
    560561                                        } 
    561562                                }