[BUGFIX] Add allowLanguageSynchronization chain resolving 52/51952/15
authorOliver Hader <oliver@typo3.org>
Sat, 4 Mar 2017 12:39:15 +0000 (13:39 +0100)
committerOliver Hader <oliver.hader@typo3.org>
Sat, 11 Mar 2017 18:12:39 +0000 (19:12 +0100)
commite7217da45d1528101aaa2577940a489f45b3029e
tree67cf2c20f352c458d36c55d68861a6ba8b590d42
parent3f35a3c18062ff26ec1551cef80bd7ff13d4e9d2
[BUGFIX] Add allowLanguageSynchronization chain resolving

Currently the localization behavior does not consider localization
chains concerning field values to be synchronized over multiple
localization hops that use the relative l10n_state "source".

Imagine the following scenario of content elements:
* { uid:10, sys_language_uid:0, l18n_parent:0, l10n_source:0,
    header:Value, l10n_state:null }
* { uid:11, sys_language_uid:1, l18n_parent:10, l10n_source:10,
    header:Value, l10n_state:{header:parent} }
* { uid:12, sys_language_uid:2, l18n_parent:10, l10n_source:11,
    header:Value, l10n_state:{header:source} }

Now if the record of the default language (uid:10) will be updated and
the header value set to "Modified", only direct dependents would be
synchronized. The automated update of the direct-child localization
record (uid:11) does not trigger another update for the grand-child
localization (uid:12).
To achieve this, the data-map processor has been extended to collect
new modifications to the data-map caused by synchronization processes
- as long as modifications could be determined, another synchronization
round is triggered for the modified items.
This way the localization chain is completely synchronized if required,
depending on the according l10n_state settings.

Change-Id: Ic08460f3ed0071f3dca6c6d1666031895bc3d832
Resolves: #80141
Releases: master
Reviewed-on: https://review.typo3.org/51952
Tested-by: TYPO3com <no-reply@typo3.com>
Tested-by: Susanne Moog <susanne.moog@typo3.org>
Reviewed-by: Susanne Moog <susanne.moog@typo3.org>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
13 files changed:
typo3/sysext/core/Classes/DataHandling/Localization/DataMapProcessor.php
typo3/sysext/core/Tests/Functional/DataHandling/Group/AbstractActionTestCase.php
typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/ActionTest.php
typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/localizeContentChainOfRelationWSynchronizationSource.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/localizeContentOfRelationWSynchronization.csv
typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/AbstractActionTestCase.php
typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/ActionTest.php
typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/localizeParentContentChainWAllChildrenSelectNLanguageSynchronizationSource.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/localizeParentContentWAllChildrenSelectNLanguageSynchronization.csv
typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWSynchronizationDefault.csv
typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWSynchronizationSource.csv [new file with mode: 0644]