Ticket #1647: 1647_3.patch
File 1647_3.patch, 11.1 KB (added by , 15 years ago) |
---|
-
_test/automated/_jsunit/app/jsUnitCore.js
75 75 } 76 76 77 77 function _displayStringForValue(aVar) { 78 var result = ' <' + aVar + '>';78 var result = '[' + aVar + ']'; 79 79 if (!(aVar === null || aVar === top.JSUNIT_UNDEFINED_VALUE)) { 80 80 result += ' (' + _trueTypeOf(aVar) + ')'; 81 81 } 82 return result;82 return '\n' + result + '\n'; 83 83 } 84 84 85 85 function fail(failureMessage) { -
_test/automated/tests/fckdomtools.html
32 32 </script> 33 33 <script type="text/javascript"> 34 34 35 var _BodyHtml ; 36 37 function setUpPage() 38 { 39 _BodyHtml = document.body.innerHTML ; 40 setUpPageStatus = 'complete' ; 41 } 42 43 // JsUnit special function called before every test start. 44 function setUp() 45 { 46 // Reset the body (because of changes by test functions). 47 document.body.innerHTML = _BodyHtml ; 48 } 49 50 // Use window.onload to call a test outside JsUnit (for debugging). 51 // The "tests.js" script must be commented. 52 //window.onload = function() 53 //{ 54 // test_GetNextSourceNode() ; 55 //} 56 57 </script> 58 <script type="text/javascript"> 59 35 60 function test_GetNextSourceNode() 36 61 { 37 62 var el = document.getElementById( 'xP' ) ; … … 88 113 FCKDomTools.HasAttribute( document.getElementById( 'xIMG' ), 'unknown' ) ) ; 89 114 } 90 115 116 function test_BreakParent_1() 117 { 118 var p = document.getElementById( 'xBreakParent_P1' ) ; 119 120 FCKDomTools.BreakParent( p.getElementsByTagName('span')[0], p.getElementsByTagName('i')[0] ) ; 121 122 assertEquals( 'SPAN breaks I', '<b>this <i>is some</i><span></span><i> sample</i> test text</b>', GetTestInnerHtml( p ) ) ; 123 } 124 125 function test_BreakParent_2() 126 { 127 var p = document.getElementById( 'xBreakParent_P1' ) ; 128 129 FCKDomTools.BreakParent( p.getElementsByTagName('span')[0], p.getElementsByTagName('b')[0] ) ; 130 131 assertEquals( 'SPAN breaks B', '<b>this <i>is some</i></b><span></span><b><i> sample</i> test text</b>', GetTestInnerHtml( p ) ) ; 132 } 133 134 function test_BreakParent_3() 135 { 136 var p = document.getElementById( 'xBreakParent_P2' ) ; 137 138 FCKDomTools.BreakParent( p.getElementsByTagName('span')[0], p.getElementsByTagName('i')[0] ) ; 139 140 assertEquals( 'SPAN breaks I', '<b><i></i><span>test</span><i></i></b>', GetTestInnerHtml( p ) ) ; 141 } 142 143 function test_BreakParent_4() 144 { 145 var p = document.getElementById( 'xBreakParent_P2' ) ; 146 147 FCKDomTools.BreakParent( p.getElementsByTagName('span')[0], p.getElementsByTagName('b')[0] ) ; 148 149 assertEquals( 'SPAN breaks B', '<b><i></i></b><span>test</span><b><i></i></b>', GetTestInnerHtml( p ) ) ; 150 } 151 152 function test_BreakParent_5() 153 { 154 var p = document.getElementById( 'xBreakParent_P2' ) ; 155 156 FCKDomTools.BreakParent( p.getElementsByTagName('i')[0], p.getElementsByTagName('b')[0] ) ; 157 158 assertEquals( 'I breaks B', '<b></b><i><span>test</span></i><b></b>', GetTestInnerHtml( p ) ) ; 159 } 160 91 161 </script> 92 162 </head> 93 163 <body> … … 115 185 This paragraph has and image at the very end of its contents.<img id="xIMG" src="http://www.fckeditor.net/images/logotop.gif" 116 186 alt="" /> 117 187 </p> 188 <p id="xBreakParent_P1"><b>This <i>is some<span></span> sample</i> test text</b></p> 189 <p id="xBreakParent_P2"><b><i><span>test</span></i></b></p> 118 190 </body> 119 191 </html> -
_test/automated/tests/fckw3crange.html
628 628 assertTrue( 'range.collapsed', range.collapsed ) ; 629 629 } 630 630 631 function test_extractContents_Other_5() 632 { 633 document.body.innerHTML = '<p><b><i>test</i></b></p>' ; 634 635 var range = FCKW3CRange.CreateRange( document ) ; 636 637 range.setStartAfter( document.getElementsByTagName('i')[0] ) ; 638 range.setEndAfter( document.getElementsByTagName('b')[0] ) ; 639 640 var docFrag = range.extractContents() ; 641 642 var tmpDiv = document.createElement( 'div' ) ; 643 if ( docFrag.AppendTo ) docFrag.AppendTo( tmpDiv ) ; else tmpDiv.appendChild( docFrag ) ; 644 645 assertEquals( 'Extracted HTML', '<b></b>', GetTestInnerHtml( tmpDiv ) ) ; 646 assertEquals( 'HTML after extraction', '<p><b><i>test</i></b></p>', GetTestInnerHtml( document.body ) ) ; 647 648 assertEquals( 'range.startContainer', document.body.firstChild, range.startContainer ) ; 649 assertEquals( 'range.startOffset', 1, range.startOffset ) ; 650 assertEquals( 'range.endContainer', document.body.firstChild, range.endContainer ) ; 651 assertEquals( 'range.endOffset', 1, range.endOffset ) ; 652 assertTrue( 'range.collapsed', range.collapsed ) ; 653 } 654 655 function test_extractContents_Other_6() 656 { 657 document.body.innerHTML = '<p><b><i>test</i></b></p>' ; 658 659 var range = FCKW3CRange.CreateRange( document ) ; 660 661 range.setStartBefore( document.getElementsByTagName('b')[0] ) ; 662 range.setEndBefore( document.getElementsByTagName('i')[0] ) ; 663 664 var docFrag = range.extractContents() ; 665 666 var tmpDiv = document.createElement( 'div' ) ; 667 if ( docFrag.AppendTo ) docFrag.AppendTo( tmpDiv ) ; else tmpDiv.appendChild( docFrag ) ; 668 669 assertEquals( 'Extracted HTML', '<b></b>', GetTestInnerHtml( tmpDiv ) ) ; 670 assertEquals( 'HTML after extraction', '<p><b><i>test</i></b></p>', GetTestInnerHtml( document.body ) ) ; 671 672 assertEquals( 'range.startContainer', document.body.firstChild, range.startContainer ) ; 673 assertEquals( 'range.startOffset', 0, range.startOffset ) ; 674 assertEquals( 'range.endContainer', document.body.firstChild, range.endContainer ) ; 675 assertEquals( 'range.endOffset', 0, range.endOffset ) ; 676 assertTrue( 'range.collapsed', range.collapsed ) ; 677 } 678 631 679 // W3C DOM Range Specs - Section 2.7 - Example 1 632 680 function test_cloneContents_W3C_1() 633 681 { … … 847 895 </script> 848 896 <script type="text/javascript"> 849 897 898 var _BodyHtml ; 899 900 function setUpPage() 901 { 902 _BodyHtml = document.body.innerHTML ; 903 setUpPageStatus = 'complete' ; 904 } 905 850 906 // JsUnit special function called before every test start. 851 907 function setUp() 852 908 { 853 909 // Reset the body (because of changes by test functions). 854 document.body.innerHTML = '<h1 id="_H1">FCKW3CRange Test</h1><p id="_P">This is <b id="_B">some</b> text.</p><p>Another paragraph.</p>';910 document.body.innerHTML = _BodyHtml ; 855 911 } 856 912 857 913 // Use window.onload to call a test outside JsUnit (for debugging). -
editor/_source/classes/fckenterkey.js
400 400 401 401 var oSplitInfo = oRange.SplitBlock() ; 402 402 403 // FCKDebug.OutputObject( oSplitInfo ) ;404 405 403 if ( oSplitInfo ) 406 404 { 407 405 // Get the current blocks. … … 411 409 var bIsStartOfBlock = oSplitInfo.WasStartOfBlock ; 412 410 var bIsEndOfBlock = oSplitInfo.WasEndOfBlock ; 413 411 412 // If there is one block under a list item, modify the split so that the list item gets split as well. (Bug #1647) 413 if ( eNextBlock ) 414 { 415 if ( eNextBlock.parentNode.nodeName.IEquals( 'li' ) ) 416 { 417 FCKDomTools.BreakParent( eNextBlock, eNextBlock.parentNode ) ; 418 FCKDomTools.MoveNode( eNextBlock, eNextBlock.nextSibling, true ) ; 419 } 420 } 421 else if ( ePreviousBlock && ePreviousBlock.parentNode.nodeName.IEquals( 'li' ) ) 422 { 423 FCKDomTools.BreakParent( ePreviousBlock, ePreviousBlock.parentNode ) ; 424 oRange.MoveToElementEditStart( ePreviousBlock.nextSibling ); 425 FCKDomTools.MoveNode( ePreviousBlock, ePreviousBlock.previousSibling ) ; 426 } 427 414 428 // If we have both the previous and next blocks, it means that the 415 429 // boundaries were on separated blocks, or none of them where on the 416 430 // block limits (start/end). -
editor/_source/classes/fckw3crange.js
262 262 { 263 263 // If the start container has children and the offset is pointing 264 264 // to a child, then we should start from its previous sibling. 265 if ( startNode.childNodes.length > 0 && startOffset <= startNode.childNodes.length - 1 ) 265 266 // If the offset points to the first node, we don't have a 267 // sibling, so let's use the first one, but mark it for removal. 268 if ( startOffset == 0 ) 266 269 { 267 // If the offset points to the first node, we don't have a 268 // sibling, so let's use the first one, but mark it for removal. 269 if ( startOffset == 0 ) 270 { 271 // Let's create a temporary node and mark it for removal. 272 startNode = startNode.insertBefore( this._Document.createTextNode(''), startNode.firstChild ) ; 273 removeStartNode = true ; 274 } 275 else 276 startNode = startNode.childNodes[ startOffset ].previousSibling ; 270 // Let's create a temporary node and mark it for removal. 271 startNode = startNode.insertBefore( this._Document.createTextNode(''), startNode.firstChild ) ; 272 removeStartNode = true ; 277 273 } 274 else if ( startOffset > startNode.childNodes.length - 1 ) 275 { 276 // Let's create a temporary node and mark it for removal. 277 startNode = startNode.appendChild( this._Document.createTextNode('') ) ; 278 removeStartNode = true ; 279 } 280 else 281 startNode = startNode.childNodes[ startOffset ].previousSibling ; 278 282 } 279 283 280 284 // Get the parent nodes tree for the start and end boundaries. -
editor/_source/fckscriptloader.js
40 40 if ( scriptName in FCKScriptLoader._LoadedScripts ) 41 41 return ; 42 42 43 FCKScriptLoader._LoadedScripts[ scriptName ] = true ; 44 43 45 var oScriptInfo = this._Scripts[ scriptName ] ; 44 46 45 47 if ( !oScriptInfo ) … … 65 67 else 66 68 this._LoadScript( sBaseScriptName + '_gecko.js' ) ; 67 69 } 68 69 FCKScriptLoader._LoadedScripts[ scriptName ] = true ;70 70 } 71 71 72 72 FCKScriptLoader._LoadScript = function( scriptPathFromSource ) … … 110 110 FCKScriptLoader.AddScript( 'FCKCodeFormatter' , 'internals/' ) ; 111 111 FCKScriptLoader.AddScript( 'FCKConfig' , 'internals/' , ['FCKBrowserInfo','FCKConstants'] ) ; 112 112 FCKScriptLoader.AddScript( 'FCKDebug' , 'internals/' , ['FCKConfig'] ) ; 113 FCKScriptLoader.AddScript( 'FCKDomTools' , 'internals/' , ['FCKJSCoreExtensions','FCKBrowserInfo','FCKTools' ], FCK_GENERIC ) ;113 FCKScriptLoader.AddScript( 'FCKDomTools' , 'internals/' , ['FCKJSCoreExtensions','FCKBrowserInfo','FCKTools','FCKDomRange'], FCK_GENERIC ) ; 114 114 FCKScriptLoader.AddScript( 'FCKListsLib' , 'internals/' ) ; 115 115 FCKScriptLoader.AddScript( 'FCKListHandler' , 'internals/' , ['FCKConfig', 'FCKDocumentFragment', 'FCKJSCoreExtensions','FCKDomTools'], FCK_GENERIC ) ; 116 116 FCKScriptLoader.AddScript( 'FCKRegexLib' , 'internals/' ) ;