Ticket #5460: 5460.patch

File 5460.patch, 2.4 KB (added by Garry Yao, 14 years ago)
  • _source/plugins/list/plugin.js

     
    3838                                if ( listItem.$.nodeName.toLowerCase() != 'li' )
    3939                                        continue;
    4040
    41                                 var itemObj = { 'parent' : listNode, indent : baseIndentLevel, element : listItem };
     41                                var itemObj = { 'parent' : listNode, indent : baseIndentLevel, element : listItem, contents : [] };
    4242                                if ( !grandparentNode )
    4343                                {
    4444                                        itemObj.grandparent = listNode.getParent();
     
    5454
    5555                                for ( var j = 0, itemChildCount = listItem.getChildCount(), child; j < itemChildCount ; j++ )
    5656                                {
    57                                         child = listItem.getChild( j );
    58                                         // Push inner list items with +1 indentation in the correct order.
     57                                        var child = listItem.getChild( j );
    5958                                        if ( child.type == CKEDITOR.NODE_ELEMENT && listNodeNames[ child.getName() ] )
     59                                                // Note the recursion here, it pushes inner list items with
     60                                                // +1 indentation in the correct order.
    6061                                                CKEDITOR.plugins.list.listToArray( child, database, baseArray, baseIndentLevel + 1, itemObj.grandparent );
     62                                        else
     63                                                itemObj.contents.push( child );
    6164                                }
    6265                        }
    6366                        return baseArray;
     
    8790                                                rootNode = listArray[ currentIndex ].parent.clone( false, true );
    8891                                                retval.append( rootNode );
    8992                                        }
    90                                         currentListItem = rootNode.append( item.element );
     93                                        currentListItem = rootNode.append( item.element.clone( false, true ) );
     94                                        for ( var i = 0 ; i < item.contents.length ; i++ )
     95                                                currentListItem.append( item.contents[i].clone( true, true ) );
    9196                                        currentIndex++;
    9297                                }
    9398                                else if ( item.indent == Math.max( indentLevel, 0 ) + 1 )
     
    100105                                {
    101106                                        currentListItem;
    102107                                        if ( listNodeNames[ item.grandparent.getName() ] )
    103                                                 currentListItem = item.element;
     108                                                currentListItem = item.element.clone( false, true );
    104109                                        else
    105110                                        {
    106111                                                // Create completely new blocks here, attributes are dropped.
     
    110115                                                        currentListItem = new CKEDITOR.dom.documentFragment( doc );
    111116                                        }
    112117
    113                                         item.element.moveChildren( currentListItem );
     118                                        for ( i = 0 ; i < item.contents.length ; i++ )
     119                                                currentListItem.append( item.contents[i].clone( true, true ) );
    114120
    115121                                        if ( currentListItem.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT
    116122                                                 && currentIndex != listArray.length - 1 )
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy