diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 0866d1075fb..f9bd835156e 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -286,15 +286,11 @@ def fix_view_modes(action): if action.pop('view_type') != 'form': return - if 'view_mode' in action: - action['view_mode'] = ','.join( - mode if mode != 'tree' else 'list' - for mode in action['view_mode'].split(',')) - if 'views' in action: - action['views'] = [ - [id, mode if mode != 'tree' else 'list'] - for id, mode in action['views'] - ] + action['views'] = [ + [id, mode if mode != 'tree' else 'list'] + for id, mode in action['views'] + ] + return action class Menu(openerpweb.Controller): @@ -774,3 +770,8 @@ class Action(openerpweb.Controller): if action: value = clean_action(action[0], req.session) return {'result': value} + + @openerpweb.jsonrequest + def run(self, req, action_id): + return clean_action(req.session.model('ir.actions.server').run( + [action_id], req.session.eval_context(req.context)), req.session) diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index ee4388c8971..b32f8b88140 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -73,6 +73,14 @@ openerp.base.ActionManager = openerp.base.Controller.extend({ dialog.$element.dialog('destroy'); dialog.stop(); break; + case 'ir.actions.server': + this.rpc('/base/action/run', { + action_id: action.id, + context: {active_id: 66, active_ids: [66], active_model: 'ir.ui.menu'} + }).then(function (action) { + self.do_action(action, on_closed) + }); + break; default: console.log("Action manager can't handle action of type " + action.type, action); }