summaryrefslogtreecommitdiff
path: root/addons/base/static/src/js/views.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/base/static/src/js/views.js')
-rw-r--r--addons/base/static/src/js/views.js24
1 files changed, 18 insertions, 6 deletions
diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js
index 4217031a7e3..ee910d57cfd 100644
--- a/addons/base/static/src/js/views.js
+++ b/addons/base/static/src/js/views.js
@@ -397,10 +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) {
- action_manager.do_action(r.result);
+ 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(action);
} else {
- on_no_action(r.result);
+ on_no_action(action);
}
};
@@ -409,12 +421,12 @@ openerp.base.View = openerp.base.Controller.extend({
result : { type: 'ir.actions.act_window_close' }
});
} else {
- var context = _.extend({}, dataset.context, action_data.context || {});
+ var context = new openerp.base.CompoundContext(dataset.context).add(action_data.context || {});
switch(action_data.type) {
case 'object':
- return dataset.call(action_data.name, [[record_id], context], handler);
+ 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);
}