diff options
| author | Christophe Simonis <chs@openerp.com> | 2012-10-12 14:54:18 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2012-10-12 14:54:18 +0200 |
| commit | e70d879accfd93751fa6ecd7fea1acfd9cc7e4ef (patch) | |
| tree | 2f31e8ae05767f2b16997cb645c181dc4784f3da /addons/web/static/src/js | |
| parent | db64cf70977a774ca5890ace6fb119bccadb4f7f (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.js | 9 | ||||
| -rw-r--r-- | addons/web/static/src/js/views.js | 6 |
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) { |
