Rename rx_upload CKEditor plugin to rx_paste, and move paste handler from editor.app.js to it

This commit is contained in:
Kijin Sung 2024-04-30 22:18:11 +09:00
parent 3e5951174e
commit e15c913b21
3 changed files with 18 additions and 20 deletions

View file

@ -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(/&lt;(iframe|object)\s[^<>]+&lt;\/\1&gt;/g, function(m) {
return String(m).unescape() + '<p>&nbsp;</p>';
});
}
// 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));
}
}
});

View file

@ -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';

View file

@ -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(/&lt;(iframe|object)\s[^<>]+&lt;\/\1&gt;/g, function(m) {
return String(m).unescape() + '<p>&nbsp;</p>';
});
}
});
$containerEl.data('cke_instance', instance);
window.editorRelKeys[data.editorSequence] = {};