Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在特定对象的树状视图中隐藏“创建”按钮。因为此对象的所有字段都是只读的_Javascript_Jquery_Openerp - Fatal编程技术网

Javascript 如何在特定对象的树状视图中隐藏“创建”按钮。因为此对象的所有字段都是只读的

Javascript 如何在特定对象的树状视图中隐藏“创建”按钮。因为此对象的所有字段都是只读的,javascript,jquery,openerp,Javascript,Jquery,Openerp,如何在特定对象的树状视图中隐藏“创建”按钮?由于此对象的所有字段都是只读的。此对象没有内置功能。编辑/删除/etc按钮始终处于适当位置,即使您无权访问它们后面的操作,但 无论如何,您可以进行javascript攻击,并执行$('button.oe_form_button_edit').hide()之类的操作。关于如何开始开发web插件。您可以在树状视图中这样写 <tree string="String" create="false"> 谢谢这取决于您使用的OpenERP版本,如

如何在特定对象的树状视图中隐藏“创建”按钮?由于此对象的所有字段都是只读的。

此对象没有内置功能。编辑/删除/etc按钮始终处于适当位置,即使您无权访问它们后面的操作,但


无论如何,您可以进行javascript攻击,并执行$('button.oe_form_button_edit').hide()之类的操作。关于如何开始开发web插件。

您可以在树状视图中这样写

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


谢谢

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

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

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

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

....
或
....
等
OpenERP 6.1及更早版本
没有隐藏这些按钮的选项,因此如果您想具体实现这一点,您需要自定义OpenERP客户端。simahawk的回答为web客户端6.1提供了一些起点,这可能是您想要定制的。

在v6上实现这一点的另一种方法是使用CSS隐藏它(这比@simahawk的建议更简单)。可以通过将CSS添加到包含树的表单视图xml中来实现这一点。例如:

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

.openerp button.oe_表单_按钮_编辑{显示:无}

我不知道这个解决方案是否正确,但我尝试将下面的代码放在核心的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;
    },
});
或者您可以参考此链接:

谢谢odony,这正是我所需要的,我也遇到过类似的问题,但使用这种解决方案,问题就不同了。问题是我需要从一个对象中隐藏“打印”按钮,该对象上存在要打印的报告,但它们是使用向导从窗体上的另一个按钮打印的。我想对特定对象隐藏“全局打印”按钮。@StackUP:很高兴提供帮助。如果答案适合您,StackOverflow的过程是将其标记为已接受:-)至于打印菜单中项目的可见性,它由“ir.tables”值中的操作绑定驱动。查找带有
model=''和key2='client\u print\u multi'
的条目。这些绑定主要是由模块数据文件中的
XML元素建立的。@odny:非常感谢。在哪里可以点击接受?如果你在“这篇文章对你有用吗?”上说马克“是的”,那么我已经做了。如果还有其他问题,请告诉我。@odony:我没有询问“打印”菜单下项目的可见性,我想从对象“A”中删除标准的“打印”按钮,因为我没有使用“打印”按钮打印任何东西,但它在这里可用,因为我使用向导在此对象上生成了一些pdf报告。单击不同的按钮打印。@StackUP:要接受答案,只需单击左侧答案分数下的复选标记图标。这里解释了整个过程:有趣的解决方案@timothy这在表单视图中有效,但如何嵌入到树视图中。它抛出了一个错误。很抱歉,我应该提到,您需要将html标记添加到包含树的表单视图中。但这不会从树视图中隐藏。@StackUP您将无法在树“页面”上使用此技巧。该场景中的另一种选择是将css硬编码为base.css样式(这不是一个好主意)。