WordPress.org

Make WordPress Core

Ticket #13037: 13037.2.diff

File 13037.2.diff, 2.3 KB (added by duck_, 4 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" />' );