Changeset 2187
- Timestamp:
- 07/07/08 09:52:45 (5 years ago)
- Location:
- FCKeditor/branches/features/div_container/editor
- Files:
-
- 2 edited
-
_source/internals/fckdomtools.js (modified) (1 diff)
-
dialog/fck_div.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
FCKeditor/branches/features/div_container/editor/_source/internals/fckdomtools.js
r2096 r2187 697 697 SetElementMarker : function ( markerObj, element, attrName, value) 698 698 { 699 var id = String( parseInt( Math.random() * 0xfffffff , 10 ) ) ;699 var id = String( parseInt( Math.random() * 0xffffffff, 10 ) ) ; 700 700 element._FCKMarkerId = id ; 701 701 element[attrName] = value ; -
FCKeditor/branches/features/div_container/editor/dialog/fck_div.html
r2186 r2187 193 193 var block ; 194 194 195 if ( true ) 196 { 197 iterator.EnforceRealBlocks = true ; 198 var paragraphs = [] ; 199 while ( ( block = iterator.GetNextParagraph() ) ) 200 paragraphs.push( block ) ; 201 202 // If no paragraphs, create one from the current selection position. 203 if ( paragraphs.length < 1 ) 195 iterator.EnforceRealBlocks = true ; 196 var paragraphs = [] ; 197 var groups = [] ; 198 var lastBlockLimit = null ; 199 while ( ( block = iterator.GetNextParagraph() ) ) 200 { 201 var elementPath = new FCKElementPath( block ) ; 202 if ( elementPath.BlockLimit != lastBlockLimit ) 204 203 { 205 para = range.Window.document.createElement( FCKConfig.EnterMode.IEquals( 'p' ) ? 'p' : 'div' ) ; 206 range.InsertNode( para ) ; 207 para.appendChild( range.Window.document.createTextNode( '\ufeff' ) ) ; 208 range.MoveToBookmark( bookmark ) ; 209 range.MoveToNodeContents( para ) ; 210 range.Collapse( true ) ; 211 bookmark = range.CreateBookmark() ; 212 paragraphs.push( para ) ; 204 groups.push( [] ) ; 205 lastBlockLimit = elementPath.BlockLimit ; 213 206 } 214 215 // Make sure all paragraphs have the same parent. 216 var commonParent = paragraphs[0].parentNode ; 217 var tmp = [] ; 218 for ( var i = 0 ; i < paragraphs.length ; i++ ) 219 { 220 block = paragraphs[i] ; 221 commonParent = FCKDomTools.GetCommonParents( block.parentNode, commonParent ).pop() ; 222 } 223 var lastBlock = null ; 224 while ( paragraphs.length > 0 ) 225 { 226 block = paragraphs.shift() ; 227 while ( block.parentNode != commonParent ) 228 block = block.parentNode ; 229 if ( block != lastBlock ) 230 tmp.push( block ) ; 231 lastBlock = block ; 232 } 233 234 // If any of the selected blocks is a $tagName, remove it to prevent nested $tagNames. 235 while ( tmp.length > 0 ) 236 { 237 block = tmp.shift() ; 238 if ( block.nodeName.IEquals( 'div' ) ) 239 { 240 var docFrag = oEditor.FCKTools.GetElementDocument( block ).createDocumentFragment() ; 241 while ( block.firstChild ) 242 { 243 docFrag.appendChild( block.removeChild( block.firstChild ) ) ; 244 paragraphs.push( docFrag.lastChild ) ; 245 } 246 block.parentNode.replaceChild( docFrag, block ) ; 247 } 248 else 249 paragraphs.push( block ) ; 250 } 251 252 // Now we have all the blocks to be included in a new $tagName node. 253 bqBlock = range.Window.document.createElement( 'div' ) ; 254 commonParent.insertBefore( bqBlock, paragraphs[0] ) ; 255 while ( paragraphs.length > 0 ) 256 { 257 block = paragraphs.shift() ; 258 bqBlock.appendChild( block ) ; 259 } 207 groups[groups.length - 1].push( block ) ; 208 } 209 210 for ( var i = 0 ; i < groups.length ; i++ ) 211 { 212 var divNode = FCK.EditorDocument.createElement( 'div' ) ; 213 groups[i][0].parentNode.insertBefore( divNode, groups[i][0] ) ; 214 for ( var j = 0 ; j < groups[i].length ; j++ ) 215 FCKDomTools.MoveNode( groups[i][j], divNode ) ; 216 bqBlock = divNode ; 260 217 } 261 218
Note: See TracChangeset
for help on using the changeset viewer.
