Ticket #3126: 3126_part2.patch

File 3126_part2.patch, 10.8 KB (added by Artur Formella, 15 years ago)
  • _source/core/dom/documentfragment.js

     
     1/*
     2Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
     3For licensing, see LICENSE.html or http://ckeditor.com/license
     4*/
     5/**
     6 * DocumentFragment is a "lightweight" or "minimal" Document object. It is
     7 * commonly used to extract a portion of a document's tree or to create a new
     8 * fragment of a document. Various operations may take DocumentFragment objects
     9 * as arguments and results in all the child nodes of the DocumentFragment being
     10 * moved to the child list of this node.
     11 *
     12 * @param {Object} ownerDocument
     13 */
     14CKEDITOR.dom.documentFragment = function( ownerDocument )
     15{
     16        ownerDocument = ownerDocument || CKEDITOR.document;
     17        this.$ = ownerDocument.$.createDocumentFragment();
     18};
     19
     20CKEDITOR.tools.extend( CKEDITOR.dom.documentFragment.prototype,
     21        CKEDITOR.dom.element.prototype,
     22        {
     23                type : CKEDITOR.NODE_DOCUMENT_FRAGMENT,
     24                insertAfterNode : function( node )
     25                {
     26                        node = node.$;
     27                        node.parentNode.insertBefore( this.$, node.nextSibling );
     28                }
     29        },
     30        true,
     31        {
     32                'append' : 1,
     33                'getFirst' : 1,
     34                'getLast' : 1,
     35                'appendTo' : 1,
     36                'moveChildren' : 1,
     37                'insertAfterNode' : 1,
     38                'replace' : 1,
     39                'trim' : 1,
     40                'ltrim' : 1,
     41                'rtrim' : 1,
     42                'getDocument' : 1,
     43                'getChildCount' : 1,
     44                'getChild' : 1,
     45                'getChildren' : 1
     46        } );
     47 No newline at end of file
  • _source/tests/core/dom/documentfragment.html

    Property changes on: _source\core\dom\documentfragment.js
    ___________________________________________________________________
    Added: svn:mergeinfo
    
     
     1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2<html xmlns="http://www.w3.org/1999/xhtml">
     3<head>
     4        <title>CKEDITOR.dom.documentFragment</title>
     5        <link rel="stylesheet" type="text/css" href="../../test.css" />
     6        <script type="text/javascript" src="../../../../ckeditor_source.js"></script> <!-- %REMOVE_LINE%
     7        <script type="text/javascript" src="../../../ckeditor.js"></script>
     8        %REMOVE_LINE% -->
     9        <script type="text/javascript" src="../../test.js"></script>
     10        <script type="text/javascript">
     11        //<![CDATA[
     12CKEDITOR.test.addTestCase( ( function()
     13{
     14        // Local reference to the "assert" object.
     15        var assert = YAHOO.util.Assert;
     16
     17        return {
     18               
     19                test_appendTo : function()
     20                {
     21                        var frag =
     22                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     23                        var inner =
     24                                        new CKEDITOR.dom.element( 'b' );
     25                        frag.append( inner );
     26                        var container = CKEDITOR.document.getById( 'fragmentContainer1' );
     27                        frag.appendTo( container );
     28                        assert.isTrue( container.getLast().equals( inner ) );
     29                },
     30
     31                test_append : function()
     32                {
     33                        var frag =
     34                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     35                        var inner =
     36                                        new CKEDITOR.dom.element( 'b' );
     37                        frag.append( inner );
     38                        var container = CKEDITOR.document.getById( 'fragmentContainer3' );
     39                        container.append( frag );
     40                        assert.isTrue( container.getLast().equals( inner ) );
     41                },
     42
     43                test_getFirst : function()
     44                {
     45                        var frag =
     46                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     47                        var inner =
     48                                        new CKEDITOR.dom.element( 'b' );
     49                        frag.append( inner );
     50                        var first = frag.getFirst();
     51                        assert.isTrue( first.equals( inner ) );
     52                },
     53
     54                test_getLast : function()
     55                {
     56                        var frag =
     57                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     58                        var inner =
     59                                        new CKEDITOR.dom.element( 'b' ), lastInner = inner.clone();
     60                        frag.append( inner );
     61                        frag.append( lastInner );
     62                        var last = frag.getLast();
     63                        assert.isTrue( last.equals( lastInner ) );
     64                },
     65
     66                test_moveChildren : function()
     67                {
     68                        var frag =
     69                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     70                        var inner1 = new CKEDITOR.dom.element( 'b' ),
     71                        inner2 = new CKEDITOR.dom.element( 'i' );
     72                        frag.append( inner1 );
     73                        frag.append( inner2 );
     74
     75                        // Move to element
     76                        var element = new CKEDITOR.dom.element( 'span' );
     77                        frag.moveChildren( element, true );
     78                        assert.isTrue( element.getFirst().equals( inner1 ) );
     79                        assert.isTrue( element.getLast().equals( inner2 ) );
     80                },
     81
     82                test_moveChildren2 : function()
     83                {
     84                        var frag =
     85                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     86                        var inner1 = new CKEDITOR.dom.element( 'b' ),
     87                                inner2 = new CKEDITOR.dom.element( 'i' );
     88                        frag.append( inner1 );
     89                        frag.append( inner2 );
     90
     91                        // Move to fragment
     92                        var anotherFrag = new CKEDITOR.dom.documentFragment(
     93                                CKEDITOR.document );
     94                        frag.moveChildren( anotherFrag, true );
     95                        assert.isTrue( anotherFrag.getFirst().equals( inner1 ) );
     96                        assert.isTrue( anotherFrag.getLast().equals( inner2 ) );
     97                },
     98
     99                test_appendText : function()
     100                {
     101                        var element = new CKEDITOR.dom.element( 'script' );
     102                        element.appendText( 'Test appendText' );
     103                        assert.areEqual( 'Test appendText', element.$.text );
     104                },
     105
     106                test_ltrim : function()
     107                {
     108                        var element = CKEDITOR.document.getById( 'trimTarget' )
     109                                .clone( true );
     110                        var frag =
     111                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     112                        element.moveChildren( frag );
     113                        frag.ltrim();
     114                        var ct = new CKEDITOR.dom.element( 'div' );
     115                        ct.append( frag );
     116                        assert.areSame( 'text \t\n', ct.getText() );
     117                },
     118
     119                test_rtrim : function()
     120                {
     121                        var element = CKEDITOR.document.getById( 'trimTarget' )
     122                                .clone( true );
     123                        var frag =
     124                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     125                        element.moveChildren( frag );
     126                        frag.rtrim();
     127                        var ct = new CKEDITOR.dom.element( 'div' );
     128                        ct.append( frag );
     129                        assert.areSame( ' \t\ntext', ct.getText() );
     130                },
     131
     132                test_trim : function()
     133                {
     134                        var element =
     135                                        CKEDITOR.document.getById( 'trimTarget' ).clone( true );
     136                        var frag =
     137                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     138                        element.moveChildren( frag );
     139                        frag.trim();
     140                        var ct = new CKEDITOR.dom.element( 'div' );
     141                        ct.append( frag );
     142                        assert.areSame( 'text', ct.getText() );
     143                },
     144
     145                test_insertAfter : function()
     146                {
     147                        var frag =
     148                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     149                        var inner = new CKEDITOR.dom.element( 'b' );
     150                        frag.append( inner );
     151                        var container = CKEDITOR.document.getById( 'fragmentContainer2' );
     152                        var sibling = CKEDITOR.document.getById( 'fragmentSibling1' );
     153                        frag.insertAfterNode( sibling );
     154                        assert.isTrue( container.getLast().equals( inner ) );
     155                },
     156
     157                test_getChildCount : function()
     158                {
     159                        var frag =
     160                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     161                        var inner1 = new CKEDITOR.dom.element( 'b' ),
     162                                inner2 = new CKEDITOR.dom.element( 'i' );
     163                        frag.append( inner1 );
     164                        frag.append( inner2 );
     165
     166                        assert.areEqual( 2, frag.getChildCount() );
     167                },
     168
     169                test_getChild : function()
     170                {
     171                        var frag =
     172                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     173                        var inner1 = new CKEDITOR.dom.element( 'b' ),
     174                                inner2 = new CKEDITOR.dom.element( 'i' );
     175                        frag.append( inner1 );
     176                        frag.append( inner2 );
     177
     178                        assert.isTrue( inner2.equals( frag.getChild( 1 ) ) );
     179                },
     180
     181                test_getChildren : function()
     182                {
     183                        var frag =
     184                                        new CKEDITOR.dom.documentFragment( CKEDITOR.document );
     185                        var inner1 = new CKEDITOR.dom.element( 'b' ),
     186                                inner2 = new CKEDITOR.dom.element( 'i' );
     187                        frag.append( inner1 );
     188                        frag.append( inner2 );
     189
     190                        var childNodesList = frag.getChildren();
     191                        assert.areEqual( 2, childNodesList.count() );
     192                        assert.isTrue( inner2.equals( childNodesList.getItem( 1 ) ) );
     193                },
     194
     195                test_getDocument : function()
     196                {
     197                        var doc = CKEDITOR.document,
     198                                innerDoc = new CKEDITOR.dom.document(
     199                                        doc.getById( 'innerFrame' ).$.contentWindow.document );
     200                        var frag1 = new CKEDITOR.dom.documentFragment( doc ),
     201                                frag2 = new CKEDITOR.dom.documentFragment( innerDoc );
     202
     203                        assert.isTrue( doc.equals( frag1.getDocument() ) );
     204                        assert.isTrue( innerDoc.equals( frag2.getDocument() ) );
     205                },
     206
     207                name :document.title
     208        };
     209} )() );
     210
     211        //]]>
     212        </script>
     213</head>
     214<body>
     215        <div id="fragmentContainer1"></div>
     216        <div id="fragmentContainer2"><div id="fragmentSibling1"></div></div>
     217        <div id="fragmentContainer3"></div>
     218        <div id="trimTarget">   
     219text   
     220</div>
     221        <iframe id="innerFrame" name="innerFrame" src="about:blank"></iframe>
     222</body>
     223</html>
  • _source/core/loader.js

    Property changes on: _source\tests\core\dom\documentfragment.html
    ___________________________________________________________________
    Deleted: svn:mime-type
       - text/plain
    Added: svn:mergeinfo
    
     
    3232                        'core/config'                   : [ 'core/ckeditor_base' ],
    3333                        'core/dom'                              : [],
    3434                        'core/dom/document'             : [ 'core/dom','core/dom/element', 'core/dom/domobject', 'core/dom/window' ],
    35                         'core/dom/documentFragment'     : [ 'core/dom/element' ],
     35                        'core/dom/documentfragment'     : [ 'core/dom/element' ],
    3636                        'core/dom/element'              : [ 'core/dom', 'core/dom/document', 'core/dom/domobject', 'core/dom/node', 'core/dom/nodelist', 'core/tools' ],
    3737                        'core/dom/elementpath'  : [ 'core/dom/element' ],
    3838                        'core/dom/event'                : [],
     
    4040                        'core/dom/nodelist'             : [ 'core/dom/node' ],
    4141                        'core/dom/domobject'    : [ 'core/dom/event' ],
    4242                        'core/dom/domwalker'    : [ 'core/dom/node', 'core/dom/element', 'core/dom/document' ],
    43                         'core/dom/range'                : [ 'core/dom/document', 'core/dom/documentFragment', 'core/dom/element', 'core/dom/domwalker' ],
     43                        'core/dom/range'                : [ 'core/dom/document', 'core/dom/documentfragment', 'core/dom/element', 'core/dom/domwalker' ],
    4444                        'core/dom/text'                 : [ 'core/dom/node', 'core/dom/domobject' ],
    4545                        'core/dom/window'               : [ 'core/dom/domobject' ],
    4646                        'core/dtd'                              : [ 'core/tools' ],
  • ckeditor.pack

     
    117117                                        '_source/core/ckeditor.js',
    118118                                        '_source/core/dom/elementpath.js',
    119119                                        '_source/core/dom/text.js',
    120                                         '_source/core/dom/documentFragment.js',
     120                                        '_source/core/dom/documentfragment.js',
    121121                                        '_source/core/dom/domwalker.js',
    122122                                        '_source/core/dom/range.js',
    123123                                        '_source/core/_bootstrap.js',
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy