How to add button in tree view header near “Create” and “Import” buttons Odoo 8?

守給你的承諾、 提交于 2019-12-21 21:08:47

问题


I can successfully add buttons in form view header or in tree view rows, but I want to add a custom button in the treeview header near "Create" and "Import" buttons in Odoo 8. How can I do this?


回答1:


I find the solution to my problem! I replace the create button if I use project.project model.

1) I create some js script (static/src/js/task_list.js) with click listener for my button :

 openerp.project = function (instance){
    var QWeb = openerp.web.qweb;
    _t = instance.web._t;
    var self = this;
openerp.web.ListView.include({
    load_list: function(data) {
        this._super(data);
        if (this.$buttons) {
            this.$buttons.find('.oe_new_button').off().click(this.proxy('do_the_job')) ;
            console.log('Save & Close button method call...');
        }
    },
    do_the_job: function () {
        this.do_action({
            type: "ir.actions.act_window",
            name: "Создание нового проекта",
            res_model: "project.project",
            views: [[false,'form']],
            target: 'current',
            view_type : 'form',
            view_mode : 'form',
            flags: {'form': {'action_buttons': true, 'options': {'mode': 'edit'}}}
        });
        return {
                'type': 'ir.actions.client',
                'tag': 'reload',
        }
}
});
}

2) After that, I create static/src/xml/project_button.xml with a template, which replaces the "Create" button if I use project.project model

    <?xml version="1.0" encoding="UTF-8"?>
<template id="template" xml:space="preserve">
    <t t-extend="ListView.buttons">
                <t t-jquery="button.oe_list_add" t-operation="replace">
                        <button t-if="widget.model == 'project.project'"  class="oe_button oe_new_button oe_highlight" type="button">Создать новый проект</button>
                        <button t-if="widget.model != 'project.project'" class="oe_button oe_list_add oe_highlight" type="button">Создать</button>
        </t>
    </t>
</template>

3) After that, I add my js script in web.asset_backend (I create file project/views/project.xml)

    <?xml version="1.0" encoding="utf-8"?>
<!-- vim:fdn=3:
-->
<openerp>
    <data>
        <template id="assets_backend" name="project assets" inherit_id="web.assets_backend">
            <xpath expr="." position="inside">
                <script type="text/javascript" src="/project/static/src/js/task_list.js"></script>
            </xpath>
        </template>
    </data>
</openerp>

4) And finally I add in project/__openerp__.py section 'qweb' for static/src/xml/project_button.xml, 'js' for static/src/js/task_list.js and place file views/project.xml in 'data' section.

    'data': [
        'security/project_security.xml',
         ...
        'views/project.xml',
    ],
    'qweb': ['static/src/xml/project_button.xml',],
    ...
    'js': 'static/src/js/task_list.js',

And my button successful replaces old button in project.project model.



来源:https://stackoverflow.com/questions/42694793/how-to-add-button-in-tree-view-header-near-create-and-import-buttons-odoo-8

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!