summaryrefslogtreecommitdiff
path: root/addons/base/static/src
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-06-03 11:43:02 +0200
committerXavier Morel <xmo@openerp.com>2011-06-03 11:43:02 +0200
commita2ba109315b2d2c5ed2ff8668658c54a30bb20c6 (patch)
tree6d36cdb476c4fdfec3d273081719fd4951ef1dd8 /addons/base/static/src
parent3990af373cca7b702262911623d4a9dcfef7a881 (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.js10
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',