Changeset 6799


Ignore:
Timestamp:
04/28/2011 05:23:29 PM (4 years ago)
Author:
Saare
Message:

#6109: Use commitContent and setupContent in paste dialogs.
+ Added docs for commitContent, setupContent, setup and commit.

Location:
CKEditor/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r6793 r6799  
    5252                <li><a href="http://dev.ckeditor.com/ticket/5788">#5788</a> : Html parser trims empty spaces following &lt;br&gt; elements.</li> 
    5353                <li><a href="http://dev.ckeditor.com/ticket/7513">#7513</a> : Invalid markup could lead the editor to hang.</li> 
     54                <li><a href="http://dev.ckeditor.com/ticket/6109">#6109</a> : Paste and Paste as Plain Text dialog windows now use the standart <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.html#commitContent">commitContent</a> and <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.html#setupContent">setupContent</a> methods.</li> 
    5455        </ul> 
    5556        <h3> 
  • CKEditor/trunk/_source/plugins/clipboard/dialogs/paste.js

    r6647 r6799  
    6767                        this.parts.dialog.$.offsetHeight; 
    6868 
    69                         var htmlToLoad = 
    70                                 '<html dir="' + editor.config.contentsLangDirection + '"' + 
    71                                 ' lang="' + ( editor.config.contentsLanguage || editor.langCode ) + '">' + 
    72                                         '<head><style>body { margin: 3px; height: 95%; } </style></head><body>' + 
    73                                         '<script id="cke_actscrpt" type="text/javascript">' + 
    74                                         'window.parent.CKEDITOR.tools.callFunction( ' + CKEDITOR.tools.addFunction( onPasteFrameLoad, this ) + ', this );' + 
    75                                         '</script></body>' + 
    76                                 '</html>'; 
    77  
    78                         var src = 
    79                                 CKEDITOR.env.air ? 
    80                                         'javascript:void(0)' : 
    81                                 isCustomDomain ? 
    82                                         'javascript:void((function(){' + 
    83                                                 'document.open();' + 
    84                                                 'document.domain=\'' + document.domain + '\';' + 
    85                                                 'document.close();' + 
    86                                                 '})())"' 
    87                                 : 
    88                                         ''; 
    89  
    90                         var iframe = CKEDITOR.dom.element.createFromHtml( 
    91                                                 '<iframe' + 
    92                                                 ' class="cke_pasteframe"' + 
    93                                                 ' frameborder="0" ' + 
    94                                                 ' allowTransparency="true"' + 
    95                                                 ' src="' + src + '"' + 
    96                                                 ' role="region"' + 
    97                                                 ' aria-label="' + lang.pasteArea + '"' + 
    98                                                 ' aria-describedby="' + this.getContentElement( 'general', 'pasteMsg' ).domId + '"' + 
    99                                                 ' aria-multiple="true"' + 
    100                                                 '></iframe>' ); 
    101  
    102                         iframe.on( 'load', function( e ) 
    103                                 { 
    104                                         e.removeListener(); 
    105  
    106                                         var doc = iframe.getFrameDocument(); 
    107                                         doc.write( htmlToLoad ); 
    108  
    109                                         if ( CKEDITOR.env.air ) 
    110                                                 onPasteFrameLoad.call( this, doc.getWindow().$ ); 
    111                                 }, 
    112                                 this ); 
    113  
    114                         iframe.setCustomData( 'dialog', this ); 
    115  
    116                         var field = this.getContentElement( 'general', 'editing_area' ), 
    117                                 container = field.getElement(); 
    118                         container.setHtml( '' ); 
    119                         container.append( iframe ); 
    120  
    121                         // IE need a redirect on focus to make 
    122                         // the cursor blinking inside iframe. (#5461) 
    123                         if ( CKEDITOR.env.ie ) 
    124                         { 
    125                                 var focusGrabber = CKEDITOR.dom.element.createFromHtml( '<span tabindex="-1" style="position:absolute;" role="presentation"></span>' ); 
    126                                 focusGrabber.on( 'focus', function() 
    127                                 { 
    128                                         iframe.$.contentWindow.focus(); 
    129                                 }); 
    130                                 container.append( focusGrabber ); 
    131  
    132                                 // Override focus handler on field. 
    133                                 field.focus = function() 
    134                                 { 
    135                                         focusGrabber.focus(); 
    136                                         this.fire( 'focus' ); 
    137                                 }; 
    138                         } 
    139  
    140                         field.getInputElement = function(){ return iframe; }; 
    141  
    142                         // Force container to scale in IE. 
    143                         if ( CKEDITOR.env.ie ) 
    144                         { 
    145                                 container.setStyle( 'display', 'block' ); 
    146                                 container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' ); 
    147                         } 
     69                        this.setupContent(); 
    14870                }, 
    14971 
     
    16284                onOk : function() 
    16385                { 
    164                         var container = this.getContentElement( 'general', 'editing_area' ).getElement(), 
    165                                 iframe = container.getElementsByTag( 'iframe' ).getItem( 0 ), 
    166                                 editor = this.getParentEditor(), 
    167                                 body = iframe.getFrameDocument().getBody(), 
    168                                 bogus = body.getBogus(), 
    169                                 html; 
    170                         bogus && bogus.remove(); 
    171                         // Saving the contents in variable so changes until paste is complete will not take place (#7500) 
    172                         html = body.getHtml(); 
    173  
    174                         setTimeout( function(){ 
    175                                 editor.fire( 'paste', { 'html' : html } ); 
    176                         }, 0 ); 
    177  
     86                        this.commitContent(); 
    17887                }, 
    17988 
     
    209118                                                                win.focus(); 
    210119                                                        }, 500 ); 
     120                                                }, 
     121                                                setup : function() 
     122                                                { 
     123                                                        var dialog = this.getDialog(); 
     124                                                        var htmlToLoad =  
     125                                                                '<html dir="' + editor.config.contentsLangDirection + '"' + 
     126                                                                ' lang="' + ( editor.config.contentsLanguage || editor.langCode ) + '">' + 
     127                                                                '<head><style>body { margin: 3px; height: 95%; } </style></head><body>' + 
     128                                                                '<script id="cke_actscrpt" type="text/javascript">' + 
     129                                                                'window.parent.CKEDITOR.tools.callFunction( ' + CKEDITOR.tools.addFunction( onPasteFrameLoad, dialog ) + ', this );' + 
     130                                                                '</script></body>' + 
     131                                                                '</html>'; 
     132 
     133                                                        var src = 
     134                                                                CKEDITOR.env.air ? 
     135                                                                        'javascript:void(0)' : 
     136                                                                isCustomDomain ? 
     137                                                                        'javascript:void((function(){' + 
     138                                                                                'document.open();' + 
     139                                                                                'document.domain=\'' + document.domain + '\';' + 
     140                                                                                'document.close();' + 
     141                                                                        '})())"' 
     142                                                                : 
     143                                                                        ''; 
     144 
     145                                                        var iframe = CKEDITOR.dom.element.createFromHtml( 
     146                                                                '<iframe' + 
     147                                                                        ' class="cke_pasteframe"' + 
     148                                                                        ' frameborder="0" ' + 
     149                                                                        ' allowTransparency="true"' + 
     150                                                                        ' src="' + src + '"' + 
     151                                                                        ' role="region"' + 
     152                                                                        ' aria-label="' + lang.pasteArea + '"' + 
     153                                                                        ' aria-describedby="' + dialog.getContentElement( 'general', 'pasteMsg' ).domId + '"' + 
     154                                                                        ' aria-multiple="true"' + 
     155                                                                        '></iframe>' ); 
     156 
     157                                                        iframe.on( 'load', function( e ) 
     158                                                        { 
     159                                                                e.removeListener(); 
     160 
     161                                                                var doc = iframe.getFrameDocument(); 
     162                                                                doc.write( htmlToLoad ); 
     163 
     164                                                                if ( CKEDITOR.env.air ) 
     165                                                                        onPasteFrameLoad.call( this, doc.getWindow().$ ); 
     166                                                        }, dialog ); 
     167 
     168                                                        iframe.setCustomData( 'dialog', dialog ); 
     169 
     170                                                        var container = this.getElement(); 
     171                                                        container.setHtml( '' ); 
     172                                                        container.append( iframe ); 
     173 
     174                                                        // IE need a redirect on focus to make 
     175                                                        // the cursor blinking inside iframe. (#5461) 
     176                                                        if ( CKEDITOR.env.ie ) 
     177                                                        { 
     178                                                                var focusGrabber = CKEDITOR.dom.element.createFromHtml( '<span tabindex="-1" style="position:absolute;" role="presentation"></span>' ); 
     179                                                                focusGrabber.on( 'focus', function() 
     180                                                                { 
     181                                                                        iframe.$.contentWindow.focus(); 
     182                                                                }); 
     183                                                                container.append( focusGrabber ); 
     184 
     185                                                                // Override focus handler on field. 
     186                                                                this.focus = function() 
     187                                                                { 
     188                                                                        focusGrabber.focus(); 
     189                                                                        this.fire( 'focus' ); 
     190                                                                }; 
     191                                                        } 
     192 
     193                                                        this.getInputElement = function(){ return iframe; }; 
     194 
     195                                                        // Force container to scale in IE. 
     196                                                        if ( CKEDITOR.env.ie ) 
     197                                                        { 
     198                                                                container.setStyle( 'display', 'block' ); 
     199                                                                container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' ); 
     200                                                        } 
     201                                                }, 
     202                                                commit : function( data ) 
     203                                                { 
     204                                                        var container = this.getElement(), 
     205                                                                editor = this.getDialog().getParentEditor(), 
     206                                                                body = this.getInputElement().getFrameDocument().getBody(), 
     207                                                                bogus = body.getBogus(), 
     208                                                                html; 
     209                                                        bogus && bogus.remove(); 
     210 
     211                                                        // Saving the contents so changes until paste is complete will not take place (#7500)  
     212                                                        html = body.getHtml(); 
     213 
     214                                                        setTimeout( function(){ 
     215                                                                editor.fire( 'paste', { 'html' : html } ); 
     216                                                        }, 0 ); 
    211217                                                } 
    212218                                        } 
  • CKEditor/trunk/_source/plugins/dialog/dialogDefinition.js

    r6652 r6799  
    283283 * Function to execute whenever the UI element's parent dialog is closed. 
    284284 * @name CKEDITOR.dialog.definition.uiElement.prototype.onHide 
     285 * @field 
     286 * @type Function 
     287 * @example 
     288 */ 
     289 
     290/** 
     291 * Function to execute whenever the UI element's parent dialog's {@link CKEDITOR.dialog.definition.setupContent} method is executed. 
     292 * It usually takes care of the respective UI element as a standalone element. 
     293 * @name CKEDITOR.dialog.definition.uiElement.prototype.setup 
     294 * @field 
     295 * @type Function 
     296 * @example 
     297 */ 
     298 
     299/** 
     300 * Function to execute whenever the UI element's parent dialog's {@link CKEDITOR.dialog.definition.commitContent} method is executed. 
     301 * It usually takes care of the respective UI element as a standalone element. 
     302 * @name CKEDITOR.dialog.definition.uiElement.prototype.commit 
    285303 * @field 
    286304 * @type Function 
  • CKEditor/trunk/_source/plugins/dialog/plugin.js

    r6676 r6799  
    860860                })(), 
    861861 
     862 
     863                /** 
     864                 * Calls the {@link CKEDITOR.dialog.definition.uiElement#setup} method of each of the UI elements, with the arguments passed through it. 
     865                 * It is usually being called when the dialog is opened, to put the initial value inside the field. 
     866                 * @example 
     867                 * dialogObj.setupContent(); 
     868                 * @example 
     869                 * var timestamp = ( new Date() ).valueOf(); 
     870                 * dialogObj.setupContent( timestamp ); 
     871                 */ 
    862872                setupContent : function() 
    863873                { 
     
    870880                }, 
    871881 
     882                /** 
     883                 * Calls the {@link CKEDITOR.dialog.definition.uiElement#commit} method of each of the UI elements, with the arguments passed through it. 
     884                 * It is usually being called when the user confirms the dialog, to process the values. 
     885                 * @example 
     886                 * dialogObj.commitContent(); 
     887                 * @example 
     888                 * var timestamp = ( new Date() ).valueOf(); 
     889                 * dialogObj.commitContent( timestamp ); 
     890                 */ 
    872891                commitContent : function() 
    873892                { 
  • CKEditor/trunk/_source/plugins/pastetext/dialogs/pastetext.js

    r6348 r6799  
    1414                                minHeight : 240, 
    1515 
    16                                 onShow : function() 
    17                                 { 
    18                                         // Reset the textarea value. 
    19                                         this.getContentElement( 'general', 'content' ).getInputElement().setValue( '' ); 
    20                                 }, 
    21  
    22                                 onOk : function() 
    23                                 { 
    24                                         // Get the textarea value. 
    25                                         var text = this.getContentElement( 'general', 'content' ).getInputElement().getValue(), 
    26                                                 editor = this.getParentEditor(); 
    27  
    28                                         setTimeout( function() 
    29                                         { 
    30                                                 editor.fire( 'paste', { 'text' : text } ); 
    31                                         }, 0 ); 
    32                                 }, 
     16                                onShow : function(){ this.setupContent(); }, 
     17                                onOk : function(){ this.commitContent(); }, 
    3318 
    3419                                contents : 
     
    6146                                                                { 
    6247                                                                        this.getElement().focus(); 
     48                                                                }, 
     49                                                                setup : function() 
     50                                                                { 
     51                                                                        this.setValue( '' ); 
     52                                                                }, 
     53                                                                commit : function() 
     54                                                                { 
     55                                                                        var value = this.getValue(); 
     56                                                                        setTimeout( function() 
     57                                                                        { 
     58                                                                                editor.fire( 'paste', { 'text' : value } ); 
     59                                                                        }, 0 ); 
    6360                                                                } 
    6461                                                        } 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy