summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-12-07 16:31:01 +0100
committerXavier Morel <xmo@openerp.com>2011-12-07 16:31:01 +0100
commit22fb18bcbf480b28c3f96e16ceb207116e77fadd (patch)
tree7e21a18a34b8e3154085c4c2aeb901ebb438f10d /addons/web/static/src
parent019946150930f297d33251c3eeaabf658ea2b169 (diff)
[ADD] special case: creating a record from list goes back to page view, not list view
bzr revid: xmo@openerp.com-20111207153101-kzpolvmvmxnjl20m
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/view_form.js5
-rw-r--r--addons/web/static/src/js/views.js19
2 files changed, 19 insertions, 5 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 0e813f99166..46bb2ef7c35 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -356,8 +356,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
},
on_button_save: function() {
var self = this;
- return this.do_save().then(function() {
- self.do_prev_view();
+ return this.do_save().then(function(result) {
+ self.do_prev_view(result.created);
});
},
on_button_cancel: function() {
@@ -433,6 +433,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
if (success) {
success();
}
+ return $.Deferred().resolve({}).promise();
} else {
openerp.log("FormView(", self, ") : About to save", values);
return self.dataset.write(self.datarecord.id, values, {}).pipe(function(r) {
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index cae83d48258..f583dd259e7 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -300,10 +300,23 @@ session.web.ViewManager = session.web.Widget.extend(/** @lends session.web.View
});
return view_promise;
},
- on_prev_view: function () {
- this.views_history.pop();
+ /**
+ * Returns to the view preceding the caller view in this manager's
+ * navigation history (the navigation history is appended to via
+ * on_mode_switch)
+ *
+ * @param {Boolean} [created=false] returning from a creation
+ * @returns {$.Deferred} switching end signal
+ */
+ on_prev_view: function (created) {
+ var current_view = this.views_history.pop();
var previous_view = this.views_history[this.views_history.length - 1];
- this.on_mode_switch(previous_view, true);
+ // 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)"
+ if (created && current_view === 'form' && previous_view === 'list') {
+ return this.on_mode_switch('page');
+ }
+ return this.on_mode_switch(previous_view, true);
},
/**
* Sets up the current viewmanager's search view.