[MGNLUI-4081] readOnly checkbox doesn't appear in JCR data Created: 17/Nov/16  Updated: 16/Feb/18  Resolved: 20/Feb/17

Status: Closed
Project: Magnolia UI
Component/s: forms
Affects Version/s: 5.4.9, 5.5
Fix Version/s: 5.4.12, 5.5.3

Type: Bug Priority: Neutral
Reporter: Viet Nguyen Assignee: Evzen Fochr
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: 0d
Time Spent: 1.25d
Original Estimate: Not Specified

Issue Links:
Relates
relates to MGNLUI-3489 Support field default value for local... Closed
relates to MGNLUI-4181 Checkbox field is editable even if 'r... Closed
causality
is causing MGNLUI-4155 Cannot add new an asset in DAM applic... Closed
is causing MGNLUI-4193 Conflict between jcrName and setNodeN... Closed
is causing MGNLUI-4368 readOnly property is not working for ... Closed
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Sprint: Kromeriz 84
Story Points: 8

 Description   

Thanks to sfroger in SUPPORT-6874, currently when user set field's config 'readOnly' to 'true', our 'defaultValue' is no longer used when populating its value. This issue leads to no value saved into their JCR persistent.
Expected result: Separate logic of 'defaultValue' and 'readOnly' in fields which means:
1. When a field is readOnly, make it read only from editors.
2. When user set its 'defaultValue', put that value to field's value.
Grep code:

info.magnolia.ui.form.field.factory.AbstractFieldFactory.setPropertyDataSourceDefaultValue(Property) {
    ...
    if (defaultValue != null && !definition.isReadOnly()) {
        ....
        property.setValue(defaultValue);
    }
}

Solution:
Keep Transformer unaware of definition #readOnly state, only mirror that of the underlying data-source

  • Let FieldFactory set defaultValue even if definition is readOnly, but not if underlying property is
  • Keep setting field as read-only based on the definition, only at the end of the chain in #setConstraints
  • Document Transformer#isReadOnly with intent, and deprecate setter
  • In particular, Transformer must not affect the underlying property's read-only state
  • Add test from Evzen
  • De-abstract BasicTransformer property instantiation for initial value vs. cross-type override (while retaining read-only state);
  • Apply lessons learned from BasicTransformer to FileTransformer

Generated at Mon Feb 12 09:13:03 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.