WordPress.org

Make WordPress Core

Ticket #13037: 13037.2.diff

File 13037.2.diff, 2.3 KB (added by duck_, 8 years ago)

update accounts for items with same id but different types

  • wp-admin/js/nav-menu.dev.js

     
    193193                                accept: '.menu li',
    194194                                tolerance: 'pointer',
    195195                                drop: function(e, ui) {
    196                                         var li = $(this).parent();
    197                                         var child = !$(this).hasClass('dropzone');
     196                                        var li = $(this).parent(), child = !$(this).hasClass('dropzone');
     197                                       
     198                                        if ( child || $(this).parents().is('.sub-menu') ) {
     199                                                var same_id = false, child_types = ui.draggable.find('input[name=menu-item-object[]]').map( function() { return $(this).val(); }),
     200                                                parent_types = $(this).parents('li:last').find('input[name=menu-item-object[]]').map( function() { return $(this).val(); }),
     201                                                child_ids = ui.draggable.find('input[name=menu-item-object-id[]]').map( function() { return $(this).val(); }),
     202                                                parent_ids = $(this).parents('li:last').find('input[name=menu-item-object-id[]]').map( function() { return $(this).val(); });
     203                                               
     204                                                $.each(parent_ids, function(i, v) {
     205                                                        if ( $.inArray(v, child_ids) != -1 && parent_types[i] == child_types[i] ) {
     206                                                                same_id = true;
     207                                                                return false;
     208                                                        }
     209                                                });
    198210
    199                                         var parent_id = li.children('input[name=menu-item-object-id[]]').val();
    200                                         var child_id = ui.draggable.children('input[name=menu-item-object-id[]]').val();
     211                                                // An item cannot be a (grand)child of itself. Use a custom link for the effect.
     212                                                if ( same_id ) {
     213                                                        ui.draggable.find('dt').animate( { backgroundColor: '#FF3333' }, { duration: 'normal', complete: function() { $(this).css( 'backgroundColor', '' ) } } );
     214                                                        if ( child )
     215                                                                li.find('dt').removeAttr('style');
     216                                                        else
     217                                                                $(this).removeAttr('style');
     218                                                        return;
     219                                                };
     220                                        }
    201221 
    202                                         // An item cannot be a child of itself. Use a custom link for the effect.
    203                                         if ( parent_id == child_id ) {
    204                                                 ui.draggable.find('dt').animate( { backgroundColor: '#FF3333' }, { duration: 'normal', complete: function() { $(this).css( 'backgroundColor', '' ) } } );
    205                                                 $(this).parent().find('dt').removeAttr('style');
    206                                                 return;
    207                                         };
    208  
    209222                                        // Append UL to first child
    210223                                        if ( child && li.children('ul').length == 0 ) {
    211224                                                li.append( '<ul class="sub-menu" />' );