У меня установлен django-tinymce и различные модели в моем приложении с расширением HTMLField
.
Я пытаюсь создать какую-то функцию «вставить как обычный текст» в администраторе django. Я хочу, чтобы форматирование из MS Word, тегов HTML и почти всего остального было удалено, когда пользователи делают ctrl + v / cmd + v / правый клик > вставить и т. д.
Я вижу, что многие люди говорят об этом, но я не могу заставить что-либо работать. Будучи django-tinymce, я делаю все это в TINYMCE_DEFAULT_CONFIG
в settings.py
.
Я думал, что у меня это сработало - я переопределил базовый шаблон администратора, чтобы включить файл js со следующей функцией (я не могу вспомнить, кому приписать эту функцию - возможно, кто-то на SO) -
function tinymcePastePlainText() {
var ed = tinyMCE.get(0);
ed.pasteAsPlainText = true;
//adding handlers crossbrowser
if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
ed.onKeyDown.add(function (ed, e) {
if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
ed.pasteAsPlainText = true;
});
} else {
ed.onPaste.addToTop(function (ed, e) {
ed.pasteAsPlainText = true;
});
}
}
Затем настройте мою конфигурацию по умолчанию -
TINYMCE_DEFAULT_CONFIG = {
'plugins': "'paste'",
'paste_text_sticky': "true",
'paste_retain_style_properties': "",
'oninit': "tinymcePastePlainText",
#...Further config
}
Это, казалось, делало то, что я хотел в прошлый раз, когда я смотрел, но теперь это перестало работать - отладка в браузере, кажется, показывает, что функция tinymcePastePlainText()
никогда не запускается (хотя она загружена).
Я пробовал различные другие методы, такие как простая настройка моей конфигурации на -
TINYMCE_DEFAULT_CONFIG = {
'plugins': "'paste'",
'paste_auto_cleanup_on_paste': 'true',
'paste_remove_styles': 'true',
'paste_remove_styles_if_webkit': 'true',
'paste_strip_class_attributes': 'true',
#....further config
}
(это вроде ничего не изменило). Или
TINYMCE_DEFAULT_CONFIG = {
'plugins': "'paste'",
'setup': "function(ed) { ed.onInit.add(function(ed) {ed.pasteAsPlainText = true;});",
#....further config
}
Я попытался загрузить вышеуказанную функцию из отдельного js-файла, а затем включить имя функции в свою конфигурацию - 'setup': 'pasteAsPlainTextFuncion()'
, но это тоже не сработало.
Кажется, я потратил на это целую вечность, и на самом деле я не добился никакого прогресса - я понятия не имею, почему моя функция вызывалась, а теперь нет - инструмент отладки браузера не обнаруживает никаких ошибок.