diff options
| author | Aaron Bohy <aab@odoo.com> | 2017-11-17 13:14:02 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2018-01-16 20:49:19 +0100 |
| commit | 32b8cec5361174c92c45a4975d4e02f1fb448aa2 (patch) | |
| tree | 110bd6986c2da1ed5047002b7ea40c91ea9fa5ed /addons/web/static/src/js/chrome/control_panel.js | |
| parent | 9bee25a9df65f657fef0f2f32a7ad823fdc7d4e1 (diff) | |
[REF] web,*: ActionManager/ViewManager refactoring
This rev. is the first part (out of 3) of the refactoring of the
ActionManager and ViewManager layer of the webclient.
The main changes are:
- there is no ViewManager anymore, its work is now handled by the
ActionManager itself, but isolated in a specific file ; this
eases a lot of things, as the breadcrumbs handling for example.
- the ActionManager code is converted to the new coding principles
and guidelines ; mainly, children widgets communicate with it by
triggering events up, and not by function calls anymore.
- the ActionManager layer is now testable, and a lot of tests have
already been written.
- the code in other addons has been adapted consequently.
What's coming next:
- introduce the 'AbstractAction' Widget, and make client actions
and view controllers inherit from it ; this widget will
implement a common API that could be used uniformly by the
ActionManager (e.g. restore(), canBeLeft(), renderButtons(),
getTitle()...).
- move the ControlPanel handling from the ActionManager to the
AbstractAction.
Diffstat (limited to 'addons/web/static/src/js/chrome/control_panel.js')
| -rw-r--r-- | addons/web/static/src/js/chrome/control_panel.js | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/addons/web/static/src/js/chrome/control_panel.js b/addons/web/static/src/js/chrome/control_panel.js index 98ce7814b7a..3f85d32d2b6 100644 --- a/addons/web/static/src/js/chrome/control_panel.js +++ b/addons/web/static/src/js/chrome/control_panel.js @@ -31,7 +31,6 @@ odoo.define('web.ControlPanelMixin', function (require) { * }, * _updateControlPanel: function () { * this.update_control_panel({ - * breadcrumbs: this.action_manager.get_breadcrumbs(), * cp_content: { * $buttons: this.$buttons, * }, @@ -51,7 +50,9 @@ var ControlPanelMixin = { * @param {Object} [options] see web.ControlPanel.update() for a description */ update_control_panel: function(cp_status, options) { - this.cp_bus.trigger("update", cp_status || {}, options || {}); + if (this.cp_bus) { + this.cp_bus.trigger("update", cp_status || {}, options || {}); + } }, }; @@ -88,7 +89,6 @@ var ControlPanel = Widget.extend({ start: function() { // Exposed jQuery nodesets this.nodes = { - $breadcrumbs: this.$('.breadcrumb'), $buttons: this.$('.o_cp_buttons'), $pager: this.$('.o_cp_pager'), $searchview: this.$('.o_cp_searchview'), @@ -107,10 +107,6 @@ var ControlPanel = Widget.extend({ return this._super(); }, - destroy: function() { - this._clear_breadcrumbs_handlers(); - return this._super.apply(this, arguments); - }, /** * @return {Object} the Bus the ControlPanel is listening on */ @@ -143,9 +139,7 @@ var ControlPanel = Widget.extend({ // Render the breadcrumbs if (status.breadcrumbs) { - this._clear_breadcrumbs_handlers(); - this.$breadcrumbs = this._render_breadcrumbs(status.breadcrumbs); - new_cp_content.$breadcrumbs = this.$breadcrumbs; + this.$('.breadcrumb').html(this._render_breadcrumbs(status.breadcrumbs)); } // Detach control_panel old content and attach new elements @@ -239,23 +233,12 @@ var ControlPanel = Widget.extend({ .toggleClass('active', is_last); if (!is_last) { $bc.click(function () { - self.trigger("on_breadcrumb_click", bc.action, bc.index); + self.trigger_up('breadcrumb_clicked', {controllerID: bc.controllerID}); }); } return $bc; }, /** - * Private function that removes event handlers attached on the currently - * displayed breadcrumbs. - */ - _clear_breadcrumbs_handlers: function () { - if (this.$breadcrumbs) { - _.each(this.$breadcrumbs, function ($bc) { - $bc.off(); - }); - } - }, - /** * Private function that updates the SearchView's visibility and extend the * breadcrumbs area if the SearchView is not visible * @param {openerp.web.SearchView} [searchview] the searchview Widget |
