From 7af1a8662cfa20ded2a9de02e74b8a7a2a994cf8 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 19 Dec 2011 10:59:24 +0100 Subject: [PATCH 1/3] [ADD] basic structure for HTML form widget lp bug: https://launchpad.net/bugs/902156 fixed bzr revid: xmo@openerp.com-20111219095924-eqr227mth2li8egr --- addons/web/static/src/js/view_form.js | 28 ++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 34bfe15bd4c..fe1ebe1e1a4 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3052,6 +3052,31 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ } }); +openerp.web.form.WidgetHtml = openerp.web.form.Widget.extend({ + render: function () { + var $root = $('
'); + this.render_children(this, $root); + return $root.html(); + }, + render_children: function (object, $into) { + var self = this, + fields = this.view.fields_view.fields; + _(object.children).each(function (child) { + if (typeof child === 'string') { + $into.text(child); + } else if (child.tag === 'field') { + var type = fields[child.attrs.name] || {}; + var widget = new (self.view.registry.get_any( + [child.attrs.widget, type.type, child.tag])) (self.view, child); + $into.append(widget.render()); + } else { + var $child = $(document.createElement(child.tag), child.attrs) + .appendTo($into); + self.render_children(child, $child); + } + }); + } +}); /** @@ -3085,7 +3110,8 @@ openerp.web.form.widgets = new openerp.web.Registry({ 'progressbar': 'openerp.web.form.FieldProgressBar', 'image': 'openerp.web.form.FieldBinaryImage', 'binary': 'openerp.web.form.FieldBinaryFile', - 'statusbar': 'openerp.web.form.FieldStatus' + 'statusbar': 'openerp.web.form.FieldStatus', + 'html': 'openerp.web.form.WidgetHtml' }); From c49498e0a4e15c0169cfec91712bc526751d84eb Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 21 Dec 2011 11:37:50 +0100 Subject: [PATCH 2/3] [FIX] attributes handling on HTML nodes bzr revid: xmo@openerp.com-20111221103750-wemo7rszah8vvvxa --- addons/web/static/src/js/view_form.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index fe1ebe1e1a4..d728ab7160f 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3070,7 +3070,8 @@ openerp.web.form.WidgetHtml = openerp.web.form.Widget.extend({ [child.attrs.widget, type.type, child.tag])) (self.view, child); $into.append(widget.render()); } else { - var $child = $(document.createElement(child.tag), child.attrs) + var $child = $(document.createElement(child.tag)) + .attr(child.attrs) .appendTo($into); self.render_children(child, $child); } From bab4a5316c386e4b95e7bdd90a840e3b69551de8 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 21 Dec 2011 11:54:40 +0100 Subject: [PATCH 3/3] [FIX] fields rendering: go through WidgetFrame to ensure everything is set up as it should instead of trying to replicate what it does bzr revid: xmo@openerp.com-20111221105440-dpns1tr00ky12gz5 --- addons/web/static/src/js/view_form.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index d728ab7160f..73c3a9c82ca 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3065,10 +3065,10 @@ openerp.web.form.WidgetHtml = openerp.web.form.Widget.extend({ if (typeof child === 'string') { $into.text(child); } else if (child.tag === 'field') { - var type = fields[child.attrs.name] || {}; - var widget = new (self.view.registry.get_any( - [child.attrs.widget, type.type, child.tag])) (self.view, child); - $into.append(widget.render()); + $into.append( + new (self.view.registry.get_object('frame'))( + self.view, {tag: 'ueule', attrs: {}, children: [child] }) + .render()); } else { var $child = $(document.createElement(child.tag)) .attr(child.attrs)