[IMP] Improved m2m to open a popup when we click one of the items.

bzr revid: nicolas.vanhoren@openerp.com-20110426141334-s3xl2y8rp9arphmn
This commit is contained in:
niv-openerp 2011-04-26 16:13:34 +02:00
parent 96c1dacf4c
commit 7bb1ffec7b
2 changed files with 59 additions and 4 deletions

View File

@ -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({

View File

@ -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;