Make WordPress Core

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

File 13220.select.all.1.patch, 2.8 KB (added by koopersmith, 14 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                                }