django-tinymce HTMLField - вставлять как обычный текст в админ

У меня установлена ​​программа 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()' но это тоже не сработало.

Кажется, я потратил на это целую вечность, и на самом деле я не добиваюсь никакого прогресса - я понятия не имею, почему вызывается моя функция, а сейчас нет - инструмент отладки браузера не обнаруживает никаких ошибок.

2 ответа

Решение

Бешенство! - По какой-то причине я применил одинарные и двойные кавычки в строке - 'plugins': "'paste'",, Плагин вставки не загружался. Я не знаю как, почему или когда я это сделал.

Для тех, кто пытается сделать то же самое (я использую django 1.4.3 и django-tinymce 1.5.1b2). Мне удалось получить некоторую базовую функциональность "вставка в виде простого текста" (по умолчанию) без использования обратного вызова javascript где-либо. Я просто использовал следующую настройку -

TINYMCE_DEFAULT_CONFIG = {

'plugins': "paste",

'paste_remove_styles': 'true',
'paste_remove_styles_if_webkit': 'true',
'paste_strip_class_attributes': 'all',

#... further config

}

Я нашел документацию плагина вставки и ответ Тариама на SO, оба очень информативными.

Вы можете рассмотреть возможность использования четкого подхода с использованием специализированной функции. Посмотрите на этот SO-вопрос: TinyMCE Paste As Plain Text

Другие вопросы по тегам