[IMP] web: menu.js: add hook for top menu change

This commit is contained in:
Aaron Bohy
2015-09-30 13:55:09 +02:00
parent 09bcbeefd2
commit ed4b15e854
+14 -10
View File
@@ -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();