Loading

Odoo Website 替换 Summernote 为第三方富文本编辑器

随着用odoo的人越来越多,奇葩的需求也是越来越多。。。。

这不,有同学就想替换掉website forum里边的summernote控件,花了点时间研究了一下,先说结论:替换是可行的。

 

先上替换之后的图,这里替换的是kindeditor:

 

 

要替换成别的,也是可以的,只不过需要使用odoo的前端开发规则,本模块计划做成一个demo供参考。

替换步骤:

1. 首先将kindeditor的源文件引入到新模块中

2. 将原来的summernote空间隐藏掉,并用kindeditor替代:

$('textarea.load_editor').each(function () {
        var $textarea = $(this);
        var $form = $textarea.closest('form');

        $('.note-editor').hide();
        KindEditor.ready(function(K){            
            window.editor=K.create($textarea,{
                themeType:'default',
                uploadJson : '/filemanager',
                fileManagerJson : '/filemanager',
                allowFileManager : true,
            })
        });

        $form.on('click', 'button, .a-submit', function () {
            window.editor.sync();
            window.editor.html($textarea.val());
        });
    });

3. 你会发现虽然引用了新的控件,但是样式在提交后都消失不见了。。。。

解决方法:设置content字段的strip_style属性为false

4. 最后我们来解决图片上传的问题:

@http.route('/filemanager',type='http',auth="public",website=True,csrf=False)
    def _store_file(self,*args,**kwargs):
        img = kwargs['imgFile']
        path = os.path.abspath(os.path.realpath(__file__)).split('controller')[0]+'static/files'
        #os.path.abspath(join(os.getcwd(),'/web_kindeditor/static/files'))
        filepath = path+'/'+img.filename
        img.save(filepath)
        url = request.env['ir.config_parameter'].get_param('web.base.url')+"/web_kindeditor/static/files/"+img.filename
        return json.dumps({'error':0,'url':url})

5. 9.0 以后web url访问会有csrf验证的问题,这就是另外一回事儿了,有空再说。

Over。

模块共享地址依旧见群公告。

posted @ 2016-06-28 18:25  青岛欧姆网络科技  阅读(2277)  评论(0编辑  收藏  举报