Changeset 870
- Timestamp:
- 2007-09-24 16:13:40 (14 months ago)
- Location:
- FCKeditor/trunk/editor/_source
- Files:
-
- 3 modified
-
commandclasses/fckindentcommands.js (modified) (1 diff)
-
commandclasses/fcklistcommands.js (modified) (5 diffs)
-
internals/fckdomtools.js (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
FCKeditor/trunk/editor/_source/commandclasses/fckindentcommands.js
r869 r870 272 272 273 273 // Clean up the markers. 274 FCKDomTools.Clear ElementMarkers( markerObj ) ;274 FCKDomTools.ClearAllMarkers( markerObj ) ; 275 275 } 276 276 } ; -
FCKeditor/trunk/editor/_source/commandclasses/fcklistcommands.js
r869 r870 156 156 157 157 // For all new lists created, merge adjacent, same type lists. 158 while ( listsCreated.length > 0)159 { 160 var listNode = listsCreated .shift();158 for ( var i = 0 ; i < listsCreated.length ; i++ ) 159 { 160 var listNode = listsCreated[i] ; 161 161 var stopFlag = false ; 162 162 var currentNode = listNode ; … … 164 164 { 165 165 currentNode = currentNode.nextSibling ; 166 if ( currentNode && currentNode.nodeType == 3 && currentNode.nodeValue.search( /^[\n\r\t ]*$/ ) == 0 )166 if ( currentNode && currentNode.nodeType == 3 && currentNode.nodeValue.search( /^[\n\r\t ]*$/ ) == 0 ) 167 167 continue ; 168 168 stopFlag = true ; … … 175 175 listNode.appendChild( currentNode.removeChild( currentNode.firstChild ) ) ; 176 176 } 177 178 stopFlag = false ; 179 currentNode = listNode ; 180 while ( ! stopFlag ) 181 { 182 currentNode = currentNode.previousSibling ; 183 if ( currentNode && currentNode.nodeType == 3 && currentNode.nodeValue.search( /^[\n\r\t ]*$/ ) == 0 ) 184 continue ; 185 stopFlag = true ; 186 } 187 if ( currentNode && currentNode.nodeName.IEquals( this.TagName ) ) 188 { 189 currentNode.parentNode.removeChild( currentNode ) ; 190 while ( currentNode.lastChild ) 191 listNode.insertBefore( currentNode.removeChild( currentNode.lastChild ), 192 listNode.firstChild ) ; 193 } 177 194 } 178 195 179 196 // Clean up, restore selection and update toolbar button states. 180 FCKDomTools.Clear ElementMarkers( markerObj ) ;197 FCKDomTools.ClearAllMarkers( markerObj ) ; 181 198 range.MoveToBookmark( bookmark ) ; 182 199 range.Select() ; … … 208 225 listArray[listIndex].parent = fakeParent ; 209 226 } 210 var newList = FCKDomTools.ArrayToList( listArray ) ;227 var newList = FCKDomTools.ArrayToList( listArray, markerObj ) ; 211 228 if ( newList.listNode.lastChild.nodeName.IEquals( this.TagName) ) 212 229 listsCreated.push( newList.listNode.lastChild ) ; … … 316 333 } 317 334 318 var newList = FCKDomTools.ArrayToList( listArray ) ;335 var newList = FCKDomTools.ArrayToList( listArray, markerObj ) ; 319 336 // If groupObj.root is the last element in its parent, or its nextSibling is a <br>, then we should 320 337 // not add a <br> after the final item. So, check for the cases and trim the <br>. -
FCKeditor/trunk/editor/_source/internals/fckdomtools.js
r869 r870 585 585 }, 586 586 587 SetElementMarker : function ( mark Obj, element, attrName, value)587 SetElementMarker : function ( markerObj, element, attrName, value) 588 588 { 589 589 var id = String( parseInt( Math.random() * 0xfffffff, 10 ) ) ; 590 590 element._FCKMarkerId = id ; 591 591 element[attrName] = value ; 592 if ( ! markObj[id] ) 593 markObj[id] = { 'element' : element, 'markers' : {} } ; 594 markObj[id]['markers'][attrName] = value ; 595 }, 596 597 ClearElementMarkers : function( markObj ) 598 { 599 for ( var i in markObj ) 600 { 601 var element = markObj[i]['element'] ; 602 this.ClearElementJSProperty( element, '_FCKMarkerId' ) ; 603 for ( var j in markObj[i]['markers'] ) 604 this.ClearElementJSProperty( element, j ) ; 605 delete markObj[i] ; 606 } 592 if ( ! markerObj[id] ) 593 markerObj[id] = { 'element' : element, 'markers' : {} } ; 594 markerObj[id]['markers'][attrName] = value ; 595 }, 596 597 ClearElementMarkers : function( markerObj, element, clearMarkerObj ) 598 { 599 var id = element._FCKMarkerId ; 600 if ( ! id ) 601 return ; 602 this.ClearElementJSProperty( element, '_FCKMarkerId' ) ; 603 for ( var j in markerObj[id]['markers'] ) 604 this.ClearElementJSProperty( element, j ) ; 605 if ( clearMarkerObj ) 606 delete markerObj[id] ; 607 }, 608 609 ClearAllMarkers : function( markerObj ) 610 { 611 for ( var i in markerObj ) 612 this.ClearElementMarkers( markerObj, markerObj[i]['element'], true ) ; 607 613 }, 608 614 … … 652 658 653 659 // Convert our internal representation of a list back to a DOM forest. 654 ArrayToList : function( listArray, baseIndex )660 ArrayToList : function( listArray, markerObj, baseIndex ) 655 661 { 656 662 if ( baseIndex == undefined ) … … 682 688 else if ( item.indent == Math.max( indentLevel, 0 ) + 1 ) 683 689 { 684 var listData = this.ArrayToList( listArray, currentIndex ) ;690 var listData = this.ArrayToList( listArray, null, currentIndex ) ; 685 691 currentListItem.appendChild( listData.listNode ) ; 686 692 currentIndex = listData.nextIndex ; … … 715 721 } 716 722 } 723 724 // Clear marker attributes for the new list tree made of cloned nodes, if any. 725 if ( markerObj ) 726 { 727 var currentNode = retval.firstChild ; 728 while ( currentNode ) 729 { 730 if ( currentNode.nodeType == 1 ) 731 this.ClearElementMarkers( markerObj, currentNode ) ; 732 currentNode = this.GetNextSourceNode( currentNode ) ; 733 } 734 } 735 717 736 return { 'listNode' : retval, 'nextIndex' : currentIndex } ; 718 737 },