From b623455c1d79da0815c36baaa5915e0cade3f5bf Mon Sep 17 00:00:00 2001 From: Achim Fritz Date: Fri, 31 Jan 2025 16:39:13 +0100 Subject: [PATCH] [BUGFIX] sorting when copyToLanguage child element are sorted after default language content element when copyToLanguage --- .../CommandMapPostProcessingHook.php | 2 ++ .../DatamapPreProcessFieldArrayHook.php | 6 +++--- .../LocalizeKeepsSorting-Dataset-1Result.csv | 16 ---------------- .../LocalizeKeepsSorting-Dataset2Result.csv | 16 ---------------- ...psParentIndependedOnOrderDataset1Result.csv | 18 +++++++++--------- ...psParentIndependedOnOrderDataset2Result.csv | 18 +++++++++--------- ...geParentIndependedOnOrderDataset1Result.csv | 18 +++++++++--------- ...geParentIndependedOnOrderDataset2Result.csv | 18 +++++++++--------- 8 files changed, 41 insertions(+), 71 deletions(-) delete mode 100644 Tests/Functional/Datahandler/Localization/Fixtures/CopyToLanguageSorting/LocalizeKeepsSorting-Dataset-1Result.csv delete mode 100644 Tests/Functional/Datahandler/Localization/Fixtures/CopyToLanguageSorting/LocalizeKeepsSorting-Dataset2Result.csv diff --git a/Classes/Hooks/Datahandler/CommandMapPostProcessingHook.php b/Classes/Hooks/Datahandler/CommandMapPostProcessingHook.php index 2fbdb028..f14b32c2 100644 --- a/Classes/Hooks/Datahandler/CommandMapPostProcessingHook.php +++ b/Classes/Hooks/Datahandler/CommandMapPostProcessingHook.php @@ -50,6 +50,7 @@ protected function localizeOrCopyToLanguage(int $uid, int $language, string $com { try { $container = $this->containerFactory->buildContainer($uid); + (GeneralUtility::makeInstance(DatahandlerProcess::class))->startContainerProcess($uid); $children = $container->getChildRecords(); $children = array_reverse($children); $cmd = ['tt_content' => []]; @@ -62,6 +63,7 @@ protected function localizeOrCopyToLanguage(int $uid, int $language, string $com $localDataHandler->start([], $cmd, $dataHandler->BE_USER); $localDataHandler->process_cmdmap(); } + (GeneralUtility::makeInstance(DatahandlerProcess::class))->endContainerProcess($uid); } catch (Exception $e) { // nothing todo } diff --git a/Classes/Hooks/Datahandler/DatamapPreProcessFieldArrayHook.php b/Classes/Hooks/Datahandler/DatamapPreProcessFieldArrayHook.php index 30fbb5ec..83aa3004 100644 --- a/Classes/Hooks/Datahandler/DatamapPreProcessFieldArrayHook.php +++ b/Classes/Hooks/Datahandler/DatamapPreProcessFieldArrayHook.php @@ -56,6 +56,9 @@ public function __construct( protected function newElementAfterContainer(array $incomingFieldArray): array { + if (($incomingFieldArray['l10n_source'] ?? 0) > 0 && (GeneralUtility::makeInstance(DatahandlerProcess::class))->isContainerInProcess((int)$incomingFieldArray['tx_container_parent'])) { + $incomingFieldArray['pid'] = -$incomingFieldArray['l10n_source']; + } $record = $this->database->fetchOneRecord(-(int)$incomingFieldArray['pid']); if ($record === null) { // new elements in container have already correct target @@ -64,9 +67,6 @@ protected function newElementAfterContainer(array $incomingFieldArray): array if ((int)$record['uid'] === (int)($incomingFieldArray['tx_container_parent'] ?? 0)) { return $incomingFieldArray; } - if (($record['l10n_source'] ?? 0) > 0 && (int)$record['l10n_source'] === (int)($incomingFieldArray['tx_container_parent'] ?? 0)) { - return $incomingFieldArray; - } if ((int)($incomingFieldArray['tx_container_parent'] ?? 0) > 0 && (GeneralUtility::makeInstance(DatahandlerProcess::class))->isContainerInProcess((int)$incomingFieldArray['tx_container_parent']) ) { diff --git a/Tests/Functional/Datahandler/Localization/Fixtures/CopyToLanguageSorting/LocalizeKeepsSorting-Dataset-1Result.csv b/Tests/Functional/Datahandler/Localization/Fixtures/CopyToLanguageSorting/LocalizeKeepsSorting-Dataset-1Result.csv deleted file mode 100644 index db7c2fb7..00000000 --- a/Tests/Functional/Datahandler/Localization/Fixtures/CopyToLanguageSorting/LocalizeKeepsSorting-Dataset-1Result.csv +++ /dev/null @@ -1,16 +0,0 @@ -"pages" -,"uid","pid","title" -,1,0,"page-1" -,2,0,"page-1-language-1" -"tt_content" -,"uid","pid","CType","header","sorting","sys_language_uid","colPos","tx_container_parent","l18n_parent" -,1,1,"b13-2cols-with-header-container","container-1",128,0,0,0,0 -,2,1,"header","child-1-1",256,0,200,1,0 -,3,1,"header","child-1-2",512,0,200,1,0 -,4,1,"b13-2cols-with-header-container","container-2",1024,0,0,0,0 -,5,1,"header","child-2-1",2048,0,200,4,0 -,6,1,"b13-2cols-with-header-container","[Translate to german:] container-2",2304,1,0,0,0 -,7,1,"header","[Translate to german:] child-2-1",2560,1,200,6,0 -,8,1,"b13-2cols-with-header-container","[Translate to german:] container-1",768,1,0,0,0 -,9,1,"header","[Translate to german:] child-1-2",896,1,200,8,0 -,10,1,"header","[Translate to german:] child-1-1",832,1,200,8,0 diff --git a/Tests/Functional/Datahandler/Localization/Fixtures/CopyToLanguageSorting/LocalizeKeepsSorting-Dataset2Result.csv b/Tests/Functional/Datahandler/Localization/Fixtures/CopyToLanguageSorting/LocalizeKeepsSorting-Dataset2Result.csv deleted file mode 100644 index 10382587..00000000 --- a/Tests/Functional/Datahandler/Localization/Fixtures/CopyToLanguageSorting/LocalizeKeepsSorting-Dataset2Result.csv +++ /dev/null @@ -1,16 +0,0 @@ -"pages" -,"uid","pid","title" -,1,0,"page-1" -,2,0,"page-1-language-1" -"tt_content" -,"uid","pid","CType","header","sorting","sys_language_uid","colPos","tx_container_parent","l18n_parent" -,1,1,"b13-2cols-with-header-container","container-1",128,0,0,0,0 -,2,1,"header","child-1-1",256,0,200,1,0 -,3,1,"header","child-1-2",512,0,200,1,0 -,4,1,"b13-2cols-with-header-container","container-2",1024,0,0,0,0 -,5,1,"header","child-2-1",2048,0,200,4,0 -,6,1,"b13-2cols-with-header-container","[Translate to german:] container-1",768,1,0,0,0 -,7,1,"header","[Translate to german:] child-1-2",896,1,200,6,0 -,8,1,"header","[Translate to german:] child-1-1",832,1,200,6,0 -,9,1,"b13-2cols-with-header-container","[Translate to german:] container-2",960,1,0,0,0 -,10,1,"header","[Translate to german:] child-2-1",992,1,200,9,0 diff --git a/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeTwoContainerKeepsParentIndependedOnOrderDataset1Result.csv b/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeTwoContainerKeepsParentIndependedOnOrderDataset1Result.csv index 0d7d0fae..8d63c75f 100644 --- a/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeTwoContainerKeepsParentIndependedOnOrderDataset1Result.csv +++ b/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeTwoContainerKeepsParentIndependedOnOrderDataset1Result.csv @@ -3,12 +3,12 @@ ,1,0,"page-1" ,2,0,"page-1-language-1" "tt_content" -,"uid","pid","CType","header","sorting","sys_language_uid","colPos","tx_container_parent","l18n_parent","l10n_source" -,1,1,"b13-2cols-with-header-container","container-language-1",256,0,0,0,0,0 -,2,1,"header","header-language-1",128,0,200,1,0,0 -,91,1,"b13-2cols-with-header-container","second-container",1028,0,0,0,0,0 -,92,1,"header","child-in-second-container-with-sorting-before-children-in-first-container",1,0,200,91,0,0 -,93,1,"b13-2cols-with-header-container","[Translate to german:] second-container",64,1,0,0,91,91 -,94,1,"header","[Translate to german:] child-in-second-container-with-sorting-before-children-in-first-container",32,1,200,91,92,92 -,95,1,"b13-2cols-with-header-container","[Translate to german:] container-language-1",192,1,0,0,1,1 -,96,1,"header","[Translate to german:] header-language-1",48,1,200,1,2,2 +,"uid","pid","CType","header","sys_language_uid","colPos","tx_container_parent","l18n_parent","l10n_source" +,1,1,"b13-2cols-with-header-container","container-language-1",0,0,0,0,0 +,2,1,"header","header-language-1",0,200,1,0,0 +,91,1,"b13-2cols-with-header-container","second-container",0,0,0,0,0 +,92,1,"header","child-in-second-container-with-sorting-before-children-in-first-container",0,200,91,0,0 +,93,1,"b13-2cols-with-header-container","[Translate to german:] second-container",1,0,0,91,91 +,94,1,"header","[Translate to german:] child-in-second-container-with-sorting-before-children-in-first-container",1,200,91,92,92 +,95,1,"b13-2cols-with-header-container","[Translate to german:] container-language-1",1,0,0,1,1 +,96,1,"header","[Translate to german:] header-language-1",1,200,1,2,2 diff --git a/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeTwoContainerKeepsParentIndependedOnOrderDataset2Result.csv b/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeTwoContainerKeepsParentIndependedOnOrderDataset2Result.csv index 5084c95d..b098a7a1 100644 --- a/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeTwoContainerKeepsParentIndependedOnOrderDataset2Result.csv +++ b/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeTwoContainerKeepsParentIndependedOnOrderDataset2Result.csv @@ -3,12 +3,12 @@ ,1,0,"page-1" ,2,0,"page-1-language-1" "tt_content" -,"uid","pid","CType","header","sorting","sys_language_uid","colPos","tx_container_parent","l18n_parent","l10n_source" -,1,1,"b13-2cols-with-header-container","container-language-1",256,0,0,0,0,0 -,2,1,"header","header-language-1",128,0,200,1,0,0 -,91,1,"b13-2cols-with-header-container","second-container",1028,0,0,0,0,0 -,92,1,"header","child-in-second-container-with-sorting-before-children-in-first-container",1,0,200,91,0,0 -,93,1,"b13-2cols-with-header-container","[Translate to german:] container-language-1",192,1,0,0,1,1 -,94,1,"header","[Translate to german:] header-language-1",160,1,200,1,2,2 -,95,1,"b13-2cols-with-header-container","[Translate to german:] second-container",224,1,0,0,91,91 -,96,1,"header","[Translate to german:] child-in-second-container-with-sorting-before-children-in-first-container",64,1,200,91,92,92 +,"uid","pid","CType","header","sys_language_uid","colPos","tx_container_parent","l18n_parent","l10n_source" +,1,1,"b13-2cols-with-header-container","container-language-1",0,0,0,0,0 +,2,1,"header","header-language-1",0,200,1,0,0 +,91,1,"b13-2cols-with-header-container","second-container",0,0,0,0,0 +,92,1,"header","child-in-second-container-with-sorting-before-children-in-first-container",0,200,91,0,0 +,93,1,"b13-2cols-with-header-container","[Translate to german:] container-language-1",1,0,0,1,1 +,94,1,"header","[Translate to german:] header-language-1",1,200,1,2,2 +,95,1,"b13-2cols-with-header-container","[Translate to german:] second-container",1,0,0,91,91 +,96,1,"header","[Translate to german:] child-in-second-container-with-sorting-before-children-in-first-container",1,200,91,92,92 diff --git a/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeWithCopyTwoContainerChangeParentIndependedOnOrderDataset1Result.csv b/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeWithCopyTwoContainerChangeParentIndependedOnOrderDataset1Result.csv index adf8c965..086b6aef 100644 --- a/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeWithCopyTwoContainerChangeParentIndependedOnOrderDataset1Result.csv +++ b/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeWithCopyTwoContainerChangeParentIndependedOnOrderDataset1Result.csv @@ -3,12 +3,12 @@ ,1,0,"page-1" ,2,0,"page-1-language-1" "tt_content" -,"uid","pid","CType","header","sorting","sys_language_uid","colPos","tx_container_parent","l18n_parent","l10n_source" -,1,1,"b13-2cols-with-header-container","container-language-1",256,0,0,0,0,0 -,2,1,"header","header-language-1",128,0,200,1,0,0 -,91,1,"b13-2cols-with-header-container","second-container",1028,0,0,0,0,0 -,92,1,"header","child-in-second-container-with-sorting-before-children-in-first-container",1,0,200,91,0,0 -,93,1,"b13-2cols-with-header-container","[Translate to german:] second-container",64,1,0,0,0,91 -,94,1,"header","[Translate to german:] child-in-second-container-with-sorting-before-children-in-first-container",96,1,200,93,0,92 -,95,1,"b13-2cols-with-header-container","[Translate to german:] container-language-1",192,1,0,0,0,1 -,96,1,"header","[Translate to german:] header-language-1",224,1,200,95,0,2 +,"uid","pid","CType","header","sys_language_uid","colPos","tx_container_parent","l18n_parent","l10n_source" +,1,1,"b13-2cols-with-header-container","container-language-1",0,0,0,0,0 +,2,1,"header","header-language-1",0,200,1,0,0 +,91,1,"b13-2cols-with-header-container","second-container",0,0,0,0,0 +,92,1,"header","child-in-second-container-with-sorting-before-children-in-first-container",0,200,91,0,0 +,93,1,"b13-2cols-with-header-container","[Translate to german:] second-container",1,0,0,0,91 +,94,1,"header","[Translate to german:] child-in-second-container-with-sorting-before-children-in-first-container",1,200,93,0,92 +,95,1,"b13-2cols-with-header-container","[Translate to german:] container-language-1",1,0,0,0,1 +,96,1,"header","[Translate to german:] header-language-1",1,200,95,0,2 diff --git a/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeWithCopyTwoContainerChangeParentIndependedOnOrderDataset2Result.csv b/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeWithCopyTwoContainerChangeParentIndependedOnOrderDataset2Result.csv index 9ac83cce..5f83a57f 100644 --- a/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeWithCopyTwoContainerChangeParentIndependedOnOrderDataset2Result.csv +++ b/Tests/Functional/Datahandler/Localization/Fixtures/Localize/LocalizeWithCopyTwoContainerChangeParentIndependedOnOrderDataset2Result.csv @@ -3,12 +3,12 @@ ,1,0,"page-1" ,2,0,"page-1-language-1" "tt_content" -,"uid","pid","CType","header","sorting","sys_language_uid","colPos","tx_container_parent","l18n_parent","l10n_source" -,1,1,"b13-2cols-with-header-container","container-language-1",256,0,0,0,0,0 -,2,1,"header","header-language-1",128,0,200,1,0,0 -,91,1,"b13-2cols-with-header-container","second-container",1028,0,0,0,0,0 -,92,1,"header","child-in-second-container-with-sorting-before-children-in-first-container",1,0,200,91,0,0 -,93,1,"b13-2cols-with-header-container","[Translate to german:] container-language-1",192,1,0,0,0,1 -,94,1,"header","[Translate to german:] header-language-1",224,1,200,93,0,2 -,95,1,"b13-2cols-with-header-container","[Translate to german:] second-container",240,1,0,0,0,91 -,96,1,"header","[Translate to german:] child-in-second-container-with-sorting-before-children-in-first-container",248,1,200,95,0,92 +,"uid","pid","CType","header","sys_language_uid","colPos","tx_container_parent","l18n_parent","l10n_source" +,1,1,"b13-2cols-with-header-container","container-language-1",0,0,0,0,0 +,2,1,"header","header-language-1",0,200,1,0,0 +,91,1,"b13-2cols-with-header-container","second-container",0,0,0,0,0 +,92,1,"header","child-in-second-container-with-sorting-before-children-in-first-container",0,200,91,0,0 +,93,1,"b13-2cols-with-header-container","[Translate to german:] container-language-1",1,0,0,0,1 +,94,1,"header","[Translate to german:] header-language-1",1,200,93,0,2 +,95,1,"b13-2cols-with-header-container","[Translate to german:] second-container",1,0,0,0,91 +,96,1,"header","[Translate to german:] child-in-second-container-with-sorting-before-children-in-first-container",1,200,95,0,92