繁体   English   中英

如何隐藏所有形式的odoo中的“创建和编辑”按钮以及每行中的“搜索更多”按钮

[英]How to hide “Create And Edit” button in all form odoo And also “Search More” Button in every line

我想以所有形式隐藏“创建和编辑”按钮

我也想以所有形式显示“搜索更多”按钮

所有模块的“隐藏和显示”按钮

目前我正在使用odoo 10。

让我们看看这个插件

https://apps.openerp.com/apps/modules/9.0/web_m2x_options/

我曾尝试使用该插件,但它根本不起作用。

在这种情况下有人可以帮助我吗? 无论是使用该插件,还是另一种简单的方法来完成我需要做的事情。

我会很感激任何答复。

提前致谢。

在这里,我将使用以下命令更改odoo的默认行为以显示创建和编辑:

       <field name="many2one_field" options="{'create':true, 'quick_create':true}"/>

现在在您的costum模块目录下定义一个javascript文件来更改many2one小部件

  you_costum_module_directory_name 
        --> static
            --> src 
                  --> js
                      --> costum_many2one_widget.js

javascript文件:

odoo.define('you_costum_module_directory_name.costum_many2one_widget' , function(require) {
    // I hope that you know how to add this to odoo backendassets

        // first we need core
        var core = require('web.core');
        // it's needed when we override get_search_result
        var data = require('web.data');

        // NOTE: i may forget to require some object in the code by mistake check it 

        // now we must get the many2one widget for form widget
        var FieldMany2One = core.form_widget_registry.get('many2one');

        // now we can override the method to change the behavor
        FieldMany2one.include({
            // if you want the search more to be always shown we must overrid
            // get_search_result and we need to require every thing we need first like data object
            // now to show search more always we must reimplement the 
            get_search_result: function(search_val) {
                var self = this;

                var dataset = new data.DataSet(this, this.field.relation, self.build_context());
                this.last_query = search_val;
                var exclusion_domain = [], ids_blacklist = this.get_search_blacklist();
                if (!_(ids_blacklist).isEmpty()) {
                    exclusion_domain.push(['id', 'not in', ids_blacklist]);
                }

                return this.orderer.add(dataset.name_search(
                        search_val, new data.CompoundDomain(self.build_domain(), exclusion_domain),
                        'ilike', this.limit + 1, self.build_context())).then(function(_data) {
                    self.last_search = _data;
                    // possible selections for the m2o
                    var values = _.map(_data, function(x) {
                        x[1] = x[1].split("\n")[0];
                        return {
                            label: _.str.escapeHTML(x[1].trim()) || data.noDisplayContent,
                            value: x[1],
                            name: x[1],
                            id: x[0],
                        };
                    });

                    // show search more if there is only one element at least 
                    // you can make it 0 if you want
                    if (values.length >= 1) {
                        values = values.slice(0, self.limit);
                        values.push({
                            label: _t("Search More..."),
                            action: function() {
                                dataset.name_search(search_val, self.build_domain(), 'ilike', 160).done(function(_data) {
                                    self._search_create_popup("search", _data);
                                });
                            },
                            classname: 'o_m2o_dropdown_option'
                        });
                    }
                    // if the user provide an option quick_create show quick create
                    var raw_result = _(_data.result).map(function(x) {return x[1];});
                    if (
                        search_val.length > 0 && 
                        !_.include(raw_result, search_val) &&
                        self.options && self.options.quick_create
                        ) {
                        self.can_create && values.push({
                            label: _.str.sprintf(_t('Create "<strong>%s</strong>"'),
                                $('<span />').text(search_val).html()),
                            action: function() {
                                self._quick_create(search_val);
                            },
                            classname: 'o_m2o_dropdown_option'
                        });
                    }
                    // if the user provide a create option show create and Edit option
                    if (self.options && self.options.create && self.can_create){
                        values.push({
                            label: _t("Create and Edit..."),
                            action: function() {
                                self._search_create_popup("form", undefined, self._create_context(search_val));
                            },
                            classname: 'o_m2o_dropdown_option'
                        });
                    }
                    else if (values.length === 0) {
                        values.push({
                            label: _t("No results to show..."),
                            action: function() {},
                            classname: 'o_m2o_dropdown_option'
                        });
                    }

                    return values;
                });
            }
        });


        // id don't know if this line is required or not 
        // but if we have to registre the widget again
        core.form_widget_registry.add('many2one', FieldMany2One);

    }); 

现在您需要将js文件添加到backendassets模板中

you_costum_module_directory_name 
            --> static
                --> src 
                      --> js
                          --> costum_many2one_widget.js

            --> xml
                --> widgets.xml

添加xml文件以清单:

<?xml version="1.0" encoding="utf-8" ?>
    <openerp> <!-- odoo in odoo 10.0 -->
        <data>

            <!--We need to load our js file to backend_assets-->
            <template id="assets_backend" name="many2one new edits " inherit_id="web.assets_backend">
                <xpath expr="." position="inside">
                    <script type="text/javascript" src="/you_costum_module_directory_name/static/src/js/costum_many2one_widget.js"></script>
                </xpath>
            </template>

        </data>
    </openerp>

在清单__openerp__.py添加xml文件:

您可以将Slection小部件带到您的字段:

<field name="your_one2many_field" widget="selection"/>

要隐藏“创建和编辑”,请使用:

<field name="your_one2many_field" options="{'no_create_edit':True}"/>

可以将其用于所有模块。 但是您需要在ir.config.parameter中创建一条记录。

配置->技术->参数->系统参数

要删除create_edit按钮,必须添加此信息。

密钥:“ web_m2x_options.create_edit”值:“ false”。

并且要在many2one和Many2many字段中添加更多搜索,您必须添加。

密钥:“ web_m2x_options.search_more”值:“ true”。

PS:您可以在此github页面上查看更多信息https://github.com/OCA/web/tree/9.0/web_m2x_options

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM