[imp] improvement of label handling

bzr revid: nicolas.vanhoren@openerp.com-20120320151801-3l7y1cab7wxe8fta
This commit is contained in:
niv-openerp 2012-03-20 16:18:01 +01:00
parent f07f75e2c7
commit 8678d4689f
1 changed files with 22 additions and 22 deletions

View File

@ -789,19 +789,14 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
return $tag; return $tag;
} }
}, },
process_field: function($field) { preprocess_field: function($field) {
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 || '',
field_help = $field.attr('help') || field_orm.help || '', field_help = $field.attr('help') || field_orm.help || '',
field_colspan = parseInt($field.attr('colspan'), 10); field_colspan = parseInt($field.attr('colspan'), 10);
if (!field_orm) {
throw new Error("Field '" + name + "' specified in view could not be found.");
}
var $label;
if ($field.attr('nolabel') !== '1') { if ($field.attr('nolabel') !== '1') {
$field.attr('nolabel', '1');
var $label = this.$form.find('label[for="' + name + '"]'); var $label = this.$form.find('label[for="' + name + '"]');
if (!$label.length) { if (!$label.length) {
field_string = $label.attr('string') || $label.text() || field_string; field_string = $label.attr('string') || $label.text() || field_string;
@ -812,31 +807,38 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
'help' : field_help 'help' : field_help
}); });
$label.insertBefore($field); $label.insertBefore($field);
$label = this.process($label);
if (field_colspan > 1) { if (field_colspan > 1) {
$field.attr('colspan', field_colspan - 1); $field.attr('colspan', field_colspan - 1);
} }
} }
return $label;
} }
},
process_field: function($field) {
var $label = this.preprocess_field($field);
if ($label)
this.process($label);
var name = $field.attr('name'),
field_orm = this.fvg.fields[name],
field_string = $field.attr('string') || field_orm.string || '',
field_help = $field.attr('help') || field_orm.help || '',
field_colspan = parseInt($field.attr('colspan'), 10);
if (!field_orm) {
throw new Error("Field '" + name + "' specified in view could not be found.");
}
$field.attr({ $field.attr({
'widget' : $field.attr('widget') || field_orm.type, 'widget' : $field.attr('widget') || field_orm.type,
'string' : field_string, 'string' : field_string,
'help' : field_help 'help' : field_help
}); });
to_return = $(); return $field;
if ($label)
to_return.push($label[0]);
to_return.push($field[0]);
return to_return;
}, },
process_group: function($group) { process_group: function($group) {
var self = this; var self = this;
var no_reprocess = []; $group.children('field').each(function() {
$group.children('field,label').each(function() { self.preprocess_field($(this));
var processed = self.process($(this));
processed.each(function(i) {
no_reprocess.push(processed[i]);
});
}); });
var $new_group = $(QWeb.render('FormRenderingGroup', $group.getAttributes())), var $new_group = $(QWeb.render('FormRenderingGroup', $group.getAttributes())),
$table; $table;
@ -905,9 +907,7 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
}); });
}); });
_.each(children, function(el) { _.each(children, function(el) {
if (!_.include(no_reprocess, el)) { self.process($(el));
self.process($(el));
}
}); });
return $new_group; return $new_group;
}, },