Я создаю плагин CKeditor для интеграции плагина DokuWiki Encrypted Passwords с CKEditor, предоставляемым через плагин CKGEdit
По сути, все, что он делает, это добавляет кнопка, которая, когда вы щелкаете по ней с выделенным текстом, заменяет higlighted text
на <decrypt>U2FsdGVkX19N38+3QA5dTlRVRwzVaEW4E1TlehveNVw=</decrypt>
, при просмотре страницы она превращается в кликабельную ссылку, которая запрашивает ключ дешифрования, а затем показывает текст.
у меня проблема, если строка шифрования слишком длинная, то CKEditor вставляет <br/>
s, когда это необходимо. Они, в свою очередь, преобразуются в //
в файле page.txt, что приводит к прерыванию дешифрования, поскольку текст шифрования больше не совпадает.
Я попытался обернуть блок расшифровки в теги pre:
<code><pre>
<decrypt>U2FsdGVkX19GucuXTn9YK063K5rubz3OVIUuanWcx7Vm35qjvIulEUqOrQeS8RRD
J0/3HlQXJHSMpFcqFkKE8B3GuyXLYgEqSNBeCbI0levJZpIxA/4daa12kpgM3Y4s
kZh6ABQ3VYs0J3CSce5XFdoKo5C8E1t8R6OU0DAyjBc=</decrypt>
, который работал, так как больше не было разрывов строк, вставленных автоматически, но заставляет блок расшифровки отображать как обычный текст на странице.
Вот соответствующий код:
CKEDITOR.plugins.add('dokuencrypt', {
icons: 'dokuencrypt',
init: function (editor) {
editor.addCommand('encryptSelected', {
exec: function (editor) {
handleEncrypt(editor);
}
});
editor.ui.addButton('dokuencrypt', {
label: 'Encrypt text',
command: 'encryptSelected',
});
}
});
// handles encrypt and decrypt text
function handleEncrypt(editor) {
var sample = sample = editor.getSelection().getSelectedText();
// right here is where I want to prevent the new lines from being inserted
editor.insertText('<decrypt>' + GibberishAES.enc(sample, passElt.value).replace(/\n$|\r$|\r\n$|<br\>$/g, '') + '</decrypt>')
}
Одна вещь, которую я попробовал, это добавить событие сохранения, которое заменяет все экземпляры <br />
и //
ничем, но потому что я ' Я делаю это через плагин CKGedit, он не вызывает обычного сохранения CKEditor.
Как вы можете видеть, я пытался заменить при вставке текста, но в этот момент разрывы строк не вводились. .replace(/\n$|\r$|\r\n$|<br \>$/g, '')
Я рассмотрел другие обходные пути, такие как добавление триггера в Dokuwiki, который при сохранении новой страницы заменяет текст, но я бы скорее исправил это там, где проблема действительно есть.
Резюме: как я могу предотвратить автоматический ввод новых строк в CKEditor