如何在特定对象的树状视图中隐藏“创建”按钮?因为这个对象只读取所有字段。
答案 0 :(得分:15)
这取决于您使用的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客户端。 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;
},
});