diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-06-03 11:43:02 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-06-03 11:43:02 +0200 |
| commit | a2ba109315b2d2c5ed2ff8668658c54a30bb20c6 (patch) | |
| tree | 6d36cdb476c4fdfec3d273081719fd4951ef1dd8 /addons/base/static/src | |
| parent | 3990af373cca7b702262911623d4a9dcfef7a881 (diff) | |
[IMP] make form widgets registry pluggable, have form go get its root Frame widget in the registry instead of hardcoding the relevant class
bzr revid: xmo@openerp.com-20110603094302-hh09kzswb5kcfpye
Diffstat (limited to 'addons/base/static/src')
| -rw-r--r-- | addons/base/static/src/js/form.js | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 3b55b86a471..04fe95ee37f 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -15,6 +15,8 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV * @param {String} element_id this view's root element id * @param {openerp.base.DataSet} dataset the dataset this view will work with * @param {String} view_id the identifier of the OpenERP view object + * + * @property {openerp.base.Registry} registry=openerp.base.form.widgets widgets registry for this form view instance */ init: function(view_manager, session, element_id, dataset, view_id) { this._super(session, element_id); @@ -31,6 +33,7 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV this.show_invalid = true; this.touched = false; this.flags = this.view_manager.action.flags || {}; + this.registry = openerp.base.form.widgets; }, start: function() { //this.log('Starting FormView '+this.model+this.view_id) @@ -41,7 +44,7 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV var self = this; this.fields_view = data.fields_view; - var frame = new openerp.base.form.WidgetFrame(this, this.fields_view.arch); + var frame = new (this.registry.get_object('frame'))(this, this.fields_view.arch); this.$element.html(QWeb.render(this.template, { 'frame': frame, 'view': this })); _.each(this.widgets, function(w) { @@ -506,9 +509,9 @@ openerp.base.form.WidgetFrame = openerp.base.form.Widget.extend({ handle_node: function(node) { var type = this.view.fields_view.fields[node.attrs.name] || {}; var widget_type = node.attrs.widget || type.type || node.tag; - var widget = new (openerp.base.form.widgets.get_object(widget_type)) (this.view, node); + var widget = new (this.view.registry.get_object(widget_type)) (this.view, node); if (node.tag == 'field' && node.attrs.nolabel != '1') { - var label = new (openerp.base.form.widgets.get_object('label')) (this.view, node); + var label = new (this.view.registry.get_object('label')) (this.view, node); label["for"] = widget; this.add_widget(label); } @@ -1370,6 +1373,7 @@ openerp.base.form.FieldBinaryImage = openerp.base.form.FieldBinary.extend({ * Registry of form widgets, called by :js:`openerp.base.FormView` */ openerp.base.form.widgets = new openerp.base.Registry({ + 'frame' : 'openerp.base.form.WidgetFrame', 'group' : 'openerp.base.form.WidgetFrame', 'notebook' : 'openerp.base.form.WidgetNotebook', 'separator' : 'openerp.base.form.WidgetSeparator', |
