Ticket #4950: 4950.patch
File 4950.patch, 3.2 KB (added by , 14 years ago) |
---|
-
_source/plugins/list/plugin.js
29 29 if ( !baseArray ) 30 30 baseArray = []; 31 31 32 // Iterate over all list items to get their contentsand look for inner lists.32 // Iterate over all list items to and look for inner lists. 33 33 for ( var i = 0, count = listNode.getChildCount() ; i < count ; i++ ) 34 34 { 35 35 var listItem = listNode.getChild( i ); … … 37 37 // It may be a text node or some funny stuff. 38 38 if ( listItem.$.nodeName.toLowerCase() != 'li' ) 39 39 continue; 40 var itemObj = { 'parent' : listNode, indent : baseIndentLevel, contents : [] }; 40 41 var itemObj = { 'parent' : listNode, indent : baseIndentLevel, element : listItem }; 41 42 if ( !grandparentNode ) 42 43 { 43 44 itemObj.grandparent = listNode.getParent(); … … 51 52 CKEDITOR.dom.element.setMarker( database, listItem, 'listarray_index', baseArray.length ); 52 53 baseArray.push( itemObj ); 53 54 54 for ( var j = 0, itemChildCount = listItem.getChildCount() 55 for ( var j = 0, itemChildCount = listItem.getChildCount(), child; j < itemChildCount ; j++ ) 55 56 { 56 var child = listItem.getChild( j ); 57 child = listItem.getChild( j ); 58 // Push inner list items with +1 indentation in the correct order. 57 59 if ( child.type == CKEDITOR.NODE_ELEMENT && listNodeNames[ child.getName() ] ) 58 // Note the recursion here, it pushes inner list items with59 // +1 indentation in the correct order.60 60 CKEDITOR.plugins.list.listToArray( child, database, baseArray, baseIndentLevel + 1, itemObj.grandparent ); 61 else62 itemObj.contents.push( child );63 61 } 64 62 } 65 63 return baseArray; … … 89 87 rootNode = listArray[ currentIndex ].parent.clone( false, true ); 90 88 retval.append( rootNode ); 91 89 } 92 currentListItem = rootNode.append( doc.createElement( 'li' ) ); 93 for ( var i = 0 ; i < item.contents.length ; i++ ) 94 currentListItem.append( item.contents[i].clone( true, true ) ); 90 currentListItem = rootNode.append( item.element ); 95 91 currentIndex++; 96 92 } 97 93 else if ( item.indent == Math.max( indentLevel, 0 ) + 1 ) … … 104 100 { 105 101 currentListItem; 106 102 if ( listNodeNames[ item.grandparent.getName() ] ) 107 currentListItem = doc.createElement( 'li' );103 currentListItem = item.element; 108 104 else 109 105 { 106 // Create completely new blocks here, attributes are dropped. 110 107 if ( paragraphMode != CKEDITOR.ENTER_BR && item.grandparent.getName() != 'td' ) 111 108 currentListItem = doc.createElement( paragraphName ); 112 109 else 113 110 currentListItem = new CKEDITOR.dom.documentFragment( doc ); 114 111 } 115 112 116 for ( i = 0 ; i < item.contents.length ; i++ ) 117 currentListItem.append( item.contents[i].clone( true, true ) ); 113 item.element.moveChildren( currentListItem ); 118 114 119 115 if ( currentListItem.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT 120 116 && currentIndex != listArray.length - 1 )