diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index 1c633d99c86..c6426095cb1 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -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);
diff --git a/addons/web/static/src/js/view_page.js b/addons/web/static/src/js/view_page.js
index 707bfc4f2b5..c263582f94b 100644
--- a/addons/web/static/src/js/view_page.js
+++ b/addons/web/static/src/js/view_page.js
@@ -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'
});
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index 7ee908ae43c..8aa0241a5b5 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -943,20 +943,22 @@
-
-
-
-
-
+
+
+
+
+
+
+