HI,
I opened page properties and filled some fields
After I pressed cancel button, and reopened properties dialog, all field cleared, but datetime fields didn't.
What is the rigth way to clear datetime fields?
Thanks.
Solved! Go to Solution.
I was debuggin and find out strange behavior of isApplyDefault method in \ibs\cq\ui\widgets\source\ext\override\widgets\form\Field.js. It is compare created and modefied date, if they equals returns true, otherwise false.
I just ovveride method processRecord in DateTime.js to remove calling isApplyDefault:
processRecord: function(record, path) { if (this.fireEvent('beforeloadcontent', this, record, path) !== false) { var v = record.get(this.getName()); if (v == undefined && this.defaultValue != null) { this.setValue(this.defaultValue); } else { this.setValue(v); } this.fireEvent('loadcontent', this, record, path); } }
in Field.js it is:
processRecord: function(record, path) { if (this.fireEvent('beforeloadcontent', this, record, path) !== false) { var v = record.get(this.getName()); if (v == undefined && this.defaultValue != null) { if (this.isApplyDefault(record, path)) { this.setValue(this.defaultValue); } } else { this.setValue(v); } this.fireEvent('loadcontent', this, record, path); } }
Views
Replies
Total Likes
See the API reference for a DateTime Object:
http://docs.adobe.com/docs/en/cq/5-6/widgets-api/index.html?class=CQ.form.DateTime
If the out of the box xtype is not clearing the way you want - write a custom xtype that uses a DateTime object. Then on the open event of the dialog - call SetValue and pass an empty value - which will clear the field. Then you can set new values each time you open the dialog.
Views
Replies
Total Likes
I was debuggin and find out strange behavior of isApplyDefault method in \ibs\cq\ui\widgets\source\ext\override\widgets\form\Field.js. It is compare created and modefied date, if they equals returns true, otherwise false.
I just ovveride method processRecord in DateTime.js to remove calling isApplyDefault:
processRecord: function(record, path) { if (this.fireEvent('beforeloadcontent', this, record, path) !== false) { var v = record.get(this.getName()); if (v == undefined && this.defaultValue != null) { this.setValue(this.defaultValue); } else { this.setValue(v); } this.fireEvent('loadcontent', this, record, path); } }
in Field.js it is:
processRecord: function(record, path) { if (this.fireEvent('beforeloadcontent', this, record, path) !== false) { var v = record.get(this.getName()); if (v == undefined && this.defaultValue != null) { if (this.isApplyDefault(record, path)) { this.setValue(this.defaultValue); } } else { this.setValue(v); } this.fireEvent('loadcontent', this, record, path); } }
Views
Replies
Total Likes
Nice observation - thank you for letting us know what you did.