From 7bb1ffec7bb15d8a8dd246b5717377105e252c27 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 26 Apr 2011 16:13:34 +0200 Subject: [PATCH] [IMP] Improved m2m to open a popup when we click one of the items. bzr revid: nicolas.vanhoren@openerp.com-20110426141334-s3xl2y8rp9arphmn --- addons/base/static/src/js/form.js | 54 ++++++++++++++++++++++++++++-- addons/base/static/src/js/views.js | 9 ++++- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 5e0d739a279..4ed5c8f250a 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -904,9 +904,7 @@ openerp.base.form.FieldMany2Many = openerp.base.form.Field.extend({ this.list_view = new openerp.base.form.Many2ManyListView(undefined, this.view.session, this.list_id, this.dataset, false, {'selected': false, 'addable': 'Add'}); var self = this; - this.list_view.do_delete.add_last(function() { - self.on_ui_change(); - }); + this.list_view.m2m_field = this; this.list_view.start(); }, set_value: function(value) { @@ -929,6 +927,8 @@ openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({ this.dataset.count = this.dataset.ids.length; // there may be a faster way this.do_reload(); + + this.m2m_field.on_ui_change(); }, do_reload: function () { /* Dear xmo, according to your comments, this method's implementation in list view seems @@ -942,6 +942,54 @@ openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({ 'context': this.dataset.context }, this.do_fill_table); }, + do_add_record: function () { + // TODO: need to open a popup with search view + }, + on_select_row: function(event) { + var $target = $(event.currentTarget); + var row = this.rows[$target.prevAll().length]; + var id = row.data.id.value; + if(! id) { + return; + } + var action_manager = this.m2m_field.view.session.action_manager; + action_manager.do_action({ + "res_model": this.dataset.model, + "views":[[false,"form"]], + "res_id": id, + "type":"ir.actions.act_window", + "view_type":"form", + "view_mode":"form", + "target":"new" + }); + /*action_manager.do_action({ + "groups_id":[], + "domain":"[]", + "help":false, + "res_model":"partner.sms.send", + "search_view_id":false, + "id":75, + "src_model":"res.partner", + "views":[[false,"form"]], + "menus":false, + "display_menu_tip":true, + "usage":"", + "type":"ir.actions.act_window", + "string":"SMS Send", + "view_type":"form", + "view_id":false, + "auto_refresh":0, + "view_mode":"form", + "view_ids":[], + "target":"new", + "multi":false, + "name":"SMS Send", + "auto_search":true, + "filter":false, + "limit":0, + "context":"{}" + });*/ + } }); openerp.base.form.FieldReference = openerp.base.form.Field.extend({ diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 8ef14a3edbf..8b29850d071 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -183,7 +183,14 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({ init: function(session, element_id, action, sidebar) { - var dataset = new openerp.base.DataSetSearch(session, action.res_model); + var dataset; + if(!action.res_id) { + dataset = new openerp.base.DataSetSearch(session, action.res_model); + } else { + dataset = new openerp.base.DataSetStatic(session, action.res_model); + dataset.ids = [action.res_id]; + dataset.count = 1; + } this._super(session, element_id, dataset, action.views); this.action = action; this.sidebar = sidebar;