Changeset 1714


Ignore:
Timestamp:
03/18/08 09:24:36 (7 years ago)
Author:
fredck
Message:

Fixed #1647 : Hitting ENTER on list items containing block elements will not create new list item elements, instead of adding further blocks to the same list item.

Location:
FCKeditor/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • FCKeditor/trunk/_test/automated/_jsunit/app/jsUnitCore.js

    r1564 r1714  
    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 
  • FCKeditor/trunk/_test/automated/tests/fckdomtools.html

    r1565 r1714  
    2929 
    3030FCKScriptLoader.Load( 'FCKDomTools' ) ; 
     31 
     32        </script> 
     33        <script type="text/javascript"> 
     34 
     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//} 
    3156 
    3257        </script> 
     
    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> 
     
    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> 
  • FCKeditor/trunk/_test/automated/tests/fckw3crange.html

    r1565 r1714  
    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() 
     
    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 
  • FCKeditor/trunk/_whatsnew.html

    r1713 r1714  
    7575                        to override JavaScript errors occuring inside the editing frame due to user added 
    7676                        JavaScript code.</li> 
     77                <li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1647">#1647</a>] Hitting 
     78                        ENTER on list items containing block elements will not create new list item elements, 
     79                        instead of adding further blocks to the same list item.</li> 
    7780        </ul> 
    7881        <h3> 
  • FCKeditor/trunk/editor/_source/classes/fckenterkey.js

    r1565 r1714  
    401401        var oSplitInfo = oRange.SplitBlock() ; 
    402402 
    403         // FCKDebug.OutputObject( oSplitInfo ) ; 
    404  
    405403        if ( oSplitInfo ) 
    406404        { 
     
    411409                var bIsStartOfBlock     = oSplitInfo.WasStartOfBlock ; 
    412410                var bIsEndOfBlock       = oSplitInfo.WasEndOfBlock ; 
     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                } 
    413427 
    414428                // If we have both the previous and next blocks, it means that the 
  • FCKeditor/trunk/editor/_source/classes/fckw3crange.js

    r1565 r1714  
    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 ) 
    266                         { 
    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 ; 
    277                         } 
     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 ) 
     269                        { 
     270                                // Let's create a temporary node and mark it for removal. 
     271                                startNode = startNode.insertBefore( this._Document.createTextNode(''), startNode.firstChild ) ; 
     272                                removeStartNode = true ; 
     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 ; 
    278282                } 
    279283 
  • FCKeditor/trunk/editor/_source/fckscriptloader.js

    r1565 r1714  
    4141                return ; 
    4242 
     43        FCKScriptLoader._LoadedScripts[ scriptName ] = true ; 
     44 
    4345        var oScriptInfo = this._Scripts[ scriptName ] ; 
    4446 
     
    6668                        this._LoadScript( sBaseScriptName + '_gecko.js' ) ; 
    6769        } 
    68  
    69         FCKScriptLoader._LoadedScripts[ scriptName ] = true ; 
    7070} 
    7171 
     
    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 ) ; 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy