diff options
| author | Xavier Morel <xmo@openerp.com> | 2012-10-03 13:42:58 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2012-10-03 13:42:58 +0200 |
| commit | 10513dc524cb46489fe3ed890359712e8a087611 (patch) | |
| tree | ae65c97d2e2b248e961a548a22546c81751656d1 /addons/web/static/src | |
| parent | 0b0bce6b01a317c3535d34ab9f2124d30a2bd930 (diff) | |
[IMP] client actions: allow functions, not just widgets
bzr revid: xmo@openerp.com-20121003114258-vp3mg1yqps4qfkyp
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/chrome.js | 39 | ||||
| -rw-r--r-- | addons/web/static/src/js/views.js | 9 |
2 files changed, 25 insertions, 23 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 3fe5e9c952c..bed4a159535 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -614,39 +614,32 @@ instance.web.client_actions.add("login", "instance.web.Login"); * Client action to reload the whole interface. * If params has an entry 'menu_id', it opens the given menu entry. */ -instance.web.Reload = instance.web.Widget.extend({ - init: function(parent, params) { - this._super(parent); - this.menu_id = (params && params.menu_id) || false; - }, - start: function() { - var l = window.location; +instance.web.Reload = function(parent, params) { + var menu_id = (params && params.menu_id) || false; + var l = window.location; - var sobj = $.deparam(l.search.substr(1)); - sobj.ts = new Date().getTime(); - var search = '?' + $.param(sobj); + var sobj = $.deparam(l.search.substr(1)); + sobj.ts = new Date().getTime(); + var search = '?' + $.param(sobj); - var hash = l.hash; - if (this.menu_id) { - hash = "#menu_id=" + this.menu_id; - } - var url = l.protocol + "//" + l.host + l.pathname + search + hash; - window.location = url; + var hash = l.hash; + if (menu_id) { + hash = "#menu_id=" + menu_id; } -}); + var url = l.protocol + "//" + l.host + l.pathname + search + hash; + window.location = url; +}; instance.web.client_actions.add("reload", "instance.web.Reload"); /** * Client action to go back in breadcrumb history. * If can't go back in history stack, will go back to home. */ -instance.web.HistoryBack = instance.web.Widget.extend({ - init: function(parent, params) { - if (!parent.history_back()) { - window.location = '/' + (window.location.search || ''); - } +instance.web.HistoryBack = function(parent, params) { + if (!parent.history_back()) { + window.location = '/' + (window.location.search || ''); } -}); +}; instance.web.client_actions.add("history_back", "instance.web.HistoryBack"); /** diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 715da126f0d..2fff0e7b683 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -313,6 +313,15 @@ instance.web.ActionManager = instance.web.Widget.extend({ ir_actions_client: function (action, on_close, clear_breadcrumbs) { var self = this; var ClientWidget = instance.web.client_actions.get_object(action.tag); + + if (!(ClientWidget.prototype instanceof instance.web.Widget)) { + var next; + if (next = ClientWidget(this, action.params)) { + return this.do_action(next, on_close, clear_breadcrumbs); + } + return $.when(); + } + return this.ir_actions_common({ widget: function () { return new ClientWidget(self, action.params); }, action: action, |
