diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-03-19 14:09:52 +0100 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-03-19 14:09:52 +0100 |
| commit | 993c99a41449e508554c4e33342ef484020d8c31 (patch) | |
| tree | b4a52a22c4804b0b38a474dd60f25e866ddc1574 /addons/web/static/src | |
| parent | e9ff845347f177096ca05f3387b1174a41f4e52e (diff) | |
[imp] made reference readonly-able
bzr revid: nicolas.vanhoren@openerp.com-20120319130952-k1921f9za3duezyn
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 60 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_page.js | 26 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 23 |
3 files changed, 55 insertions, 54 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index dfe09f32ef9..04cb93175f2 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3158,7 +3158,7 @@ openerp.web.form.FormOpenDataset = openerp.web.ProxyDataSet.extend({ } }); -openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend({ +openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend(_.extend({}, openerp.web.form.ReinitializeFieldMixin, { template: 'FieldReference', init: function(view, node) { this._super(view, node); @@ -3181,17 +3181,7 @@ openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend({ this.widgets = {}; this.fields = {}; this.fields_order = []; - this.selection = new openerp.web.form.FieldSelection(this, { attrs: { - name: 'selection', - widget: 'selection' - }}); this.reference_ready = true; - this.selection.on_value_changed.add_last(this.on_selection_changed); - this.m2o = new openerp.web.form.FieldMany2One(this, { attrs: { - name: 'm2o', - widget: 'many2one' - }}); - this.m2o.on_ui_change.add_last(this.on_ui_change); }, on_nop: function() { }, @@ -3205,10 +3195,37 @@ openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend({ }, start: function() { this._super(); - // TODO: not niv compliant - this.selection.$element = $(".oe_form_view_reference_selection", this.$element); - this.selection.renderElement(); - this.selection.start(); + openerp.web.form.ReinitializeFieldMixin.start.call(this); + }, + renderElement: function() { + if (this.selection) { + this.selection.stop(); + this.selection = undefined; + } + if (this.m2o) { + this.m2o.stop(); + this.m2o.undefined; + } + this._super(); + }, + bind_events: function() { + if (!this.get("effective_readonly")) { + this.selection = new openerp.web.form.FieldSelection(this, { attrs: { + name: 'selection', + widget: 'selection' + }}); + this.selection.on_value_changed.add_last(this.on_selection_changed); + + this.selection.$element = $(".oe_form_view_reference_selection", this.$element); + this.selection.renderElement(); + this.selection.start(); + } + this.m2o = new openerp.web.form.FieldMany2One(this, { attrs: { + name: 'm2o', + widget: 'many2one' + }}); + this.m2o.set({"readonly": this.get("effective_readonly")}); + this.m2o.on_ui_change.add_last(this.on_ui_change); this.m2o.$element = $(".oe_form_view_reference_m2o", this.$element); this.m2o.renderElement(); this.m2o.start(); @@ -3221,14 +3238,19 @@ openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend({ }, set_value: function(value) { this._super(value); + this.render_value(); + }, + render_value: function() { this.reference_ready = false; var vals = [], sel_val, m2o_val; - if (typeof(value) === 'string') { - vals = value.split(','); + if (typeof(this.value) === 'string') { + vals = this.value.split(','); } sel_val = vals[0] || false; m2o_val = vals[1] ? parseInt(vals[1], 10) : false; - this.selection.set_value(sel_val); + if (!this.get("effective_readonly")) { + this.selection.set_value(sel_val); + } this.m2o.field.relation = sel_val; this.m2o.set_value(m2o_val); this.m2o.$element.toggle(sel_val !== false); @@ -3243,7 +3265,7 @@ openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend({ return false; } } -}); +})); openerp.web.form.FieldBinary = openerp.web.form.AbstractField.extend({ init: function(view, node) { diff --git a/addons/web/static/src/js/view_page.js b/addons/web/static/src/js/view_page.js index 4a7264ab1c8..419d616e135 100644 --- a/addons/web/static/src/js/view_page.js +++ b/addons/web/static/src/js/view_page.js @@ -67,31 +67,6 @@ openerp.web.page = function (openerp) { /** @namespace */ openerp.web.page = {}; - - openerp.web.page.FieldReferenceReadonly = openerp.web.form.FieldMany2One.extend({ - set_value: function (value) { - if (!value) { - return this._super(null); - } - var reference = value.split(','); - this.field.relation = reference[0]; - var id = parseInt(reference[1], 10); - return this._super(id); - }, - get_value: function () { - if (!this.value) { - return null; - } - var id; - if (typeof this.value === 'number') { - // name_get has not run yet - id = this.value; - } else { - id = this.value[0]; - } - return _.str.sprintf('%s,%d', this.field.relation, id); - } - }); openerp.web.page.FieldBinaryImageReaonly = openerp.web.form.FieldBinaryImage.extend({ update_dom: function() { @@ -121,7 +96,6 @@ openerp.web.page = function (openerp) { } }); openerp.web.page.readonly = openerp.web.form.widgets.extend({ - 'reference': 'openerp.web.page.FieldReferenceReadonly', 'binary': 'openerp.web.page.FieldBinaryFileReadonly', 'image': 'openerp.web.page.FieldBinaryImageReaonly', diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index a7c8d427440..5d8aa5c704b 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1057,7 +1057,7 @@ </table> </t> <t t-name="FieldMany2One_readonly"> - <a href="#" class="oe_form_uri"/> + <a href="#" class="oe_form_uri"/> </t> <t t-name="FieldMany2One.context_menu"> <ul> @@ -1074,14 +1074,19 @@ </ul> </t> <t t-name="FieldReference"> - <table t-attf-class="oe_form_field_#{widget.type}" border="0" cellpadding="0" cellspacing="0" class="oe_frame oe_forms"> - <tr> - <td t-attf-class="oe_form_frame_cell oe_form_selection oe_form_view_reference_selection"> - </td> - <td t-attf-class="oe_form_frame_cell oe_form_many2one oe_form_view_reference_m2o" nowrap="true" style="display: none"> - </td> - </tr> - </table> + <t t-if="!widget.get('effective_readonly')"> + <table t-attf-class="oe_form_field_#{widget.type}" border="0" cellpadding="0" cellspacing="0" class="oe_frame oe_forms"> + <tr> + <td t-attf-class="oe_form_frame_cell oe_form_selection oe_form_view_reference_selection"> + </td> + <td t-attf-class="oe_form_frame_cell oe_form_many2one oe_form_view_reference_m2o" nowrap="true" style="display: none"> + </td> + </tr> + </table> + </t> + <t t-if="widget.get('effective_readonly')"> + <a href="#" class="oe_form_uri"/> + </t> </t> <t t-name="FieldBoolean"> <div t-attf-class="oe_form_field_#{widget.type}"> |
