summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/chrome/control_panel.js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2017-11-17 13:14:02 +0100
committerAaron Bohy <aab@odoo.com>2018-01-16 20:49:19 +0100
commit32b8cec5361174c92c45a4975d4e02f1fb448aa2 (patch)
tree110bd6986c2da1ed5047002b7ea40c91ea9fa5ed /addons/web/static/src/js/chrome/control_panel.js
parent9bee25a9df65f657fef0f2f32a7ad823fdc7d4e1 (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.js27
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