Вход Регистрация
Файл: public/js/3rd_party/ckeditor/plugins/clipboard/dialogs/paste.js
Строк: 236
<?php

/*
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/

CKEDITOR.dialog.add( 'paste', function( editor )
{
    var 
lang = editor.lang.clipboard;
    var 
isCustomDomain = CKEDITOR.env.isCustomDomain();

    function 
onPasteFrameLoad( win )
    {
        var 
doc = new CKEDITOR.dom.document( win.document ),
            
docElement = doc.$;

        var 
script = doc.getById( 'cke_actscrpt' );
        
script && script.remove();

        
CKEDITOR.env.ie ?
            
docElement.body.contentEditable = "true" :
            
docElement.designMode = "on";

        
// IE before version 8 will leave cursor blinking inside the document after
        // editor blurred unless we clean up the selection. (#4716)
        
if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 )
        {
            
doc.getWindow().on( 'blur', function()
            {
                
docElement.selection.empty();
            } );
        }

        
doc.on( "keydown", function( e )
        {
            var 
domEvent = e.data,
                
key = domEvent.getKeystroke(),
                
processed;

            switch( 
key )
            {
                case 
27 :
                    
this.hide();
                    
processed = 1;
                    break;

                case 
9 :
                case 
CKEDITOR.SHIFT + 9 :
                    
this.changeFocus( true );
                    
processed = 1;
            }

            
processed && domEvent.preventDefault();
        }, 
this );

        
editor.fire( 'ariaWidget', new CKEDITOR.dom.element( win.frameElement ) );
    }

    return {
        
title : lang.title,

        
minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks ? 370 : 350,
        
minHeight : CKEDITOR.env.quirks ? 250 : 245,
        
onShow : function()
        {
            
// FIREFOX BUG: Force the browser to render the dialog to make the to-be-
            // inserted iframe editable. (#3366)
            
this.parts.dialog.$.offsetHeight;

            
this.setupContent();
        },

        
onHide : function()
        {
            if ( 
CKEDITOR.env.ie )
                
this.getParentEditor().document.getBody().$.contentEditable = 'true';
        },

        
onLoad : function()
        {
            if ( ( 
CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) && editor.lang.dir == 'rtl' )
                
this.parts.contents.setStyle( 'overflow', 'hidden' );
        },

        
onOk : function()
        {
            
this.commitContent();
        },

        
contents : [
            {
                
id : 'general',
                
label : editor.lang.common.generalTab,
                
elements : [
                    {
                        
type : 'html',
                        
id : 'securityMsg',
                        
html : '<div style="white-space:normal;width:340px;">' + lang.securityMsg + '</div>'
                    
},
                    {
                        
type : 'html',
                        
id : 'pasteMsg',
                        
html : '<div style="white-space:normal;width:340px;">'+lang.pasteMsg +'</div>'
                    
},
                    {
                        
type : 'html',
                        
id : 'editing_area',
                        
style : 'width: 100%; height: 100%;',
                        
html : '',
                        
focus : function()
                        {
                            var 
win = this.getInputElement().$.contentWindow;

                            
// #3291 : JAWS needs the 500ms delay to detect that the editor iframe
                            // iframe is no longer editable. So that it will put the focus into the
                            // Paste from Word dialog's editable area instead.
                            
setTimeout( function()
                            {
                                
win.focus();
                            }, 
500 );
                        },
                        
setup : function()
                        {
                            var 
dialog = this.getDialog();
                            var 
htmlToLoad =
                                
'<html dir="' + editor.config.contentsLangDirection + '"' +
                                
' lang="' + ( editor.config.contentsLanguage || editor.langCode ) + '">' +
                                
'<head><style>body { margin: 3px; height: 95%; } </style></head><body>' +
                                
'<script id="cke_actscrpt" type="text/javascript">' +
                                
'window.parent.CKEDITOR.tools.callFunction( ' + CKEDITOR.tools.addFunction( onPasteFrameLoad, dialog ) + ', this );' +
                                
'</script></body>' +
                                
'</html>';

                            var 
src =
                                
CKEDITOR.env.air ?
                                    
'javascript:void(0)' :
                                
isCustomDomain ?
                                    
'javascript:void((function(){' +
                                        
'document.open();' +
                                        
'document.domain='' + document.domain + '';' +
                                        
'document.close();' +
                                    
'})())"'
                                
:
                                    
'';

                            var 
iframe = CKEDITOR.dom.element.createFromHtml(
                                
'<iframe' +
                                    
' class="cke_pasteframe"' +
                                    
' frameborder="0" ' +
                                    
' allowTransparency="true"' +
                                    
' src="' + src + '"' +
                                    
' role="region"' +
                                    
' aria-label="' + lang.pasteArea + '"' +
                                    
' aria-describedby="' + dialog.getContentElement( 'general', 'pasteMsg' ).domId + '"' +
                                    
' aria-multiple="true"' +
                                    
'></iframe>' );

                            
iframe.on( 'load', function( e )
                            {
                                
e.removeListener();

                                var 
doc = iframe.getFrameDocument();
                                
doc.write( htmlToLoad );

                                if ( 
CKEDITOR.env.air )
                                    
onPasteFrameLoad.call( this, doc.getWindow().$ );
                            }, 
dialog );

                            
iframe.setCustomData( 'dialog', dialog );

                            var 
container = this.getElement();
                            
container.setHtml( '' );
                            
container.append( iframe );

                            
// IE need a redirect on focus to make
                            // the cursor blinking inside iframe. (#5461)
                            
if ( CKEDITOR.env.ie )
                            {
                                var 
focusGrabber = CKEDITOR.dom.element.createFromHtml( '<span tabindex="-1" style="position:absolute;" role="presentation"></span>' );
                                
focusGrabber.on( 'focus', function()
                                {
                                    
iframe.$.contentWindow.focus();
                                });
                                
container.append( focusGrabber );

                                
// Override focus handler on field.
                                
this.focus = function()
                                {
                                    
focusGrabber.focus();
                                    
this.fire( 'focus' );
                                };
                            }

                            
this.getInputElement = function(){ return iframe; };

                            
// Force container to scale in IE.
                            
if ( CKEDITOR.env.ie )
                            {
                                
container.setStyle( 'display', 'block' );
                                
container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' );
                            }
                        },
                        
commit : function( data )
                        {
                            var 
container = this.getElement(),
                                
editor = this.getDialog().getParentEditor(),
                                
body = this.getInputElement().getFrameDocument().getBody(),
                                
bogus = body.getBogus(),
                                
html;
                            
bogus && bogus.remove();

                            
// Saving the contents so changes until paste is complete will not take place (#7500)
                            
html = body.getHtml();

                            
setTimeout( function(){
                                
editor.fire( 'paste', { 'html' : html } );
                            }, 
0 );
                        }
                    }
                ]
            }
        ]
    };
});
?>
Онлайн: 2
Реклама