[FIX] Modified behavior when we click on an action in the 'More' menu.
authorniv-openerp <nicolas.vanhoren@openerp.com>
Tue, 20 Nov 2012 10:06:20 +0000 (11:06 +0100)
committerniv-openerp <nicolas.vanhoren@openerp.com>
Tue, 20 Nov 2012 10:06:20 +0000 (11:06 +0100)
Since revision 1517, when using the sidebar from a form view, it merged all the fields of the form view in the context of the action.
It was modified to avoid that context pollution, now it only uses those fields to evaluate the context of that action. So it allows
specifying contexts like "{'invoice_id': invoice_id}", but invoice_id will not be propagated any more to the new action context if not
explicitely specified.

bzr revid: nicolas.vanhoren@openerp.com-20121120100620-ig4e02uctysk7oj8

addons/web/static/src/js/view_form.js
addons/web/static/src/js/views.js

index c784b16..81987dc 100644 (file)
@@ -1009,8 +1009,8 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
         }
         return true;
     },
-    sidebar_context: function () {
-        return this.save().then(_.bind(function() {return this.get_fields_values();}, this));
+    sidebar_eval_context: function () {
+        return $.when(this.build_eval_context());
     },
     open_defaults_dialog: function () {
         var self = this;
index 6fbbd31..0478ba6 100644 (file)
@@ -1061,23 +1061,23 @@ instance.web.Sidebar = instance.web.Widget.extend({
     },
     on_item_action_clicked: function(item) {
         var self = this;
-        self.getParent().sidebar_context().done(function (context) {
+        self.getParent().sidebar_eval_context().done(function (sidebar_eval_context) {
             var ids = self.getParent().get_selected_ids();
             if (ids.length == 0) {
                 instance.web.dialog($("<div />").text(_t("You must choose at least one record.")), { title: _t("Warning"), modal: true });
                 return false;
             }
-            var additional_context = _.extend({
+            var active_ids_context = {
                 active_id: ids[0],
                 active_ids: ids,
                 active_model: self.getParent().dataset.model
-            }, context);
+            };
             self.rpc("/web/action/load", {
                 action_id: item.action.id,
-                context: additional_context
+                context: new instance.web.CompoundContext(sidebar_eval_context, active_ids_context),
             }).done(function(result) {
-                result.context = _.extend(result.context || {},
-                    additional_context);
+                console.log(result.context);
+                result.context = new instance.web.CompoundContext(result.context || {}, active_ids_context);
                 result.flags = result.flags || {};
                 result.flags.new_window = true;
                 self.do_action(result, {
@@ -1330,7 +1330,7 @@ instance.web.View = instance.web.Widget.extend({
     on_sidebar_export: function() {
         new instance.web.DataExport(this, this.dataset).open();
     },
-    sidebar_context: function () {
+    sidebar_eval_context: function () {
         return $.when();
     },
     /**