Ticket #1647: 1647_3.patch

File 1647_3.patch, 11.1 KB (added by Frederico Caldeira Knabben, 11 years ago)
  • _test/automated/_jsunit/app/jsUnitCore.js

     
    7575}
    7676
    7777function _displayStringForValue(aVar) {
    78     var result = '<' + aVar + '>';
     78    var result = '[' + aVar + ']';
    7979    if (!(aVar === null || aVar === top.JSUNIT_UNDEFINED_VALUE)) {
    8080        result += ' (' + _trueTypeOf(aVar) + ')';
    8181    }
    82     return result;
     82    return '\n' + result + '\n';
    8383}
    8484
    8585function fail(failureMessage) {
  • _test/automated/tests/fckdomtools.html

     
    3232        </script>
    3333        <script type="text/javascript">
    3434
     35var _BodyHtml ;
     36
     37function setUpPage()
     38{
     39        _BodyHtml = document.body.innerHTML ;
     40        setUpPageStatus = 'complete' ;
     41}
     42
     43// JsUnit special function called before every test start.
     44function 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
    3560function test_GetNextSourceNode()
    3661{
    3762        var el = document.getElementById( 'xP' ) ;
     
    88113                FCKDomTools.HasAttribute( document.getElementById( 'xIMG' ), 'unknown' ) ) ;
    89114}
    90115
     116function 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
     125function 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
     134function 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
     143function 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
     152function 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
    91161        </script>
    92162</head>
    93163<body>
     
    115185                This paragraph has and image at the very end of its contents.<img id="xIMG" src="http://www.fckeditor.net/images/logotop.gif"
    116186                        alt="" />
    117187        </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>
    118190</body>
    119191</html>
  • _test/automated/tests/fckw3crange.html

     
    628628        assertTrue( 'range.collapsed', range.collapsed ) ;
    629629}
    630630
     631function 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
     655function 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
    631679// W3C DOM Range Specs - Section 2.7 - Example 1
    632680function test_cloneContents_W3C_1()
    633681{
     
    847895        </script>
    848896<script type="text/javascript">
    849897
     898var _BodyHtml ;
     899
     900function setUpPage()
     901{
     902        _BodyHtml = document.body.innerHTML ;
     903        setUpPageStatus = 'complete' ;
     904}
     905
    850906// JsUnit special function called before every test start.
    851907function setUp()
    852908{
    853909        // 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 ;
    855911}
    856912
    857913// Use window.onload to call a test outside JsUnit (for debugging).
  • editor/_source/classes/fckenterkey.js

     
    400400
    401401        var oSplitInfo = oRange.SplitBlock() ;
    402402
    403         // FCKDebug.OutputObject( oSplitInfo ) ;
    404 
    405403        if ( oSplitInfo )
    406404        {
    407405                // Get the current blocks.
     
    411409                var bIsStartOfBlock     = oSplitInfo.WasStartOfBlock ;
    412410                var bIsEndOfBlock       = oSplitInfo.WasEndOfBlock ;
    413411
     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
    414428                // If we have both the previous and next blocks, it means that the
    415429                // boundaries were on separated blocks, or none of them where on the
    416430                // block limits (start/end).
  • editor/_source/classes/fckw3crange.js

     
    262262                {
    263263                        // If the start container has children and the offset is pointing
    264264                        // 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 )
    266269                        {
    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 ;
    277273                        }
     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 ;
    278282                }
    279283
    280284                // Get the parent nodes tree for the start and end boundaries.
  • editor/_source/fckscriptloader.js

     
    4040        if ( scriptName in FCKScriptLoader._LoadedScripts )
    4141                return ;
    4242
     43        FCKScriptLoader._LoadedScripts[ scriptName ] = true ;
     44
    4345        var oScriptInfo = this._Scripts[ scriptName ] ;
    4446
    4547        if ( !oScriptInfo )
     
    6567                else
    6668                        this._LoadScript( sBaseScriptName + '_gecko.js' ) ;
    6769        }
    68 
    69         FCKScriptLoader._LoadedScripts[ scriptName ] = true ;
    7070}
    7171
    7272FCKScriptLoader._LoadScript = function( scriptPathFromSource )
     
    110110FCKScriptLoader.AddScript( 'FCKCodeFormatter'   , 'internals/' ) ;
    111111FCKScriptLoader.AddScript( 'FCKConfig'                  , 'internals/'  , ['FCKBrowserInfo','FCKConstants'] ) ;
    112112FCKScriptLoader.AddScript( 'FCKDebug'                   , 'internals/'  , ['FCKConfig'] ) ;
    113 FCKScriptLoader.AddScript( 'FCKDomTools'                , 'internals/'  , ['FCKJSCoreExtensions','FCKBrowserInfo','FCKTools'], FCK_GENERIC ) ;
     113FCKScriptLoader.AddScript( 'FCKDomTools'                , 'internals/'  , ['FCKJSCoreExtensions','FCKBrowserInfo','FCKTools','FCKDomRange'], FCK_GENERIC ) ;
    114114FCKScriptLoader.AddScript( 'FCKListsLib'                , 'internals/' ) ;
    115115FCKScriptLoader.AddScript( 'FCKListHandler'             , 'internals/'  , ['FCKConfig', 'FCKDocumentFragment', 'FCKJSCoreExtensions','FCKDomTools'], FCK_GENERIC ) ;
    116116FCKScriptLoader.AddScript( 'FCKRegexLib'                , 'internals/' ) ;
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy