X-Git-Url: https://scm.cri.ensmp.fr/git/ckeditor.git/blobdiff_plain/256592bf803e851aa7fc953e08a6e9e58d970f8c..871bad8291b6dbc29d489d95d185458caab25158:/skins/ckeditor/_source/plugins/pastetext/plugin.js diff --git a/skins/ckeditor/_source/plugins/pastetext/plugin.js b/skins/ckeditor/_source/plugins/pastetext/plugin.js new file mode 100644 index 0000000..42dbf5d --- /dev/null +++ b/skins/ckeditor/_source/plugins/pastetext/plugin.js @@ -0,0 +1,98 @@ +/* +Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +/** + * @file Paste as plain text plugin + */ + +(function() +{ + // The pastetext command definition. + var pasteTextCmd = + { + exec : function( editor ) + { + var clipboardText = CKEDITOR.tools.tryThese( + function() + { + var clipboardText = window.clipboardData.getData( 'Text' ); + if ( !clipboardText ) + throw 0; + return clipboardText; + } + // Any other approach that's working... + ); + + if ( !clipboardText ) // Clipboard access privilege is not granted. + { + editor.openDialog( 'pastetext' ); + return false; + } + else + editor.fire( 'paste', { 'text' : clipboardText } ); + + return true; + } + }; + + // Register the plugin. + CKEDITOR.plugins.add( 'pastetext', + { + init : function( editor ) + { + var commandName = 'pastetext', + command = editor.addCommand( commandName, pasteTextCmd ); + + editor.ui.addButton( 'PasteText', + { + label : editor.lang.pasteText.button, + command : commandName + }); + + CKEDITOR.dialog.add( commandName, CKEDITOR.getUrl( this.path + 'dialogs/pastetext.js' ) ); + + if ( editor.config.forcePasteAsPlainText ) + { + // Intercept the default pasting process. + editor.on( 'beforeCommandExec', function ( evt ) + { + var mode = evt.data.commandData; + // Do NOT overwrite if HTML format is explicitly requested. + if ( evt.data.name == 'paste' && mode != 'html' ) + { + editor.execCommand( 'pastetext' ); + evt.cancel(); + } + }, null, null, 0 ); + + editor.on( 'beforePaste', function( evt ) + { + evt.data.mode = 'text'; + }); + } + + editor.on( 'pasteState', function( evt ) + { + editor.getCommand( 'pastetext' ).setState( evt.data ); + }); + }, + + requires : [ 'clipboard' ] + }); + +})(); + + +/** + * Whether to force all pasting operations to insert on plain text into the + * editor, loosing any formatting information possibly available in the source + * text. + * Note: paste from word is not affected by this configuration. + * @name CKEDITOR.config.forcePasteAsPlainText + * @type Boolean + * @default false + * @example + * config.forcePasteAsPlainText = true; + */