summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/widgets
diff options
context:
space:
mode:
authorMartin Geubelle <mge@odoo.com>2016-08-24 15:16:45 +0200
committerGéry Debongnie <ged@odoo.com>2016-09-28 16:55:51 +0200
commitb2aafa23b822e99b4c252cd6a3af0e4e1c246ba5 (patch)
tree3f413906fa9cfdb1695c66c33648ab58656932cc /addons/web/static/src/js/widgets
parent037b7063e27164adf9ff680c34f8f9baa3baaf65 (diff)
[IMP] web: trigger event when changing action
This comportement was added in the DebugManager to trigger an event. As this event could be useful in other situations (e.g. studio), we trigger the event directly in the ActionManager. By default, the WebClient does not use this event but an handler is added to be overwritten. This handler is overwritten in some widgets (DebugManager, Studio, etc.) that requires the Systray items instances so we add them in ´widgets´ in the Systray Menu. As the module dashboard uses multiple ActionManager, the event bubbling should be avoided in this case.
Diffstat (limited to 'addons/web/static/src/js/widgets')
-rw-r--r--addons/web/static/src/js/widgets/debug_manager.js27
-rw-r--r--addons/web/static/src/js/widgets/systray_menu.js2
2 files changed, 8 insertions, 21 deletions
diff --git a/addons/web/static/src/js/widgets/debug_manager.js b/addons/web/static/src/js/widgets/debug_manager.js
index f191eb739ea..f7ddd008e1d 100644
--- a/addons/web/static/src/js/widgets/debug_manager.js
+++ b/addons/web/static/src/js/widgets/debug_manager.js
@@ -48,7 +48,6 @@ var DebugManager = Widget.extend({
}
},
start: function () {
- core.bus.on('current_action_updated', this, this.update.bind(this, 'action'));
core.bus.on('rpc:result', this, function (req, resp) {
this._debug_events(resp.debug);
});
@@ -647,26 +646,12 @@ if (core.debug) {
SystrayMenu.Items.push(DebugManager);
WebClient.include({
- start: function() {
- var self = this;
- return this._super().then(function () {
- // Override push_action and select_action so that it triggers
- // an event each time a new action is pushed.
- // The DebugManager listens to this event to keep itself up-to-date
- var push_action = self.action_manager.push_action;
- self.action_manager.push_action = function(widget, descr) {
- return push_action.apply(self.action_manager, arguments).then(function () {
- core.bus.trigger('current_action_updated', descr, widget);
- });
- };
- var select_action = self.action_manager.select_action;
- self.action_manager.select_action = function() {
- return select_action.apply(self.action_manager, arguments).then(function () {
- var action = self.action_manager.get_inner_action();
- core.bus.trigger('current_action_updated', action.action_descr, action.widget);
- });
- };
- });
+ current_action_updated: function(action) {
+ this._super.apply(this, arguments);
+ var action_descr = action && action.action_descr;
+ var action_widget = action && action.widget;
+ var debug_manager = _.find(this.systray_menu.widgets, function(item) {return item instanceof DebugManager; });
+ debug_manager.update('action', action_descr, action_widget);
},
});
diff --git a/addons/web/static/src/js/widgets/systray_menu.js b/addons/web/static/src/js/widgets/systray_menu.js
index 025d8c83970..0d0e18476b0 100644
--- a/addons/web/static/src/js/widgets/systray_menu.js
+++ b/addons/web/static/src/js/widgets/systray_menu.js
@@ -11,6 +11,7 @@ var SystrayMenu = Widget.extend({
init: function(parent) {
this._super(parent);
this.items = [];
+ this.widgets = [];
this.load = $.Deferred();
},
start: function() {
@@ -29,6 +30,7 @@ var SystrayMenu = Widget.extend({
});
_.each(SystrayMenu.Items, function(widgetCls) {
var cur_systray_item = new widgetCls(self);
+ self.widgets.push(cur_systray_item);
self.items.push(cur_systray_item.prependTo(self.$el));
});
},