summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@openerp.com>2012-10-12 14:54:18 +0200
committerChristophe Simonis <chs@openerp.com>2012-10-12 14:54:18 +0200
commite70d879accfd93751fa6ecd7fea1acfd9cc7e4ef (patch)
tree2f31e8ae05767f2b16997cb645c181dc4784f3da /addons/web/static/src/js
parentdb64cf70977a774ca5890ace6fb119bccadb4f7f (diff)
[FIX] add option to avoid actions to be pushed as state. Used for login and action extracted from hash. Full state of client actions is pushed.
bzr revid: chs@openerp.com-20121012125418-jbw3iut85riepz47
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/chrome.js9
-rw-r--r--addons/web/static/src/js/views.js6
2 files changed, 9 insertions, 6 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index d7272d8d83f..2cf7ab4e5f8 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -1021,15 +1021,13 @@ instance.web.WebClient = instance.web.Client.extend({
var state = $.bbq.getState(true);
var action = {
- 'type': 'ir.actions.client',
- 'tag': 'login',
- 'params': state
+ type: 'ir.actions.client',
+ tag: 'login',
+ _push_me: false,
};
this.action_manager.do_action(action);
this.action_manager.inner_widget.on('login_successful', this, function() {
- this.do_push_state(state);
- this._current_state = null; // ensure the state will be loaded
this.show_application(); // will load the state we just pushed
});
},
@@ -1105,6 +1103,7 @@ instance.web.WebClient = instance.web.Client.extend({
});
});
} else {
+ state._push_me = false; // no need to push state back...
this.action_manager.do_load_state(state, !!this._current_state);
}
}
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index 47a06e37ddc..cb4f440110d 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -164,6 +164,10 @@ instance.web.ActionManager = instance.web.Widget.extend({
state = state || {};
if (this.getParent() && this.getParent().do_push_state) {
if (this.inner_action) {
+ if (this.inner_action._push_me === false) {
+ // this action has been explicitly marked as not pushable
+ return;
+ }
state['title'] = this.inner_action.name;
if(this.inner_action.type == 'ir.actions.act_window') {
state['model'] = this.inner_action.res_model;
@@ -172,7 +176,7 @@ instance.web.ActionManager = instance.web.Widget.extend({
state['action'] = this.inner_action.id;
} else if (this.inner_action.type == 'ir.actions.client') {
state['action'] = this.inner_action.tag;
- //state = _.extend(this.inner_action.params || {}, state);
+ state = _.extend(this.inner_action.params || {}, state);
}
}
if(!this.dialog) {