[imp] made chars readonly-able

bzr revid: nicolas.vanhoren@openerp.com-20120316112223-d4az41nm2012liz5
This commit is contained in:
niv-openerp 2012-03-16 12:22:23 +01:00
parent 90f881b076
commit 36ba035431
3 changed files with 37 additions and 52 deletions

View File

@ -1438,17 +1438,30 @@ openerp.web.form.FieldChar = openerp.web.form.AbstractField.extend({
},
start: function() {
this._super.apply(this, arguments);
this.bind_events();
this.on("change:effective_readonly", this, function() {
this.render_element();
this.bind_events();
this.render_value();
});
},
bind_events: function() {
this.$element.find('input').change(this.on_ui_change);
},
set_value: function(value) {
this._super.apply(this, arguments);
var show_value = openerp.web.format_value(value, this, '');
this.$element.find('input').val(show_value);
return show_value;
this.render_value();
},
update_dom: function() {
this._super.apply(this, arguments);
this.$element.find('input').prop('readonly', this.readonly);
render_value: function() {
var show_value = openerp.web.format_value(this.value, this, '');
if (!this.get("effective_readonly")) {
this.$element.find('input').val(show_value);
} else {
if (this.password) {
show_value = new Array(show_value.length + 1).join('*');
}
this.$element.text(show_value);
}
},
set_value_from_ui: function() {
this.value = openerp.web.parse_value(this.$element.find('input').val(), this);

View File

@ -68,29 +68,7 @@ openerp.web.page = function (openerp) {
/** @namespace */
openerp.web.page = {};
//openerp.web.page.WidgetFrameReadonly = openerp.web.form.WidgetFrame.extend({
// form_template: 'WidgetFrame.readonly'
//});
openerp.web.page.FieldReadonly = openerp.web.form.AbstractField.extend({
});
openerp.web.page.FieldCharReadonly = openerp.web.page.FieldReadonly.extend({
form_template: 'FieldChar.readonly',
init: function(view, node) {
this._super(view, node);
this.password = this.node.attrs.password === 'True' || this.node.attrs.password === '1';
},
set_value: function (value) {
this._super.apply(this, arguments);
var show_value = openerp.web.format_value(value, this, '');
if (this.password) {
show_value = new Array(show_value.length + 1).join('*');
}
this.$element.find('div').text(show_value);
return show_value;
}
});
openerp.web.page.FieldURIReadonly = openerp.web.page.FieldCharReadonly.extend({
openerp.web.page.FieldURIReadonly = openerp.web.form.FieldChar.extend({
form_template: 'FieldURI.readonly',
scheme: null,
format_value: function (value) {
@ -120,7 +98,7 @@ openerp.web.page = function (openerp) {
this.$element.find('input').prop('disabled', true);
}
});
openerp.web.page.FieldSelectionReadonly = openerp.web.page.FieldReadonly.extend({
openerp.web.page.FieldSelectionReadonly = openerp.web.form.AbstractField.extend({
form_template: 'FieldChar.readonly',
init: function(view, node) {
// lifted straight from r/w version
@ -197,19 +175,11 @@ openerp.web.page = function (openerp) {
});
openerp.web.page.readonly = openerp.web.form.widgets.extend({
'frame': 'openerp.web.page.WidgetFrameReadonly',
'char': 'openerp.web.page.FieldCharReadonly',
'id': 'openerp.web.page.FieldCharReadonly',
'email': 'openerp.web.page.FieldEmailReadonly',
'url': 'openerp.web.page.FieldUrlReadonly',
'text': 'openerp.web.page.FieldCharReadonly',
'date': 'openerp.web.page.FieldCharReadonly',
'datetime': 'openerp.web.page.FieldCharReadonly',
'selection' : 'openerp.web.page.FieldSelectionReadonly',
'reference': 'openerp.web.page.FieldReferenceReadonly',
'boolean': 'openerp.web.page.FieldBooleanReadonly',
'float': 'openerp.web.page.FieldCharReadonly',
'integer': 'openerp.web.page.FieldCharReadonly',
'float_time': 'openerp.web.page.FieldCharReadonly',
'binary': 'openerp.web.page.FieldBinaryFileReadonly',
'image': 'openerp.web.page.FieldBinaryImageReaonly'
});

View File

@ -943,20 +943,22 @@
</ul>
</t>
<t t-name="FieldChar">
<div t-attf-class="oe_form_field_#{type}">
<input t-att-type="widget.password ? 'password' : 'text'" size="1"
t-att-name="widget.name"
t-att-id="widget.node.attrs.id"
t-attf-class="field_#{widget.type} #{_(['integer', 'float', 'float_time']).contains(widget.type) ? 'oe-number' : ''}"
style="width: 100%"
/><img class="oe_field_translate oe_input_icon" t-if="widget.field.translate" t-att-src='_s + "/web/static/src/img/icons/terp-translate.png"' width="16" height="16" border="0"/>
</div>
</t>
<t t-name="FieldChar.readonly">
<div
t-att-id="widget.element_id"
t-attf-class="field_#{widget.type} #{_(['integer', 'float', 'float_time']).contains(widget.type) ? 'oe-number' : ''}">
</div>
<t t-if="!widget.get('effective_readonly')">
<div t-attf-class="oe_form_field_#{type}">
<input t-att-type="widget.password ? 'password' : 'text'" size="1"
t-att-name="widget.name"
t-att-id="widget.node.attrs.id"
t-attf-class="field_#{widget.type} #{_(['integer', 'float', 'float_time']).contains(widget.type) ? 'oe-number' : ''}"
style="width: 100%"
/><img class="oe_field_translate oe_input_icon" t-if="widget.field.translate" t-att-src='_s + "/web/static/src/img/icons/terp-translate.png"' width="16" height="16" border="0"/>
</div>
</t>
<t t-if="widget.get('effective_readonly')">
<div
t-att-id="widget.element_id"
t-attf-class="field_#{widget.type} #{_(['integer', 'float', 'float_time']).contains(widget.type) ? 'oe-number' : ''}">
</div>
</t>
</t>
<t t-name="FieldURI.readonly">
<div>