diff --git a/common/js/plugins/ckeditor/ckeditor/plugins/rx_upload/plugin.js b/common/js/plugins/ckeditor/ckeditor/plugins/rx_paste/plugin.js similarity index 81% rename from common/js/plugins/ckeditor/ckeditor/plugins/rx_upload/plugin.js rename to common/js/plugins/ckeditor/ckeditor/plugins/rx_paste/plugin.js index 7af7b291d..2cd92f873 100644 --- a/common/js/plugins/ckeditor/ckeditor/plugins/rx_upload/plugin.js +++ b/common/js/plugins/ckeditor/ckeditor/plugins/rx_paste/plugin.js @@ -3,7 +3,7 @@ /** * Upload plugin for Rhymix */ -CKEDITOR.plugins.add('rx_upload', { +CKEDITOR.plugins.add('rx_paste', { init: function(editor) { @@ -20,20 +20,24 @@ CKEDITOR.plugins.add('rx_upload', { */ editor.on('paste', function(event) { - // Check if the pasted data contains any files. const method = event.data.method; + const dataValue = event.data.dataValue; const dataTransfer = event.data.dataTransfer; - const files_count = dataTransfer.getFilesCount(); - if (!files_count) { - return; + const filesCount = dataTransfer.getFilesCount(); + + // Replace iframe code in pasted text. + if (method === 'paste' && dataValue && dataValue.replace) { + event.data.dataValue = dataValue.replace(/<(iframe|object)\s[^<>]+<\/\1>/g, function(m) { + return String(m).unescape() + '
'; + }); } - // Prevent the default plugin from touching these files. - event.stop(); - - // Read and upload each file. - for (let i = 0; i < files_count; i++) { - uploadFile(dataTransfer.getFile(i)); + // Check if the pasted data contains any files. + if (filesCount) { + event.stop(); + for (let i = 0; i < filesCount; i++) { + uploadFile(dataTransfer.getFile(i)); + } } }); diff --git a/modules/editor/skins/ckeditor/config.blade.php b/modules/editor/skins/ckeditor/config.blade.php index 4db6ff2c8..31766356a 100644 --- a/modules/editor/skins/ckeditor/config.blade.php +++ b/modules/editor/skins/ckeditor/config.blade.php @@ -15,7 +15,9 @@ $ckconfig->ios_patch = (bool)preg_match('/i(Phone|Pad|Pod)/', $_SERVER['HTTP_USE // Plugin configuration $ckconfig->add_plugins = $editor_additional_plugins ?? []; $ckconfig->remove_plugins = $editor_remove_plugins ?? []; -$ckconfig->add_plugins[] = 'rx_upload'; +if (!in_array('clipboard', $ckconfig->remove_plugins)) { + $ckconfig->add_plugins[] = 'rx_paste'; +} if ($ckconfig->ios_patch) { $ckconfig->add_plugins[] = 'divarea'; $ckconfig->add_plugins[] = 'ios_enterkey'; diff --git a/modules/editor/tpl/js/editor.app.js b/modules/editor/tpl/js/editor.app.js index b99fe5de9..a0d1a0769 100644 --- a/modules/editor/tpl/js/editor.app.js +++ b/modules/editor/tpl/js/editor.app.js @@ -162,14 +162,6 @@ function getAutoSavedSrl(ret_obj) { } }); - instance.on('paste', function(e) { - if (e.data && e.data.dataValue && e.data.dataValue.replace) { - e.data.dataValue = e.data.dataValue.replace(/<(iframe|object)\s[^<>]+<\/\1>/g, function(m) { - return String(m).unescape() + '
'; - }); - } - }); - $containerEl.data('cke_instance', instance); window.editorRelKeys[data.editorSequence] = {};