summaryrefslogtreecommitdiff
path: root/addons/base/static/src/js
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2011-06-21 16:38:04 +0200
committerFabien Meghazi <fme@openerp.com>2011-06-21 16:38:04 +0200
commitc57a3e0d98229ed66dde92c5caad39f6bc0efdbd (patch)
tree3cf619904efce6d508a3bb410ca6681705dcb75e /addons/base/static/src/js
parent74e3e0576344978f3486d188f54ed73607ddc881 (diff)
[FIX] Fixed active_is in context for dialog actions
bzr revid: fme@openerp.com-20110621143804-b51tp8n0a393oixi
Diffstat (limited to 'addons/base/static/src/js')
-rw-r--r--addons/base/static/src/js/data.js5
-rw-r--r--addons/base/static/src/js/form.js13
-rw-r--r--addons/base/static/src/js/views.js15
3 files changed, 23 insertions, 10 deletions
diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js
index 1463ca279fa..736c31c1f7b 100644
--- a/addons/base/static/src/js/data.js
+++ b/addons/base/static/src/js/data.js
@@ -287,11 +287,12 @@ openerp.base.DataSet = openerp.base.Controller.extend( /** @lends openerp.base.
});
}
},
- default_get: function(fields, callback) {
+ default_get: function(fields, context, callback) {
+ context = context || this.context;
return this.rpc('/base/dataset/default_get', {
model: this.model,
fields: fields,
- context: this.context
+ context: context
}, callback);
},
create: function(data, callback, error_callback) {
diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index 7cb36cdc0c2..d221872598d 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -42,8 +42,12 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
if (this.embedded_view) {
return $.Deferred().then(this.on_loaded).resolve({fields_view: this.embedded_view});
} else {
+ var context = new openerp.base.CompoundContext(this.dataset.context);
+ if (this.view_manager.action && this.view_manager.action.context) {
+ context.add(this.view_manager.action.context);
+ }
return this.rpc("/base/formview/load", {"model": this.model, "view_id": this.view_id,
- toolbar:!!this.flags.sidebar}, this.on_loaded);
+ toolbar:!!this.flags.sidebar, context: context}, this.on_loaded);
}
},
on_loaded: function(data) {
@@ -84,7 +88,6 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
this.$element.hide();
},
on_record_loaded: function(record) {
- console.info(record)
this.touched = false;
if (record) {
this.datarecord = record;
@@ -226,8 +229,12 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
},
on_button_new: function() {
var self = this;
+ var context = new openerp.base.CompoundContext(this.dataset.context);
+ if (this.view_manager.action && this.view_manager.action.context) {
+ context.add(this.view_manager.action.context);
+ }
$.when(this.has_been_loaded).then(function() {
- self.dataset.default_get(_.keys(self.fields_view.fields), function(result) {
+ self.dataset.default_get(_.keys(self.fields_view.fields), context, function(result) {
self.on_record_loaded(result.result);
});
});
diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js
index c6ee9e69d71..ee910d57cfd 100644
--- a/addons/base/static/src/js/views.js
+++ b/addons/base/static/src/js/views.js
@@ -397,17 +397,22 @@ openerp.base.View = openerp.base.Controller.extend({
*/
execute_action: function (action_data, dataset, action_manager, record_id, on_no_action) {
var handler = function (r) {
- if (r.result && r.result.constructor == Object) {
- r.result.flags = {
+ var action = r.result;
+ if (action && action.constructor == Object) {
+ action.context = action.context || {};
+ action.context['active_id'] = dataset.ids[dataset.index];
+ action.context['active_ids'] = [dataset.ids[dataset.index]];
+ action.context['active_model'] = dataset.model;
+ action.flags = {
sidebar : false,
search_view : false,
views_switcher : false,
action_buttons : false,
pager : false
};
- action_manager.do_action(r.result);
+ action_manager.do_action(action);
} else {
- on_no_action(r.result);
+ on_no_action(action);
}
};
@@ -421,7 +426,7 @@ openerp.base.View = openerp.base.Controller.extend({
case 'object':
return dataset.call_and_eval(action_data.name, [[record_id], context], null, 1, handler);
case 'action':
- return this.rpc('/base/action/load', { action_id: parseInt(action_data.name, 10) }, handler);
+ return this.rpc('/base/action/load', { action_id: parseInt(action_data.name, 10), context: context }, handler);
default:
return dataset.exec_workflow(record_id, action_data.name, handler);
}