mirror of https://github.com/OCA/web.git
Merge pull request #2616 from Tecnativa/10.0-fix-web_responsive-menu_search-visibility
[10.0][FIX] web_responsive: Filter properly menus on AppDrawer search10.0
commit
bdc2c8bf20
|
@ -1 +1,2 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import models
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from . import ir_ui_menu
|
|
@ -0,0 +1,31 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from odoo import api, models
|
||||||
|
|
||||||
|
|
||||||
|
class IrUiMenu(models.Model):
|
||||||
|
_inherit = 'ir.ui.menu'
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def search(self, args, offset=0, limit=None, order=None, count=False):
|
||||||
|
"""The filtering that is done on the menus by upstream doesn't take into account
|
||||||
|
the visibility of their ancestors to decide if the menu is visible or not, which
|
||||||
|
is needed for the AppDrawer menu search.
|
||||||
|
"""
|
||||||
|
menus = super(IrUiMenu, self).search(
|
||||||
|
args, offset=offset, limit=limit, order=order, count=count
|
||||||
|
)
|
||||||
|
if menus and not count and self.env.context.get("responsive_search"):
|
||||||
|
accesible_menus = self.env["ir.ui.menu"]
|
||||||
|
full_menus = self.with_context(responsive_search=False).search([])
|
||||||
|
for menu in menus:
|
||||||
|
add = True
|
||||||
|
parent_menu = menu.parent_id
|
||||||
|
while parent_menu:
|
||||||
|
if parent_menu not in full_menus:
|
||||||
|
add = False
|
||||||
|
break
|
||||||
|
parent_menu = parent_menu.parent_id
|
||||||
|
if add:
|
||||||
|
accesible_menus += menu
|
||||||
|
menus = accesible_menus
|
||||||
|
return menus
|
|
@ -314,6 +314,7 @@ odoo.define('web_responsive', function(require) {
|
||||||
this.$searchInput = $('#appDrawerSearchInput').focus();
|
this.$searchInput = $('#appDrawerSearchInput').focus();
|
||||||
var Menus = new DataModel('ir.ui.menu');
|
var Menus = new DataModel('ir.ui.menu');
|
||||||
Menus.query(['action', 'display_name', 'id'])
|
Menus.query(['action', 'display_name', 'id'])
|
||||||
|
.context({"responsive_search": true})
|
||||||
.filter([['name', 'ilike', this.$searchInput.val()],
|
.filter([['name', 'ilike', this.$searchInput.val()],
|
||||||
['action', '!=', false]
|
['action', '!=', false]
|
||||||
])
|
])
|
||||||
|
|
Loading…
Reference in New Issue