Ticket #6159: 6159_2.patch

File 6159_2.patch, 2.0 KB (added by Garry Yao, 9 years ago)
  • _source/plugins/list/plugin.js

     
    3434                        {
    3535                                var listItem = listNode.getChild( i );
    3636
    37                                 // It may be a text node or some funny stuff.
    38                                 if ( listItem.$.nodeName.toLowerCase() != 'li' )
    39                                         continue;
     37                        // It may be a text node or some funny stuff.
     38                        if (listItem.$.nodeName.toLowerCase() != 'li')
     39                        {
     40                                // The item might be probably a malformed list. (#6159)
     41                                if ( listItem.getName() in CKEDITOR.dtd.$list )
     42                                {
     43                                        var previousItemObj = baseArray[ baseArray.length - 1 ];
     44                                        if ( previousItemObj )
     45                                                previousItemObj.contents.push( listItem );
     46                                }
     47                                continue;
     48                        }
    4049
    4150                                var itemObj = { 'parent' : listNode, indent : baseIndentLevel, element : listItem, contents : [] };
    4251                                if ( !grandparentNode )
     
    5564                                for ( var j = 0, itemChildCount = listItem.getChildCount(), child; j < itemChildCount ; j++ )
    5665                                {
    5766                                        child = listItem.getChild( j );
    58                                         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.
    61                                                 CKEDITOR.plugins.list.listToArray( child, database, baseArray, baseIndentLevel + 1, itemObj.grandparent );
    62                                         else
    63                                                 itemObj.contents.push( child );
     67                    if (child.type == CKEDITOR.NODE_ELEMENT && listNodeNames[ child.getName() ])
     68                    // Note the recursion here, it pushes inner list items with
     69                    // +1 indentation in the correct order.
     70                    {
     71                        CKEDITOR.plugins.list.listToArray(child, database, baseArray, baseIndentLevel + 1, itemObj.grandparent);
     72                    }
     73                    else
     74                        itemObj.contents.push(child);
    6475                                }
    6576                        }
    6677                        return baseArray;
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy