summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/menu.js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2015-09-29 10:03:10 +0200
committerAaron Bohy <aab@odoo.com>2015-09-30 13:55:09 +0200
commited4b15e854be92ee280943a76d14b7170a311342 (patch)
treea9f044d499e2737b6567fa10d460fc77e703b476 /addons/web/static/src/js/menu.js
parent09bcbeefd26689549fa2512c313669ebe32a4ac7 (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.js24
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();