mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-08-16 11:38:02 +02:00
* API: updating CKEDITOR to version 3.6.2, altering editor modes and availability of toolbar options
This commit is contained in:
223
phpgwapi/js/ckeditor3/_source/plugins/clipboard/dialogs/paste.js
Normal file
223
phpgwapi/js/ckeditor3/_source/plugins/clipboard/dialogs/paste.js
Normal file
@ -0,0 +1,223 @@
|
||||
/*
|
||||
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 );
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
});
|
Reference in New Issue
Block a user