Ticket #243: block_split.patch
File block_split.patch, 32.9 KB (added by , 16 years ago) |
---|
-
editor/_source/classes/fckdomrange.js
180 180 oTestRange.SetEnd( oTestRange.EndBlock || oTestRange.EndBlockLimit, 2 ) ; 181 181 182 182 var bIsEndOfBlock = oTestRange.CheckIsCollapsed() ; 183 183 184 184 if ( !bIsEndOfBlock ) 185 185 { 186 186 // Inserts the contents of the range in a div tag. 187 187 var eToolDiv = this.Window.document.createElement( 'div' ) ; 188 188 oTestRange._Range.cloneContents().AppendTo( eToolDiv ) ; 189 189 FCKDomTools.TrimNode( eToolDiv, true ) ; 190 190 191 191 // Find out if we are in an empty tree of inline elements, like <b><i><span></span></i></b> 192 192 bIsEndOfBlock = true ; 193 193 var eLastChild = eToolDiv ; … … 205 205 } 206 206 } 207 207 } 208 208 209 209 oTestRange.Release() ; 210 210 211 211 if ( refreshSelection ) … … 272 272 } 273 273 else 274 274 this.Collapse( true ) ; 275 276 this._UpdateElementInfo() ; 275 277 }, 276 278 279 MoveToPosition : function( targetElement, position ) 280 { 281 this.SetStart( targetElement, position ) ; 282 this.Collapse( true ) ; 283 }, 284 277 285 /* 278 286 * Moves the position of the start boundary of the range to a specific position 279 287 * relatively to a element. … … 441 449 } 442 450 }, 443 451 452 SplitBlock : function() 453 { 454 if ( !this._Range ) 455 this.MoveToSelection() ; 456 457 // The selection boundaries must be in the same "block limit" element. 458 if ( this.StartBlockLimit == this.EndBlockLimit ) 459 { 460 // Get the current blocks. 461 var eStartBlock = this.StartBlock ; 462 var eEndBlock = this.EndBlock ; 463 464 if ( FCKConfig.EnterMode != 'br' ) 465 { 466 if ( !eStartBlock ) 467 { 468 eStartBlock = this._FixBlock( true ) ; 469 eEndBlock = this.EndBlock ; // _FixBlock may have fixed the EndBlock too. 470 } 471 472 if ( !eEndBlock ) 473 eEndBlock = this._FixBlock( false ) ; 474 } 475 476 var bIsStartOfBlock = ( eStartBlock != null && this.CheckStartOfBlock() ) ; 477 var bIsEndOfBlock = ( eEndBlock != null && this.CheckEndOfBlock() ) ; 478 479 // Delete the current selection. 480 if ( !this.CheckIsEmpty() ) 481 this.DeleteContents() ; 482 483 if ( eStartBlock && eEndBlock && eStartBlock == eEndBlock ) 484 { 485 if ( bIsStartOfBlock ) 486 { 487 this.MoveToPosition( eStartBlock, 3 ) ; 488 eStartBlock = null ; 489 } 490 else if ( bIsEndOfBlock ) 491 { 492 this.MoveToPosition( eEndBlock, 4 ) ; 493 eEndBlock = null ; 494 } 495 else 496 { 497 // Extract the contents of the block from the selection point to the end of its contents. 498 this.SetEnd( eStartBlock, 2 ) ; 499 var eDocFrag = this.ExtractContents() ; 500 FCKDomTools.TrimNode( eDocFrag.RootNode ) ; 501 502 // Duplicate the block element after it. 503 eEndBlock = eStartBlock.cloneNode( false ) ; 504 505 // Place the extracted contents in the duplicated block. 506 eDocFrag.AppendTo( eEndBlock ) ; 507 508 FCKDomTools.InsertAfterNode( eStartBlock, eEndBlock ) ; 509 510 this.MoveToPosition( eStartBlock, 4 ) ; 511 } 512 } 513 514 if ( FCKBrowserInfo.IsGecko ) 515 { 516 // In Gecko, the last child node must be a bogus <br>. 517 FCKTools.AppendBogusBr( eStartBlock ) ; 518 FCKTools.AppendBogusBr( eEndBlock ) ; 519 } 520 521 return { 522 PreviousBlock : eStartBlock, 523 NextBlock : eEndBlock, 524 WasStartOfBlock : bIsStartOfBlock, 525 WasEndOfBlock : bIsEndOfBlock 526 } ; 527 } 528 529 return null ; 530 }, 531 532 // Transform a block without a block tag in a valid block (orphan text in the body or td, usually). 533 _FixBlock : function( isStart ) 534 { 535 // Bookmark the range so we can restore it later. 536 var oBookmark = this.CreateBookmark() ; 537 538 // Collapse the range to the requested ending boundary. 539 this.Collapse( isStart ) ; 540 541 // Expands it to the block contents. 542 this.Expand( 'block_contents' ) ; 543 544 // Create the fixed block. 545 var oFixedBlock = this.Window.document.createElement( FCKConfig.EnterMode ) ; 546 547 // Move the contents of the temporary range to the fixed block. 548 this.ExtractContents().AppendTo( oFixedBlock ) ; 549 FCKDomTools.TrimNode( oFixedBlock ) ; 550 551 // Insert the fixed block into the DOM. 552 this.InsertNode( oFixedBlock ) ; 553 554 // Move the range back to the bookmarked place. 555 this.MoveToBookmark( oBookmark ) ; 556 557 return oFixedBlock ; 558 }, 559 444 560 Release : function( preserveWindow ) 445 561 { 446 562 if ( !preserveWindow ) -
editor/_source/classes/fckenterkey.js
202 202 this._OutdentWithSelection( currentBlock, range ) ; 203 203 return true ; 204 204 } 205 205 206 206 // Take a reference to the parent for post processing cleanup. 207 207 var oCurrentParent = currentBlock.parentNode ; 208 208 … … 284 284 // Get the current selection. 285 285 var oRange = range || new FCKDomRange( this.Window ) ; 286 286 287 // If we don't have a range, move it to the selection. 288 if ( !range ) 289 oRange.MoveToSelection() ; 287 var oSplitInfo = oRange.SplitBlock() ; 290 288 291 // The selection boundaries must be in the same "block limit" element. 292 if ( oRange.StartBlockLimit == oRange.EndBlockLimit ) 289 if ( oSplitInfo ) 293 290 { 294 // If the StartBlock or EndBlock are not available (for text without a295 // block tag), we must fix them, by moving the text to a block.296 if ( !oRange.StartBlock )297 this._FixBlock( oRange, true, blockTag ) ;298 299 if ( !oRange.EndBlock )300 this._FixBlock( oRange, false, blockTag ) ;301 302 291 // Get the current blocks. 303 var e StartBlock = oRange.StartBlock ;304 var e EndBlock = oRange.EndBlock ;292 var ePreviousBlock = oSplitInfo.PreviousBlock ; 293 var eNextBlock = oSplitInfo.NextBlock ; 305 294 306 // Delete the current selection. 307 if ( !oRange.CheckIsEmpty() ) 308 oRange.DeleteContents() ; 295 var bIsStartOfBlock = oSplitInfo.WasStartOfBlock ; 296 var bIsEndOfBlock = oSplitInfo.WasEndOfBlock ; 309 297 310 // If the selection boundaries are in the same block element 311 if ( eStartBlock == eEndBlock ) 298 // If we have both the previous and next blocks, it means that the 299 // boundaries were on separated blocks, or none of them where on the 300 // block limits (start/end). 301 if ( !oSplitInfo.WasStartOfBlock && !oSplitInfo.WasEndOfBlock ) 312 302 { 303 // Move the selection to the end block. 304 if ( eNextBlock ) 305 oRange.MoveToElementEditStart( eNextBlock ) ; 306 } 307 else 308 { 309 if ( bIsStartOfBlock && bIsEndOfBlock && eNextBlock.tagName.toUpperCase() == 'LI' ) 310 { 311 oRange.MoveToElementStart( eNextBlock ) ; 312 this._OutdentWithSelection( eNextBlock, oRange ) ; 313 oRange.Release() ; 314 return true ; 315 } 316 313 317 var eNewBlock ; 314 318 315 var bIsStartOfBlock = oRange.CheckStartOfBlock() ; 316 var bIsEndOfBlock = oRange.CheckEndOfBlock() ; 317 318 if ( bIsStartOfBlock && !bIsEndOfBlock ) 319 if ( ePreviousBlock ) 319 320 { 320 eNewBlock = eStartBlock.cloneNode(false) ;321 var sPreviousBlockTag = ePreviousBlock.tagName.toUpperCase() ; 321 322 322 if ( FCKBrowserInfo.IsGeckoLike ) 323 eNewBlock.innerHTML = GECKO_BOGUS ; 324 325 // Place the new block before the current block element. 326 eStartBlock.parentNode.insertBefore( eNewBlock, eStartBlock ) ; 327 328 // This is tricky, but to make the new block visible correctly 329 // we must select it. 330 if ( FCKBrowserInfo.IsIE ) 323 // If is a header tag, or we are in a Shift+Enter (#77), 324 // create a new block element. 325 if ( this._HasShift || (/^H[1-6]$/).test( sPreviousBlockTag ) ) 326 eNewBlock = this.Window.document.createElement( blockTag ) ; 327 else 331 328 { 332 // Move the selection to the new block. 333 oRange.MoveToNodeContents( eNewBlock ) ; 334 335 oRange.Select() ; 329 // Otherwise, duplicate the previous block. 330 eNewBlock = ePreviousBlock.cloneNode( false ) ; 331 this._RecreateEndingTree( ePreviousBlock, eNewBlock ) ; 336 332 } 337 338 // Move the selection to the new block.339 oRange.MoveToElementEditStart( eStartBlock ) ;340 333 } 341 else 334 else if ( eNextBlock ) 342 335 { 343 // Check if the selection is at the end of the block.344 if ( bIsEndOfBlock )345 {346 var sStartBlockTag = eStartBlock.tagName.toUpperCase() ;336 eNewBlock = eNextBlock.cloneNode( false ) ; 337 } 338 else 339 eNewBlock = this.Window.document.createElement( blockTag ) ; 347 340 348 // If the entire block is selected, and we are in a LI, let's decrease its indentation. 349 if ( bIsStartOfBlock && sStartBlockTag == 'LI' ) 350 { 351 this._OutdentWithSelection( eStartBlock, oRange ) ; 352 oRange.Release() ; 353 return true ; 354 } 355 else 356 { 357 // If is a header tag, or we are in a Shift+Enter (#77), 358 // create a new block element. 359 if ( (/^H[1-6]$/).test( sStartBlockTag ) || this._HasShift ) 360 eNewBlock = this.Window.document.createElement( blockTag ) ; 361 // Otherwise, duplicate the current block. 362 else 363 { 364 eNewBlock = eStartBlock.cloneNode(false) ; 365 this._RecreateEndingTree( eStartBlock, eNewBlock ) ; 366 } 341 if ( FCKBrowserInfo.IsGeckoLike ) 342 eNewBlock.innerHTML = GECKO_BOGUS ; 367 343 368 if ( FCKBrowserInfo.IsGeckoLike ) 369 { 370 eNewBlock.innerHTML = GECKO_BOGUS ; 344 oRange.InsertNode( eNewBlock ) ; 371 345 372 // If the entire block is selected, let's add a bogus in the start block. 373 if ( bIsStartOfBlock ) 374 eStartBlock.innerHTML = GECKO_BOGUS ; 375 } 376 } 377 } 378 else 379 { 380 // Extract the contents of the block from the selection point to the end of its contents. 381 oRange.SetEnd( eStartBlock, 2 ) ; 382 var eDocFrag = oRange.ExtractContents() ; 346 // This is tricky, but to make the new block visible correctly 347 // we must select it. 348 if ( FCKBrowserInfo.IsIE ) 349 { 350 // Move the selection to the new block. 351 oRange.MoveToNodeContents( eNewBlock ) ; 352 oRange.Select() ; 353 } 383 354 384 // Duplicate the block element after it. 385 eNewBlock = eStartBlock.cloneNode(false) ; 355 oRange.MoveToElementEditStart( bIsStartOfBlock ? eNextBlock : eNewBlock ) ; 386 356 387 // It could be that we are in a LI with a child UL/OL. Insert a bogus to give us space to type. 388 FCKDomTools.TrimNode( eDocFrag.RootNode ) ; 389 if ( eDocFrag.RootNode.firstChild.nodeType == 1 && eDocFrag.RootNode.firstChild.tagName.toUpperCase().Equals( 'UL', 'OL' ) ) 390 eNewBlock.innerHTML = GECKO_BOGUS ; 391 392 // Place the extracted contents in the duplicated block. 393 eDocFrag.AppendTo( eNewBlock ) ; 394 395 if ( FCKBrowserInfo.IsGecko ) 396 { 397 // In Gecko, the last child node must be a bogus <br>. 398 this._AppendBogusBr( eStartBlock ) ; 399 this._AppendBogusBr( eNewBlock ) ; 400 } 401 } 402 403 if ( eNewBlock ) 404 { 405 FCKDomTools.InsertAfterNode( eStartBlock, eNewBlock ) ; 406 407 // Move the selection to the new block. 408 oRange.MoveToElementEditStart( eNewBlock ) ; 409 410 if ( FCKBrowserInfo.IsGecko ) 411 eNewBlock.scrollIntoView( false ) ; 412 } 413 } 357 if ( FCKBrowserInfo.IsGecko ) 358 eNewBlock.scrollIntoView( false ) ; 414 359 } 415 else416 {417 // Move the selection to the end block.418 oRange.MoveToElementEditStart( eEndBlock ) ;419 }420 360 421 361 oRange.Select() ; 422 362 } … … 454 394 // If we are at the end of a header block. 455 395 if ( !bHasShift && bIsEndOfBlock && (/^H[1-6]$/).test( sStartBlockTag ) ) 456 396 { 457 FCKDebug.Output( 'BR - Header' ) ;458 459 397 // Insert a BR after the current paragraph. 460 398 FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createElement( 'br' ) ) ; 461 399 … … 468 406 } 469 407 else 470 408 { 471 FCKDebug.Output( 'BR - No Header' ) ;472 473 409 var eBr = this.Window.document.createElement( 'br' ) ; 474 410 475 411 oRange.InsertNode( eBr ) ; … … 480 416 481 417 // If we are at the end of a block, we must be sure the bogus node is available in that block. 482 418 if ( bIsEndOfBlock && FCKBrowserInfo.IsGecko ) 483 this._AppendBogusBr( eBr.parentNode ) ;419 FCKTools.AppendBogusBr( eBr.parentNode ) ; 484 420 485 421 if ( FCKBrowserInfo.IsIE ) 486 422 oRange.SetStart( eBr, 4 ) ; … … 501 437 return true ; 502 438 } 503 439 504 // Transform a block without a block tag in a valid block (orphan text in the body or td, usually).505 FCKEnterKey.prototype._FixBlock = function( range, isStart, blockTag )506 {507 // Bookmark the range so we can restore it later.508 var oBookmark = range.CreateBookmark() ;509 510 // Collapse the range to the requested ending boundary.511 range.Collapse( isStart ) ;512 513 // Expands it to the block contents.514 range.Expand( 'block_contents' ) ;515 516 // Create the fixed block.517 var oFixedBlock = this.Window.document.createElement( blockTag ) ;518 519 // Move the contents of the temporary range to the fixed block.520 range.ExtractContents().AppendTo( oFixedBlock ) ;521 FCKDomTools.TrimNode( oFixedBlock ) ;522 523 // Insert the fixed block into the DOM.524 range.InsertNode( oFixedBlock ) ;525 526 // Move the range back to the bookmarked place.527 range.MoveToBookmark( oBookmark ) ;528 }529 530 // Appends a bogus <br> at the end of the element, if not yet available.531 FCKEnterKey.prototype._AppendBogusBr = function( element )532 {533 var eLastChild = element.getElementsByTagName('br') ;534 535 if ( eLastChild )536 eLastChild = eLastChild[ eLastChild.legth - 1 ] ;537 538 if ( !eLastChild || eLastChild.getAttribute( 'type', 2 ) != '_moz' )539 element.appendChild( FCKTools.CreateBogusBR( this.Window.document ) ) ;540 }541 542 440 // Recreate the elements tree at the end of the source block, at the beginning 543 // of the target block. Eg.: 441 // of the target block. Eg.: 544 442 // If source = <p><u>Some</u> sample <b><i>text</i></b></p> then target = <p><b><i></i></b></p> 545 443 // If source = <p><u>Some</u> sample text</p> then target = <p></p> 546 444 FCKEnterKey.prototype._RecreateEndingTree = function( source, target ) … … 555 453 var oBookmark = range.CreateBookmark() ; 556 454 557 455 FCKListHandler.OutdentListItem( li ) ; 558 456 559 457 range.MoveToBookmark( oBookmark ) ; 560 458 range.Select() ; 561 459 } 460 No newline at end of file -
editor/_source/commandclasses/fck_othercommands.js
279 279 e.innerHTML = '<span style="DISPLAY:none"> </span>' ; 280 280 281 281 var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', e ) ; 282 oFakeImage =FCK.InsertElement( oFakeImage ) ;282 FCK.InsertElement( oFakeImage ) ; 283 283 } 284 284 285 285 FCKPageBreakCommand.prototype.GetState = function() … … 378 378 { 379 379 return FCK.GetNamedCommandState( 'Paste' ) ; 380 380 } 381 } ; 382 383 // FCKRuleCommand 384 var FCKRuleCommand = function() 385 { 386 this.Name = 'Paste' ; 387 } 388 389 FCKRuleCommand.prototype = 390 { 391 Execute : function() 392 { 393 FCK.InsertElement( 'hr' ) ; 394 }, 395 396 GetState : function() 397 { 398 return FCK.GetNamedCommandState( 'InsertHorizotalRule' ) ; 399 } 381 400 } ; 401 No newline at end of file -
editor/_source/internals/fck.js
88 88 89 89 this.EditingArea = new FCKEditingArea( document.getElementById( 'xEditingArea' ) ) ; 90 90 this.EditingArea.FFSpellChecker = false ; 91 91 92 92 // Final setup of the lists lib. 93 93 FCKListsLib.Setup() ; 94 94 … … 314 314 if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) 315 315 { 316 316 html = FCKConfig.ProtectedSource.Protect( html ) ; 317 317 318 318 // Fix for invalid self-closing tags (see #152). 319 319 html = html.replace( FCKRegexLib.InvalidSelfCloseTags, '$1></$2>' ) ; 320 320 321 321 html = FCK.ProtectEvents( html ) ; 322 322 html = FCK.ProtectUrls( html ) ; 323 323 html = FCK.ProtectTags( html ) ; … … 331 331 html = html.replace( FCKRegexLib.EmOpener, '<i$1' ) ; 332 332 html = html.replace( FCKRegexLib.EmCloser, '<\/i>' ) ; 333 333 } 334 334 335 335 this._ForceResetIsDirty = ( resetIsDirty === true ) ; 336 336 337 337 var sHtml = '' ; … … 429 429 430 430 // Removes the enter key handler. 431 431 FCK.EnterKeyHandler = null ; 432 432 433 433 if ( resetIsDirty ) 434 434 this.ResetIsDirty() ; 435 435 … … 569 569 FCK.EditMode = bIsWysiwyg ? FCK_EDITMODE_SOURCE : FCK_EDITMODE_WYSIWYG ; 570 570 571 571 FCK.SetHTML( sHtml, !bIsDirty ) ; 572 572 573 573 // Set the Focus. 574 574 FCK.Focus() ; 575 575 … … 579 579 return true ; 580 580 }, 581 581 582 CreateElement : function( tag)582 InsertElement : function( element ) 583 583 { 584 var e = FCK.EditorDocument.createElement( tag ) ; 585 return FCK.InsertElementAndGetIt( e ) ; 586 }, 584 // The parameter may be a string (element name), so transform it in an element. 585 if ( typeof element == 'string' ) 586 element = this.EditorDocument.createElement( element ) ; 587 588 var elementName = element.nodeName.toLowerCase() ; 587 589 588 InsertElementAndGetIt : function( e )589 {590 e.setAttribute( 'FCKTempLabel', 'true') ;590 // Create a range for the selection. V3 will have a new selection 591 // object that may internaly supply this feature. 592 var range = new FCKDomRange( this.EditorWindow ) ; 591 593 592 this.InsertElement( e ) ; 594 if ( FCKListsLib.BlockElements[ elementName ] != null ) 595 { 596 range.SplitBlock() ; 597 range.InsertNode( element ) ; 598 599 var next = FCKDomTools.GetNextSourceElement( element, false, null, [ 'hr','br','param','img','area','input' ] ) 593 600 594 var aEls = FCK.EditorDocument.getElementsByTagName( e.tagName ) ; 601 // Be sure that we have something after the new element, so we can move the cursor there. 602 if ( !next && FCKConfig.EnterMode != 'br') 603 { 604 next = this.EditorDocument.body.appendChild( this.EditorDocument.createElement( FCKConfig.EnterMode ) ) ; 605 606 if ( FCKBrowserInfo.IsGecko ) 607 next.innerHTML = GECKO_BOGUS ; 608 } 609 610 if ( FCKListsLib.EmptyElements[ elementName ] == null ) 611 range.MoveToElementEditStart( element ) ; 612 else if ( next ) 613 range.MoveToElementEditStart( next ) ; 614 else 615 range.MoveToPosition( element, 4 ) ; 595 616 596 for ( var i = 0 ; i < aEls.length ; i++ ) 597 { 598 if ( aEls[i].getAttribute( 'FCKTempLabel' ) ) 617 if ( FCKBrowserInfo.IsGecko ) 599 618 { 600 aEls[i].removeAttribute( 'FCKTempLabel' ) ; 601 return aEls[i] ; 619 if ( next ) 620 next.scrollIntoView( false ) ; 621 element.scrollIntoView( false ) ; 602 622 } 603 623 } 604 return null ; 624 else 625 { 626 // Delete the current selection and insert the node. 627 range.MoveToSelection() ; 628 range.DeleteContents() ; 629 range.InsertNode( element ) ; 630 631 // Move the selection right after the new element. 632 // DISCUSSION: Should we select the element instead? 633 range.SetStart( element, 4 ) ; 634 range.SetEnd( element, 4 ) ; 635 } 636 637 range.Select() ; 638 range.Release() ; 639 640 // REMOVE IT: The focus should not really be set here. It is up to the 641 // calling code to reset the focus if needed. 642 this.Focus() ; 643 644 return element ; 645 }, 646 647 _InsertBlockElement : function( blockElement ) 648 { 605 649 } 606 607 650 } ; 608 651 609 652 FCK.Events = new FCKEvents( FCK ) ; 653 610 654 // GetHTML is Deprecated : returns the same value as GetXHTML. 611 655 FCK.GetHTML = FCK.GetXHTML ; 612 656 657 // InsertElementAndGetIt and CreateElement are Deprecated : returns the same value as InsertElement. 658 FCK.InsertElementAndGetIt = FCK.CreateElement = FCK.InsertElement ; 659 613 660 // Replace all events attributes (like onclick). 614 661 function _FCK_ProtectEvents_ReplaceTags( tagMatch ) 615 662 { … … 643 690 644 691 // Listen for keystroke events. 645 692 FCK.KeystrokeHandler.AttachToElement( FCK.EditorDocument ) ; 646 693 647 694 if ( FCK._ForceResetIsDirty ) 648 695 FCK.ResetIsDirty() ; 649 696 650 697 // This is a tricky thing for IE. In some cases, even if the cursor is 651 698 // blinking in the editing, the keystroke handler doesn't catch keyboard 652 699 // events. We must activate the editing area to make it work. (#142). -
editor/_source/internals/fck_gecko.js
181 181 this.Focus() ; 182 182 } 183 183 184 FCK.InsertElement = function( element )185 {186 // Deletes the actual selection.187 var oSel = FCKSelection.Delete() ;188 189 // Gets the first available range.190 var oRange = oSel.getRangeAt(0) ;191 192 // Inserts the element in the range.193 oRange.insertNode( element ) ;194 195 // Set the cursor after the inserted fragment.196 FCKSelection.SelectNode( element ) ;197 FCKSelection.Collapse( false ) ;198 199 this.Focus() ;200 }201 202 184 FCK.PasteAsPlainText = function() 203 185 { 204 186 // TODO: Implement the "Paste as Plain Text" code. -
editor/_source/internals/fck_ie.js
310 310 FCK._PasteIsEnabled = true ; 311 311 } 312 312 313 FCK.InsertElement = function( element )314 {315 FCK.InsertHtml( element.outerHTML ) ;316 }317 318 313 FCK.GetClipboardHTML = function() 319 314 { 320 315 var oDiv = document.getElementById( '___FCKHiddenDiv' ) ; -
editor/_source/internals/fckcommands.js
69 69 case 'Save' : oCommand = new FCKSaveCommand() ; break ; 70 70 case 'NewPage' : oCommand = new FCKNewPageCommand() ; break ; 71 71 case 'PageBreak' : oCommand = new FCKPageBreakCommand() ; break ; 72 case 'Rule' : oCommand = new FCKRuleCommand() ; break ; 72 73 73 74 case 'TextColor' : oCommand = new FCKTextColorCommand('ForeColor') ; break ; 74 75 case 'BGColor' : oCommand = new FCKTextColorCommand('BackColor') ; break ; -
editor/_source/internals/fcklistslib.js
31 31 BlockElements : { address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 }, 32 32 33 33 // Block elements that may be filled with if empty. 34 NonEmptyBlockElements : { p:1,div:1, h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },34 NonEmptyBlockElements : { p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 }, 35 35 36 36 // Inline elements which MUST have child nodes. 37 37 InlineChildReqElements : { abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 }, -
editor/_source/internals/fcktoolbaritems.js
82 82 case 'Smiley' : oItem = new FCKToolbarButton( 'Smiley' , FCKLang.InsertSmileyLbl, FCKLang.InsertSmiley, null, false, true, 41 ) ; break ; 83 83 case 'PageBreak' : oItem = new FCKToolbarButton( 'PageBreak' , FCKLang.PageBreakLbl, FCKLang.PageBreak, null, false, true, 43 ) ; break ; 84 84 85 case 'Rule' : oItem = new FCKToolbarButton( ' InsertHorizontalRule', FCKLang.InsertLineLbl, FCKLang.InsertLine, null, false, true, 40 ) ; break ;85 case 'Rule' : oItem = new FCKToolbarButton( 'Rule' , FCKLang.InsertLineLbl, FCKLang.InsertLine, null, false, true, 40 ) ; break ; 86 86 87 87 case 'JustifyLeft' : oItem = new FCKToolbarButton( 'JustifyLeft' , FCKLang.LeftJustify, null, null, false, true, 30 ) ; break ; 88 88 case 'JustifyCenter' : oItem = new FCKToolbarButton( 'JustifyCenter' , FCKLang.CenterJustify, null, null, false, true, 31 ) ; break ; -
editor/_source/internals/fcktools.js
223 223 fCloneCreator.prototype = sourceObject ; 224 224 return new fCloneCreator ; 225 225 } 226 227 // Appends a bogus <br> at the end of the element, if not yet available. 228 FCKTools.AppendBogusBr = function( element ) 229 { 230 if ( !element ) 231 return ; 232 233 var eLastChild = element.getElementsByTagName('br') ; 234 235 if ( eLastChild ) 236 eLastChild = eLastChild[ eLastChild.legth - 1 ] ; 237 238 if ( !eLastChild || eLastChild.getAttribute( 'type', 2 ) != '_moz' ) 239 element.appendChild( this.CreateBogusBR( this.GetElementDocument( element ) ) ) ; 240 } 241 No newline at end of file -
editor/_source/internals/fckxhtml_ie.js
166 166 if ( htmlNode.name ) 167 167 FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ; 168 168 169 node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;169 node = FCKXHtml._AppendChildNodes( node, htmlNode, true ) ; 170 170 171 171 return node ; 172 172 } -
editor/dialog/fck_anchor.html
114 114 if ( !oAnchor ) 115 115 { 116 116 // Nothing was selected, so now just create a normal A 117 oAnchor = oEditor.FCK. CreateElement( 'a' ) ;117 oAnchor = oEditor.FCK.InsertElement( 'a' ) ; 118 118 } 119 119 else 120 120 { -
editor/dialog/fck_button.html
61 61 { 62 62 oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ; 63 63 oActiveEl.type = GetE('txtType').value ; 64 oActiveEl = oEditor.FCK.InsertElement AndGetIt( oActiveEl ) ;64 oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ; 65 65 } 66 66 67 67 oActiveEl.name = GetE('txtName').value ; -
editor/dialog/fck_checkbox.html
59 59 { 60 60 oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ; 61 61 oActiveEl.type = 'checkbox' ; 62 oActiveEl = oEditor.FCK.InsertElement AndGetIt( oActiveEl ) ;62 oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ; 63 63 } 64 64 65 65 if ( GetE('txtName').value.length > 0 ) -
editor/dialog/fck_flash/fck_flash.js
135 135 { 136 136 oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ; 137 137 oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ; 138 oFakeImage = FCK.InsertElement AndGetIt( oFakeImage ) ;138 oFakeImage = FCK.InsertElement( oFakeImage ) ; 139 139 } 140 140 else 141 141 oEditor.FCKUndo.SaveUndoStep() ; -
editor/dialog/fck_form.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 2 2 <!-- 3 3 * FCKeditor - The text editor for Internet - http://www.fckeditor.net 4 4 * Copyright (C) 2003-2007 Frederico Caldeira Knabben … … 57 57 { 58 58 if ( !oActiveEl ) 59 59 { 60 oActiveEl = oEditor.FCK.EditorDocument.createElement( 'FORM' ) ; 61 oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ; 62 oActiveEl.innerHTML = ' ' ; 60 oActiveEl = oEditor.FCK.InsertElement( 'form' ) ; 61 62 if ( oEditor.FCKBrowserInfo.IsGeckoLike ) 63 oActiveEl.innerHTML = GECKO_BOGUS ; 63 64 } 64 65 65 66 oActiveEl.name = GetE('txtName').value ; 66 SetAttribute( oActiveEl, 'action' 67 SetAttribute( oActiveEl, 'action', GetE('txtAction').value ) ; 67 68 oActiveEl.method = GetE('txtMethod').value ; 68 69 69 70 return true ; -
editor/dialog/fck_hiddenfield.html
79 79 { 80 80 oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oActiveEl ) ; 81 81 oFakeImage.setAttribute( '_fckinputhidden', 'true', 0 ) ; 82 oFakeImage = FCK.InsertElement AndGetIt( oFakeImage ) ;82 oFakeImage = FCK.InsertElement( oFakeImage ) ; 83 83 } 84 84 else 85 85 oEditor.FCKUndo.SaveUndoStep() ; -
editor/dialog/fck_image/fck_image.js
220 220 { 221 221 if ( bImageButton ) 222 222 { 223 oImage = FCK.EditorDocument.createElement( ' INPUT' ) ;223 oImage = FCK.EditorDocument.createElement( 'input' ) ; 224 224 oImage.type = 'image' ; 225 oImage = FCK.InsertElement AndGetIt( oImage ) ;225 oImage = FCK.InsertElement( oImage ) ; 226 226 } 227 227 else 228 oImage = FCK. CreateElement( 'IMG' ) ;228 oImage = FCK.InsertElement( 'img' ) ; 229 229 } 230 230 else 231 231 oEditor.FCKUndo.SaveUndoStep() ; -
editor/dialog/fck_link/fck_link.js
534 534 } 535 535 536 536 // Create a new (empty) anchor. 537 oLink = oEditor.FCK. CreateElement( 'a' ) ;537 oLink = oEditor.FCK.InsertElement( 'a' ) ; 538 538 } 539 539 540 540 oEditor.FCKUndo.SaveUndoStep() ; -
editor/dialog/fck_radiobutton.html
59 59 { 60 60 oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ; 61 61 oActiveEl.type = 'radio' ; 62 oActiveEl = oEditor.FCK.InsertElement AndGetIt( oActiveEl ) ;62 oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ; 63 63 } 64 64 65 65 if ( GetE('txtName').value.length > 0 ) -
editor/dialog/fck_select.html
78 78 sSize = '' ; 79 79 80 80 if ( !oActiveEl ) 81 { 82 oActiveEl = oEditor.FCK.EditorDocument.createElement( 'SELECT' ) ; 83 oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ; 84 } 81 oActiveEl = oEditor.FCK.InsertElement( 'select' ) ; 85 82 86 83 SetAttribute( oActiveEl, 'name' , GetE('txtName').value ) ; 87 84 SetAttribute( oActiveEl, 'size' , sSize ) ; -
editor/dialog/fck_smiley.html
45 45 46 46 function InsertSmiley( url ) 47 47 { 48 var oImg = oEditor.FCK. CreateElement( 'IMG' ) ;48 var oImg = oEditor.FCK.InsertElement( 'img' ) ; 49 49 oImg.src = url ; 50 50 oImg.setAttribute( '_fcksavedurl', url ) ; 51 51 -
editor/dialog/fck_textarea.html
56 56 function Ok() 57 57 { 58 58 if ( !oActiveEl ) 59 { 60 oActiveEl = oEditor.FCK.EditorDocument.createElement( 'TEXTAREA' ) ; 61 oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ; 62 } 59 oActiveEl = oEditor.FCK.InsertElement( 'textarea' ) ; 63 60 64 61 oActiveEl.name = GetE('txtName').value ; 65 62 SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ; -
editor/dialog/fck_textfield.html
76 76 { 77 77 oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ; 78 78 oActiveEl.type = GetE('txtType').value ; 79 oActiveEl = oEditor.FCK.InsertElement AndGetIt( oActiveEl ) ;79 oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ; 80 80 } 81 81 82 82 oActiveEl.name = GetE('txtName').value ; -
editor/plugins/placeholder/fckplugin.js
37 37 // Add a new placeholder at the actual selection. 38 38 FCKPlaceholders.Add = function( name ) 39 39 { 40 var oSpan = FCK. CreateElement( 'SPAN' ) ;40 var oSpan = FCK.InsertElement( 'span' ) ; 41 41 this.SetupSpan( oSpan, name ) ; 42 42 } 43 43