[IMP] add a 'default' key to 'on_prev_view' so switchers can force an other view if needed

bzr revid: xmo@openerp.com-20120124093033-297o9np9mxhm9zpy
This commit is contained in:
Xavier Morel 2012-01-24 10:30:33 +01:00
parent a0bc35050e
commit 8bd3c7035e
2 changed files with 14 additions and 8 deletions

View File

@ -386,11 +386,11 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
on_button_save: function() {
var self = this;
return this.do_save().then(function(result) {
self.do_prev_view(result.created);
self.do_prev_view({'created': result.created, 'default': 'page'});
});
},
on_button_cancel: function() {
return this.do_prev_view();
return this.do_prev_view({'default': 'page'});
},
on_button_new: function() {
var self = this;

View File

@ -354,17 +354,19 @@ session.web.ViewManager = session.web.Widget.extend(/** @lends session.web.View
* navigation history (the navigation history is appended to via
* on_mode_switch)
*
* @param {Boolean} [created=false] returning from a creation
* @param {Object} [options]
* @param {Boolean} [options.created=false] resource was created
* @param {String} [options.default=null] view to switch to if no previous view
* @returns {$.Deferred} switching end signal
*/
on_prev_view: function (created) {
on_prev_view: function (options) {
var current_view = this.views_history.pop();
var previous_view = this.views_history[this.views_history.length - 1];
if (created && current_view === 'form' && previous_view === 'list') {
var previous_view = this.views_history[this.views_history.length - 1] || options['default'];
if (options.created && current_view === 'form' && previous_view === 'list') {
// APR special case: "If creation mode from list (and only from a list),
// after saving, go to page view (don't come back in list)"
return this.on_mode_switch('page');
} else if (created && !previous_view && this.action && this.action.flags.default_view === 'form') {
} else if (options.created && !previous_view && this.action && this.action.flags.default_view === 'form') {
// APR special case: "If creation from dashboard, we have no previous view
return this.on_mode_switch('page');
}
@ -1164,8 +1166,12 @@ session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{
},
/**
* Cancels the switch to the current view, switches to the previous one
*
* @param {Object} [options]
* @param {Boolean} [options.created=false] resource was created
* @param {String} [options.default=null] view to switch to if no previous view
*/
do_prev_view: function () {
do_prev_view: function (options) {
},
do_search: function(view) {
},