[IMP] transferred effective_readonly from abstractfield to formwidget
bzr revid: nicolas.vanhoren@openerp.com-20120928122858-bhdbamyw5by41g3d
This commit is contained in:
parent
6159063ae0
commit
2c2bb730f5
|
@ -1683,22 +1683,42 @@ instance.web.form.InvisibilityChanger = instance.web.Class.extend(instance.web.P
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
Base class for all fields, custom widgets and buttons to be displayed in the form view.
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- effective_readonly: when it is true, the widget is displayed as readonly. Vary depending
|
||||||
|
the values of the "readonly" property and the "mode" property on the field manager.
|
||||||
|
*/
|
||||||
instance.web.form.FormWidget = instance.web.Widget.extend(instance.web.form.InvisibilityChangerMixin, {
|
instance.web.form.FormWidget = instance.web.Widget.extend(instance.web.form.InvisibilityChangerMixin, {
|
||||||
/**
|
/**
|
||||||
* @constructs instance.web.form.FormWidget
|
* @constructs instance.web.form.FormWidget
|
||||||
* @extends instance.web.Widget
|
* @extends instance.web.Widget
|
||||||
*
|
*
|
||||||
* @param view
|
* @param field_manager
|
||||||
* @param node
|
* @param node
|
||||||
*/
|
*/
|
||||||
init: function(view, node) {
|
init: function(field_manager, node) {
|
||||||
this._super(view);
|
this._super(field_manager);
|
||||||
this.view = view;
|
this.view = field_manager;
|
||||||
|
this.field_manager = field_manager;
|
||||||
this.node = node;
|
this.node = node;
|
||||||
this.modifiers = JSON.parse(this.node.attrs.modifiers || '{}');
|
this.modifiers = JSON.parse(this.node.attrs.modifiers || '{}');
|
||||||
instance.web.form.InvisibilityChangerMixin.init.call(this, view, this.modifiers.invisible);
|
instance.web.form.InvisibilityChangerMixin.init.call(this, this.field_manager, this.modifiers.invisible);
|
||||||
|
|
||||||
this.view.on("view_content_has_changed", this, this.process_modifiers);
|
this.field_manager.on("view_content_has_changed", this, this.process_modifiers);
|
||||||
|
|
||||||
|
this.set({required: this.modifiers['required'] === true});
|
||||||
|
// some events to make the property "effective_readonly" sync automatically with "readonly" and
|
||||||
|
// "mode" on field_manager
|
||||||
|
var self = this;
|
||||||
|
this.set({"readonly": this.modifiers['readonly'] === true});
|
||||||
|
var test_effective_readonly = function() {
|
||||||
|
self.set({"effective_readonly": self.get("readonly") || self.field_manager.get("actual_mode") === "view"});
|
||||||
|
};
|
||||||
|
this.on("change:readonly", this, test_effective_readonly);
|
||||||
|
this.field_manager.on("change:actual_mode", this, test_effective_readonly);
|
||||||
|
test_effective_readonly.call(this);
|
||||||
},
|
},
|
||||||
renderElement: function() {
|
renderElement: function() {
|
||||||
this._super();
|
this._super();
|
||||||
|
@ -1808,8 +1828,8 @@ instance.web.form.FormWidget = instance.web.Widget.extend(instance.web.form.Invi
|
||||||
|
|
||||||
instance.web.form.WidgetButton = instance.web.form.FormWidget.extend({
|
instance.web.form.WidgetButton = instance.web.form.FormWidget.extend({
|
||||||
template: 'WidgetButton',
|
template: 'WidgetButton',
|
||||||
init: function(view, node) {
|
init: function(field_manager, node) {
|
||||||
this._super(view, node);
|
this._super(field_manager, node);
|
||||||
this.force_disabled = false;
|
this.force_disabled = false;
|
||||||
this.string = (this.node.attrs.string || '').replace(/_/g, '');
|
this.string = (this.node.attrs.string || '').replace(/_/g, '');
|
||||||
if (JSON.parse(this.node.attrs.default_focus || "0")) {
|
if (JSON.parse(this.node.attrs.default_focus || "0")) {
|
||||||
|
@ -1970,8 +1990,6 @@ instance.web.form.FieldInterface = {
|
||||||
* Abstract class for classes implementing FieldInterface.
|
* Abstract class for classes implementing FieldInterface.
|
||||||
*
|
*
|
||||||
* Properties:
|
* Properties:
|
||||||
* - effective_readonly: when it is true, the widget is displayed as readonly. Vary depending
|
|
||||||
* the values of the "readonly" property and the "mode" property on the field manager.
|
|
||||||
* - value: useful property to hold the value of the field. By default, set_value() and get_value()
|
* - value: useful property to hold the value of the field. By default, set_value() and get_value()
|
||||||
* set and retrieve the value property. Changing the value property also triggers automatically
|
* set and retrieve the value property. Changing the value property also triggers automatically
|
||||||
* a 'changed_value' event that inform the view to trigger on_changes.
|
* a 'changed_value' event that inform the view to trigger on_changes.
|
||||||
|
@ -1988,24 +2006,13 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w
|
||||||
init: function(field_manager, node) {
|
init: function(field_manager, node) {
|
||||||
var self = this
|
var self = this
|
||||||
this._super(field_manager, node);
|
this._super(field_manager, node);
|
||||||
this.field_manager = field_manager;
|
|
||||||
this.name = this.node.attrs.name;
|
this.name = this.node.attrs.name;
|
||||||
this.field = this.field_manager.get_field(this.name);
|
this.field = this.field_manager.get_field(this.name);
|
||||||
this.widget = this.node.attrs.widget;
|
this.widget = this.node.attrs.widget;
|
||||||
this.string = this.node.attrs.string || this.field.string || this.name;
|
this.string = this.node.attrs.string || this.field.string || this.name;
|
||||||
this.options = JSON.parse(this.node.attrs.options || '{}');
|
this.options = JSON.parse(this.node.attrs.options || '{}');
|
||||||
this.set({'value': false});
|
this.set({'value': false});
|
||||||
this.set({required: this.modifiers['required'] === true});
|
|
||||||
|
|
||||||
// some events to make the property "effective_readonly" sync automatically with "readonly" and
|
|
||||||
// "mode"
|
|
||||||
this.set({"readonly": this.modifiers['readonly'] === true});
|
|
||||||
var test_effective_readonly = function() {
|
|
||||||
self.set({"effective_readonly": self.get("readonly") || self.field_manager.get("actual_mode") === "view"});
|
|
||||||
};
|
|
||||||
this.on("change:readonly", this, test_effective_readonly);
|
|
||||||
this.field_manager.on("change:actual_mode", this, test_effective_readonly);
|
|
||||||
test_effective_readonly.call(this);
|
|
||||||
this.on("change:value", this, function() {
|
this.on("change:value", this, function() {
|
||||||
this.trigger('changed_value');
|
this.trigger('changed_value');
|
||||||
this._check_css_flags();
|
this._check_css_flags();
|
||||||
|
|
Loading…
Reference in New Issue