diff options
| author | Aaron Bohy <aab@odoo.com> | 2015-09-29 10:03:10 +0200 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2015-09-30 13:55:09 +0200 |
| commit | ed4b15e854be92ee280943a76d14b7170a311342 (patch) | |
| tree | a9f044d499e2737b6567fa10d460fc77e703b476 /addons/web/static/src/js/menu.js | |
| parent | 09bcbeefd26689549fa2512c313669ebe32a4ac7 (diff) | |
[IMP] web: menu.js: add hook for top menu change
Diffstat (limited to 'addons/web/static/src/js/menu.js')
| -rw-r--r-- | addons/web/static/src/js/menu.js | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/addons/web/static/src/js/menu.js b/addons/web/static/src/js/menu.js index 7fbfc338565..4d8671595bd 100644 --- a/addons/web/static/src/js/menu.js +++ b/addons/web/static/src/js/menu.js @@ -22,6 +22,7 @@ var Menu = Widget.extend({ } }); core.bus.on('do_reload_needaction', this, this.do_reload_needaction); + core.bus.on('change_menu_section', this, this.on_change_top_menu); }, start: function() { this._super.apply(this, arguments); @@ -35,7 +36,13 @@ var Menu = Widget.extend({ var self = this; this.$secondary_menus = this.$el.parents().find('.oe_secondary_menus_container'); this.$secondary_menus.on('click', 'a[data-menu]', this.on_menu_click); - this.$el.on('click', 'a[data-menu]', this.on_top_menu_click); + this.$el.on('click', 'a[data-menu]', function (event) { + event.preventDefault(); + var menu_id = $(event.currentTarget).data('menu'); + var needaction = $(event.target).is('div#menu_counter'); + core.bus.trigger('change_menu_section', menu_id, needaction); + }); + // Hide second level submenus this.$secondary_menus.find('.oe_menu_toggler').siblings('.oe_secondary_submenu').hide(); if (self.current_menu) { @@ -135,7 +142,6 @@ var Menu = Widget.extend({ var $clicked_menu, $sub_menu, $main_menu; $clicked_menu = this.$el.add(this.$secondary_menus).find('a[data-menu=' + id + ']'); this.trigger('open_menu', id, $clicked_menu); - core.bus.trigger('change_menu_section', $clicked_menu.parents('.oe_secondary_menu').data('menu-parent') || 0); if (this.$secondary_menus.has($clicked_menu).length) { $sub_menu = $clicked_menu.parents('.oe_secondary_menu'); @@ -230,17 +236,15 @@ var Menu = Widget.extend({ } }, /** - * Jquery event handler for menu click + * Change the current top menu * - * @param {Event} ev the jquery event + * @param {int} [menu_id] the top menu id + * @param {boolean} [needaction] true to redirect to menu's needactions */ - on_top_menu_click: function(ev) { - ev.preventDefault(); + on_change_top_menu: function(menu_id, needaction) { var self = this; - var id = $(ev.currentTarget).data('menu'); - // Fetch the menu leaves ids in order to check if they need a 'needaction' - var $secondary_menu = this.$el.parents().find('.oe_secondary_menu[data-menu-parent=' + id + ']'); + var $secondary_menu = this.$el.parents().find('.oe_secondary_menu[data-menu-parent=' + menu_id + ']'); var $menu_leaves = $secondary_menu.children().find('.oe_menu_leaf'); var menu_ids = _.map($menu_leaves, function (leave) {return parseInt($(leave).attr('data-menu'), 10);}); @@ -249,7 +253,7 @@ var Menu = Widget.extend({ }); this.$el.parents().find(".oe_secondary_menus_container").scrollTop(0,0); - this.on_menu_click(ev); + this.menu_click(menu_id, needaction); }, on_menu_click: function(ev) { ev.preventDefault(); |
