Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

On/Off time(datetime field) doesn't cleared after cancel button is pressed

Avatar

Level 3

HI,

I opened page properties and filled some fields

filled properties

After I pressed cancel button, and reopened properties dialog, all field cleared, but datetime fields didn't.

reopend dialog

What is the rigth way to clear datetime fields?

Thanks.

1 Accepted Solution

Avatar

Correct answer by
Level 3

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); } }

View solution in original post

3 Replies

Avatar

Level 10

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. 

Avatar

Correct answer by
Level 3

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); } }

Avatar

Level 10

Nice observation - thank you for letting us know what you did.