Ticket #3075: 3075.patch

File 3075.patch, 3.6 KB (added by Garry Yao, 11 years ago)
  • _source/plugins/wysiwygarea/plugin.js

     
    1010
    1111(function()
    1212{
    13         function onInsertHtml( evt )
    14         {
    15                 if ( this.mode == 'wysiwyg' )
    16                 {
    17                         var $doc = this.document.$,
    18                                 data = evt.data;
    19                         var data = protectHtml( evt.data );
    20 
    21                         if ( editor.dataProcessor )
    22                                 data = editor.dataProcessor.toHtml( data );
    23 
    24                         if ( CKEDITOR.env.ie )
    25                                 $doc.selection.createRange().pasteHTML( data );
    26                         else
    27                                 $doc.execCommand( 'inserthtml', false, data );
    28                 }
    29         }
    30 
    31         function onInsertElement( evt )
    32         {
    33                 if ( this.mode == 'wysiwyg' )
    34                 {
    35                         var element = evt.data,
    36                                 isBlock = CKEDITOR.dtd.$block[ element.getName() ];
    37 
    38                         var selection = this.getSelection(),
    39                                 ranges = selection.getRanges();
    40 
    41                         var range, clone, lastElement, bookmark;
    42 
    43                         for ( var i = ranges.length - 1 ; i >= 0 ; i-- )
    44                         {
    45                                 range = ranges[ i ];
    46 
    47                                 // Remove the original contents.
    48                                 range.deleteContents();
    49 
    50                                 clone = element.clone( true );
    51 
    52                                 // If the new node is a block element, split the current block (if any).
    53                                 if ( this.config.enterMode != 'br' && isBlock )
    54                                 {
    55                                         var startPath = new CKEDITOR.dom.elementPath( range.startContainer );
    56                                         if ( startPath.block )
    57                                                 range.splitBlock();
    58                                 }
    59 
    60                                 // Insert the new node.
    61                                 range.insertNode( clone );
    62 
    63                                 // Save the last element reference so we can make the
    64                                 // selection later.
    65                                 if ( !lastElement )
    66                                         lastElement = clone;
    67                         }
    68 
    69                         range.moveToPosition( lastElement, CKEDITOR.POSITION_AFTER_END );
    70                         selection.selectRanges( [ range ] );
    71                 }
    72         }
    7313
    7414        CKEDITOR.plugins.add( 'wysiwygarea',
    7515        {
     
    7717
    7818                init : function( editor, pluginPath )
    7919                {
     20                        function onInsertHtml( evt )
     21                        {
     22                                if ( this.mode == 'wysiwyg' )
     23                                {
     24                                        var $doc = this.document.$,
     25                                                data = evt.data;
     26               
     27                                        if ( editor.dataProcessor )
     28                                                data = editor.dataProcessor.toHtml( data );
     29               
     30                                        if ( CKEDITOR.env.ie )
     31                                                $doc.selection.createRange().pasteHTML( data );
     32                                        else
     33                                                $doc.execCommand( 'inserthtml', false, data );
     34                                }
     35                        }
     36               
     37                        function onInsertElement( evt )
     38                        {
     39                                if ( this.mode == 'wysiwyg' )
     40                                {
     41                                        var element = evt.data,
     42                                                isBlock = CKEDITOR.dtd.$block[ element.getName() ];
     43               
     44                                        var selection = this.getSelection(),
     45                                                ranges = selection.getRanges();
     46               
     47                                        var range, clone, lastElement, bookmark;
     48               
     49                                        for ( var i = ranges.length - 1 ; i >= 0 ; i-- )
     50                                        {
     51                                                range = ranges[ i ];
     52               
     53                                                // Remove the original contents.
     54                                                range.deleteContents();
     55               
     56                                                clone = element.clone( true );
     57               
     58                                                // If the new node is a block element, split the current block (if any).
     59                                                if ( this.config.enterMode != 'br' && isBlock )
     60                                                {
     61                                                        var startPath = new CKEDITOR.dom.elementPath( range.startContainer );
     62                                                        if ( startPath.block )
     63                                                                range.splitBlock();
     64                                                }
     65               
     66                                                // Insert the new node.
     67                                                range.insertNode( clone );
     68               
     69                                                // Save the last element reference so we can make the
     70                                                // selection later.
     71                                                if ( !lastElement )
     72                                                        lastElement = clone;
     73                                        }
     74               
     75                                        range.moveToPosition( lastElement, CKEDITOR.POSITION_AFTER_END );
     76                                        selection.selectRanges( [ range ] );
     77                                }
     78                        }
     79                       
    8080                        editor.on( 'editingBlockReady', function()
    8181                                {
    8282                                        var mainElement,
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy