BUG: Workspace module shows soft deletion for every fallback
When deleting a node ALL its fallbacks will be shown as soft removed:
The reason for this is that the we mark all dimensions as changed that were affected by the event.
Now during evaluation of the changes we are mostly only interested in the dimension that triggered the cascade.
A naïve idea would be to skip changes where the node never occupied that part, but this is wrong as for when marking fallbacks as soft removed (which works because its an edge operation) we ignore them in the listing as well
if ($node->originDimensionSpacePoint->equals($change->originDimensionSpacePoint) === false) {
// skip this change as the change projection also tracks affected fallback dimensions where a change never took place.
continue;
}
When deleting a node ALL its fallbacks will be shown as soft removed
But isn't that what effectively happens when published? So from an editor perspective it makes sense to see it?
jup that is true, but for setting properties we dont show the fallbacks here for example... and i thought it would make sense to have it aligned.
the tests show this as well:
Then I expect to have the following changes in workspace "user-workspace":
| nodeAggregateId | created | changed | moved | deleted | originDimensionSpacePoint |
| nody-mc-nodeface | 0 | 0 | 0 | 1 | {"language": "de"} |
# different to the actual NodeAggregateWasRemoved event, we dont have the $affectedOccupiedDimensionSpacePoints and mark all dimensions as removed, also fallbacks
| nody-mc-nodeface | 0 | 0 | 0 | 1 | {"language": "gsw"} |
it looks really fun if you create a node and remove that because its fallback will only say it was removed:
https://github.com/neos/neos-development-collection/blob/4cde4cff0bf78d7a3252f8eceaa3fb8a2bd6a54c/Neos.Neos/Tests/Behavior/Features/PendingChanges/NodeSoftRemoval/02-SoftRemoveNodeAggregate_WithDimensions.feature#L444-L445
A fix to make this consistent would be ALWAYS to check ALL affected dimension space points ... but NodeReferencesWereSet doesnt have this information and only $affectedSourceOriginDimensionSpacePoints
The fact that NodePropertiesWereSet has the $affectedDimensionSpacePoints was only done in more recent history and patched: https://github.com/neos/neos-development-collection/issues/4265