summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2012-10-03 13:42:58 +0200
committerXavier Morel <xmo@openerp.com>2012-10-03 13:42:58 +0200
commit10513dc524cb46489fe3ed890359712e8a087611 (patch)
treeae65c97d2e2b248e961a548a22546c81751656d1 /addons/web/static/src
parent0b0bce6b01a317c3535d34ab9f2124d30a2bd930 (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.js39
-rw-r--r--addons/web/static/src/js/views.js9
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,