如何在特定对象的树视图中隐藏“创建”按钮。因为这个对象只读取所有字段

时间:2013-02-05 13:19:36

标签: javascript jquery openerp

如何在特定对象的树状视图中隐藏“创建”按钮?因为这个对象只读取所有字段。

5 个答案:

答案 0 :(得分:15)

这取决于您使用的OpenERP版本,如果您想要更具体的答案,请提及它。如果你问这个问题,你可能还没有使用7.0,但是知道它可能会有用。

OpenERP 7.0

从OpenERP 7.0开始,系统将自动为您执行以下每项操作:创建,编辑,删除:如果当前用户无权访问(基于访问权限配置) )相应的标志将被添加到视图定义的根节点,有效地隐藏UI中的选项。 这些标志分别对应于以下访问权限:createwriteunlink

正如user1576199所提到的,此标志也可以在视图定义中手动设置,但只有在访问权限与您要显示的选项不对应时才需要。你可以这种方式,任意组合:

<tree create="false" delete="false">
....
</tree>
or
<kanban create="false" edit="false">
....
</kanban>
etc..

OpenERP 6.1及更早版本

没有隐藏这些按钮的选项,因此如果您想要专门实现这一点,则需要自定义OpenERP客户端。 simahawk的回答为您提供了一些Web客户端6.1的起点,这可能就是您想要自定义的内容。

答案 1 :(得分:0)

没有内置功能。编辑/删除/等按钮总是在适当的位置,即使您无法访问其背后的操作,也有no check on permissions

无论如何,你可以做你的javascript hack并做一些像$('button.oe_form_button_edit')。hide()或者其他什么。 here are some tips关于如何开始开发网络插件。

答案 2 :(得分:0)

你可以在树视图上这样写吗

<tree string="String" create="false">

由于

答案 3 :(得分:0)

在v6上执行此操作的另一种方法是使用CSS隐藏它(这比@ simahawk的建议更容易)。您可以通过将CSS添加到包含树的表单视图xml来完成此操作。例如:

<html>
  <style>
    .openerp button.oe_form_button_edit { display:none }
  </style>
</html>
<tree ...

您可以根据需要对删除和编辑按钮执行相同操作。

有点破解......我喜欢v7功能 - 迫不及待要升级:)

答案 4 :(得分:0)

我不知道这个解决方案是否正确,但我尝试将此代码放在核心的javascript中,并且它实际上有效。

openerp.web.ListView.include({

    start: function() {
        var self = this;
        var ret = this._super.apply(this, arguments);
        var res_model = this.dataset.model;
        if ($.inArray(res_model, MODELS_TO_HIDE) != -1) {
            self.options.addable = false; /* for create button */
            self.options.deletable= false; /* for delete button */
        };
        return ret;
    },
});

或者你可以参考这个链接: https://github.com/kdeldycke/kevin-deldycke-blog/blob/master/content/posts/openerp-61-web-javascript-hacks-hide-buttons.md