1

在 Odoo 9 中有一个所见即所得的编辑器,它可以<p>在任何空行上添加标签,并用它们包围几乎每个填充的行。这完全破坏了模板。因此,如果您有一个不错的电子邮件模板,例如用于发票电子邮件,即使您在发送前没有手动编辑任何内容,该编辑器也会对其进行清理。

我们如何禁用所见即所得编辑器的这种行为?

编辑
有问题的功能是text_to_html并且可以在addons/web_editor/static/src/js/backend.js. 您可以通过简单地将其剥离为如下内容来禁用其非常过分的行为:

text_to_html: function (text) {
        var value = text || "";
        return value;
    }

但是,在核心文件中这样做会在下次更新时覆盖更改。所以我现在的问题是,从自定义模块覆盖此功能的正确方法是什么。我熟悉基本的 Odoo 模块以添加例如新模型,但我不确定如何覆盖由定义的 Odoo JavaScript,odoo.define到目前为止还没有找到关于此的文档。

4

1 回答 1

0

派对有点晚了,但如果它对某人有帮助......

首先,它已经在 ODOO GitHub 存储库中修复,下面使用的代码来自那里。如果您可以更新 ODOO。如果不能,您应该创建新模块并将其安装在 ODOO 中。如果您不知道如何参考文档

将包含此内容的 JavaScript 文件放入模块中:

odoo.define('web_editor_sanitize_fix.backend', function (require) {
    'use strict';

    var core = require('web.core');
    var backend = require('web_editor.backend');

    backend.FieldTextHtmlSimple.include({
        text_to_html: function (text) {
            var value = text || "";
            try {
                $(text)[0].innerHTML;
                return text;
            } catch (e) {
                if (value.match(/^\s*$/)) {
                    value = '<p><br/></p>';
                } else {
                    value = "<p>"+value.split(/<br\/?>/).join("<br/></p><p>")+"</p>";
                    value = value.replace(/<p><\/p>/g, '').replace('<p><p>', '<p>').replace('<p><p ', '<p ').replace('</p></p>', '</p>');
                }
            }
            return value;
        }
        });

});

我还没有测试过代码,但它应该可以工作。

于 2017-06-14T10:09:55.037 回答