[ADD] basic structure for HTML form widget
authorXavier Morel <xmo@openerp.com>
Mon, 19 Dec 2011 09:59:24 +0000 (10:59 +0100)
committerXavier Morel <xmo@openerp.com>
Mon, 19 Dec 2011 09:59:24 +0000 (10:59 +0100)
lp bug: https://launchpad.net/bugs/902156 fixed

bzr revid: xmo@openerp.com-20111219095924-eqr227mth2li8egr

addons/web/static/src/js/view_form.js

index 34bfe15..fe1ebe1 100644 (file)
@@ -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 = $('<div class="oe_form_html_view">');
+        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'
 });