在实际应用Odoo(OpenERP)的过程中, 会有对某用户组隐藏菜单的需求.
只对某一用户组隐藏菜单,可使用如下方式:
隐藏消息菜单实践记录:
在源码source\addons\mail\mail_thread_view.xml中,消息主菜单的定义如下:
此路不通,只能曲线救国. 先新建一个用户组, 并指定消息菜单只对其可见. 代码如下所示:
只对某一用户组隐藏菜单,可使用如下方式:
<record id="original_module.menu_id" model="ir.ui.menu">
<field name="groups_id" eval="[(3,ref('my_new_group_id'))]"/>
</record>
隐藏消息菜单实践记录:
在源码source\addons\mail\mail_thread_view.xml中,消息主菜单的定义如下:
<!-- Top menu item -->
<menuitem name="Messaging"
id="mail.mail_feeds_main"
groups="base.group_user"
sequence="10"/>
由此可见, 消息主菜单对base.group_user用户组可见, 这是一个通用的用户组, Odoo系统中所有用户默认属于此组, 因此我们使用如下代码实现消息菜单的隐藏:
<record id="mail.mail_feeds_main" model="ir.ui.menu">
<field name="groups_id" eval="[(3, ref('base.group_user'))]"/>
</record>
但测试发现
这种方法没有生效! 目前尚不清楚具体原因.
此路不通,只能曲线救国. 先新建一个用户组, 并指定消息菜单只对其可见. 代码如下所示:
<!-- 新建用户组hideme -->
<record id="hideme" model="res.groups">
<field name="category_id" ref="base.module_category_hidden" />
<field name="name">hide me</field>
</record>
<!-- 指定只有hidme用户组才能看到消息菜单 -->
<record id="mail.mail_feeds_main" model="ir.ui.menu">
<field name="groups_id" eval="[(6, 0, [ref('hideme')])]"/>
</record>
这种方式会波及到之前所有能看到此菜单的用户组, 如想让某个用户组仍能看到这个菜单, 需要改动代码,示例如下:
<!-- 指定只有hidme用户组才能看到消息菜单 -->
<record id="mail.mail_feeds_main" model="ir.ui.menu">
<field name="groups_id" eval="[(6, 0, [ref('hideme')])]"/>
<!-- 允许销售/查看自己的线索用户组操作消息菜单 -->
<field name="groups_id" eval="[(4, ref('base.group_sale_salesman'))]"/>
</record>