[fix] problem with groups and labels

bzr revid: nicolas.vanhoren@openerp.com-20120320131939-vxt6wia15gt3suxo
This commit is contained in:
niv-openerp 2012-03-20 14:19:39 +01:00
parent 1d96e4dc84
commit 734ebc1335
1 changed files with 15 additions and 3 deletions

View File

@ -797,7 +797,7 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
}); });
*/ */
}, },
process_field: function($field) { process_field: function($field, no_process_label) {
var name = $field.attr('name'), var name = $field.attr('name'),
field_orm = this.fvg.fields[name], field_orm = this.fvg.fields[name],
field_string = $field.attr('string') || field_orm.string || '', field_string = $field.attr('string') || field_orm.string || '',
@ -819,7 +819,8 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
'help' : field_help 'help' : field_help
}); });
label.insertBefore($field); label.insertBefore($field);
this.process_any(label); if (!no_process_label)
this.process_label(label);
if (field_colspan > 1) { if (field_colspan > 1) {
$field.attr('colspan', field_colspan - 1); $field.attr('colspan', field_colspan - 1);
} }
@ -833,8 +834,13 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
}, },
process_group: function($group) { process_group: function($group) {
var self = this; var self = this;
var fields = [];
_.each($group.children(), function(el) { _.each($group.children(), function(el) {
self.process_any($(el)); var tagname = el.nodeName.toLowerCase();
if (tagname === "field") {
self.process_field($(el), true);
fields.push(el);
}
}); });
var $new_group = $(QWeb.render('FormRenderingGroup', $group.getAttributes())), var $new_group = $(QWeb.render('FormRenderingGroup', $group.getAttributes())),
$table; $table;
@ -848,6 +854,7 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
cols = parseInt($group.attr('col') || 4, 10), cols = parseInt($group.attr('col') || 4, 10),
row_cols = cols; row_cols = cols;
var children = [];
$group.children().each(function() { $group.children().each(function() {
var $child = $(this), var $child = $(this),
colspan = parseInt($child.attr('colspan') || 1, 10), colspan = parseInt($child.attr('colspan') || 1, 10),
@ -863,6 +870,7 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
row_cols -= colspan; row_cols -= colspan;
var $td = $('<td/>').addClass('oe_form_group_cell').attr('colspan', colspan); var $td = $('<td/>').addClass('oe_form_group_cell').attr('colspan', colspan);
$tr.append($td.append($child)); $tr.append($td.append($child));
children.push($child[0]);
}); });
$group.before($new_group).remove(); $group.before($new_group).remove();
@ -900,6 +908,10 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
total -= width; total -= width;
}); });
}); });
_.each(children, function(el) {
if (!_.include(fields, el))
self.process_any($(el));
});
}, },
process_notebook: function($notebook) { process_notebook: function($notebook) {
var self = this; var self = this;