django-tinymce HTMLField - 在admin中粘贴为纯文本

时间:2013-01-24 18:57:18

标签: django tinymce django-tinymce

我已经在我的应用中安装了django-tinymce并使用HTMLField

我正在尝试在django admin中生成某种“粘贴为纯文本”功能。我想要从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 个答案:

答案 0 :(得分:1)

您可能需要考虑使用特殊功能的清晰方法。 看看这个SO问题:TinyMCE Paste As Plain Text

答案 1 :(得分:1)

真气! - 出于某种原因,我在行上都应用了单引号和双引号 - '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上的paste plugin documentationThariama's answer都非常有用。