5

如何从特定对象的树视图中隐藏创建按钮?因为这个对象的所有字段都是只读的。

4

5 回答 5

15

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

OpenERP 7.0

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

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

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

OpenERP 6.1 及更早版本

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

于 2013-02-06T11:54:14.387 回答
0

没有内置功能。即使您无权访问它们背后的操作,编辑/删除/等按钮也始终存在,也不会检查权限

无论如何,您可以进行 javascript hack 并执行类似 $('button.oe_form_button_edit').hide() 之类的操作。这里有一些关于如何开始开发网络插件的提示。

于 2013-02-05T14:02:09.377 回答
0

你可以在树视图上这样写

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

谢谢

于 2013-02-06T06:26:54.690 回答
0

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

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

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

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

于 2013-05-16T12:23:03.393 回答
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

于 2013-08-23T02:20:04.860 回答