N°2250 - DisplayObject with ormLinkSet ignore Removed

This commit is contained in:
Eric Espie
2023-05-03 14:39:14 +02:00
parent 5a856f96eb
commit 4f6e74a3ee
10 changed files with 101 additions and 39 deletions

View File

@@ -69,13 +69,19 @@ class LinkSetUIBlockFactory extends SetUIBlockFactory
// Current value
$aCurrentValues = LinkSetDataTransformer::Decode($oDbObjectSet, $sTargetClass, $sTargetField);
// Some operations can have been done in case of reload after an error
$aInitialValues = LinkSetDataTransformer::Decode($oDbObjectSet->GetOriginalSet(), $sTargetClass, $sTargetField);
// Initial options data
$aInitialOptions = LinkSetRepository::LinksDbSetToTargetObjectArray($oDbObjectSet, $sTargetClass, $sTargetField);
$aInitialOptions = [];
LinkSetRepository::LinksDbSetToTargetObjectArray($oDbObjectSet, false, $aInitialOptions, $sTargetClass, $sTargetField);
// Register also original values in case of reload after an error. In order to remember the operations, use the "bForce" flag
LinkSetRepository::LinksDbSetToTargetObjectArray($oDbObjectSet->GetOriginalSet(), true, $aInitialOptions, $sTargetClass, $sTargetField);
if ($aInitialOptions !== null) {
$oSetUIBlock->GetDataProvider()->SetOptions($aInitialOptions);
$oSetUIBlock->GetDataProvider()->SetOptions(array_values($aInitialOptions));
// Set value
$oSetUIBlock->SetValue(json_encode($aCurrentValues));
$oSetUIBlock->SetInitialValue(json_encode($aInitialValues));
} else {
$oSetUIBlock->SetHasError(true);
}