diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-03-20 16:04:57 +0100 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-03-20 16:04:57 +0100 |
| commit | f07f75e2c7be9ecb01a718dbffa743259ba2f419 (patch) | |
| tree | 84fe71060db6d034999cabc7837a1ecf7af33392 /addons/web/static/src/js | |
| parent | 985d448f7c4ebd2d3b7fecae2e9c1853993c4351 (diff) | |
[imp] improved label handling in groups
bzr revid: nicolas.vanhoren@openerp.com-20120320150457-huavj8wjisf6y7it
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b578ad0bc32..e6a2ffe41c7 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -780,15 +780,16 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({ if (fn) { var args = [].slice.call(arguments); args[0] = $tag; - fn.apply(self, args); + return fn.apply(self, args); } else { // generic tag handling, just process children $tag.children().each(function() { self.process($(this)); }); + return $tag; } }, - process_field: function($field, no_process_label) { + process_field: function($field) { var name = $field.attr('name'), field_orm = this.fvg.fields[name], field_string = $field.attr('string') || field_orm.string || '', @@ -799,20 +800,19 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({ throw new Error("Field '" + name + "' specified in view could not be found."); } + var $label; if ($field.attr('nolabel') !== '1') { var $label = this.$form.find('label[for="' + name + '"]'); if (!$label.length) { field_string = $label.attr('string') || $label.text() || field_string; field_help = $label.attr('help') || field_help; - var $label = $('<label/>').attr({ + $label = $('<label/>').attr({ 'for' : name, 'string' : field_string, 'help' : field_help }); $label.insertBefore($field); - if (!no_process_label) { - this.process($label); - } + $label = this.process($label); if (field_colspan > 1) { $field.attr('colspan', field_colspan - 1); } @@ -823,12 +823,20 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({ 'string' : field_string, 'help' : field_help }); + to_return = $(); + if ($label) + to_return.push($label[0]); + to_return.push($field[0]); + return to_return; }, process_group: function($group) { var self = this; - var fields = []; - $group.children('field').each(function() { - self.process($(this), true); + var no_reprocess = []; + $group.children('field,label').each(function() { + var processed = self.process($(this)); + processed.each(function(i) { + no_reprocess.push(processed[i]); + }); }); var $new_group = $(QWeb.render('FormRenderingGroup', $group.getAttributes())), $table; @@ -897,10 +905,11 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({ }); }); _.each(children, function(el) { - if (!_.include(fields, el)) { + if (!_.include(no_reprocess, el)) { self.process($(el)); } }); + return $new_group; }, process_notebook: function($notebook) { var self = this; @@ -921,10 +930,12 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({ $notebook.children().appendTo($new_notebook); $notebook.before($new_notebook).remove(); $new_notebook.tabs(); + return $new_notebook; }, process_separator: function($separator) { var $new_separator = $(QWeb.render('FormRenderingSeparator', $separator.getAttributes())); $separator.before($new_separator).remove(); + return $new_separator; }, process_label: function($label) { var dict = $label.getAttributes(); @@ -939,6 +950,7 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({ dict.align = align; var $new_label = $(QWeb.render('FormRenderingLabel', dict)); $label.before($new_label).remove(); + return $new_label; } }); |
