N°8758 - Fix mandatory caselog in transition requiring double confirmation#868
Conversation
|
| Filename | Overview |
|---|---|
| js/forms-json-utils.js | Refactors CKEditor validation into a shared EvaluateCKEditorValidation helper and fixes ValidateCaseLogField to read directly from CKEditor instead of the underlying textarea; however, ValidateCaseLogField passes originalValue instead of sOriginalValue to the shared helper, silently breaking the "value must be changed" validation path for case log fields. |
Sequence Diagram
sequenceDiagram
participant Form
participant ValidateCaseLogField
participant EvaluateCKEditorValidation
participant CombodoCKEditorHandler
participant CKEditor
Form->>ValidateCaseLogField: validate(sFieldId, bMandatory, ...)
ValidateCaseLogField->>EvaluateCKEditorValidation: call with options {sFieldId, sFormId, originalValue ⚠️, validate, onRetry, onChange}
EvaluateCKEditorValidation->>CombodoCKEditorHandler: GetInstanceSynchronous(#sFieldId)
alt CKEditor not yet ready
CombodoCKEditorHandler-->>EvaluateCKEditorValidation: undefined
EvaluateCKEditorValidation->>CombodoCKEditorHandler: GetInstance(#sFieldId).then(onRetry)
EvaluateCKEditorValidation-->>ValidateCaseLogField: return false
else CKEditor ready
CombodoCKEditorHandler-->>EvaluateCKEditorValidation: oCKEditor instance
EvaluateCKEditorValidation->>CKEditor: getData()
CKEditor-->>EvaluateCKEditorValidation: sFormattedContent
Note over EvaluateCKEditorValidation: Extract sTextContent from HTML
Note over EvaluateCKEditorValidation: oOptions.sOriginalValue is undefined ⚠️ so sTextOriginalContents = undefined
EvaluateCKEditorValidation->>ValidateCaseLogField: validate(sTextContent, undefined)
ValidateCaseLogField-->>EvaluateCKEditorValidation: {bValid, sExplain}
EvaluateCKEditorValidation->>CKEditor: once('change:data', onChange)
EvaluateCKEditorValidation->>Form: ReportFieldValidationStatus(...)
EvaluateCKEditorValidation-->>ValidateCaseLogField: return bValid
end
Reviews (1): Last reviewed commit: "Bring back lost methods" | Re-trigger Greptile
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Base information
Symptom (bug) / Objective (enhancement)
When a caselog attribute is set mandatory in a transition, even after adding content to it a "Please fill all mandatory fields" error appears, a second submit is necessary
Reproduction procedure (bug)
Use this delta, then try to close a work order on iTop 3.2.2
Cause (bug)
When updating to CKEditor5,
ValidateCKEditFieldwas updated but notValidateCaseLogFieldthat's used in transitionsProposed solution (bug and enhancement)
Factorize
ValidateCKEditFieldcode and use it inValidateCaseLogFieldChecklist before requesting a review