Ticket #3126: 3126_part1.patch

File 3126_part1.patch, 9.0 KB (added by Artur Formella, 14 years ago)
  • _source/core/dom/documentFragment.js

     
    1 /*
    2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
    3 For 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  */
    14 CKEDITOR.dom.documentFragment = function( ownerDocument )
    15 {
    16         ownerDocument = ownerDocument || CKEDITOR.document;
    17         this.$ = ownerDocument.$.createDocumentFragment();
    18 };
    19 
    20 CKEDITOR.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_temp.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[
    12 CKEDITOR.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">   
    219 text   
    220 </div>
    221         <iframe id="innerFrame" name="innerFrame" src="about:blank"></iframe>
    222 </body>
    223 </html>
    224  No newline at end of file
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy