Skip to content

Commit

Permalink
[BUGFIX] sorting when copyToLanguage
Browse files Browse the repository at this point in the history
move translated elements after localization to correct position
  • Loading branch information
achimfritz committed Feb 3, 2025
1 parent 375309c commit d1fc9bd
Show file tree
Hide file tree
Showing 17 changed files with 128 additions and 90 deletions.
31 changes: 26 additions & 5 deletions Classes/Hooks/Datahandler/CommandMapPostProcessingHook.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

use B13\Container\Domain\Factory\ContainerFactory;
use B13\Container\Domain\Factory\Exception;
use B13\Container\Domain\Service\ContainerService;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\DataHandling\DataHandler;
use TYPO3\CMS\Core\Utility\GeneralUtility;
Expand Down Expand Up @@ -50,17 +51,37 @@ protected function localizeOrCopyToLanguage(int $uid, int $language, string $com
{
try {
$container = $this->containerFactory->buildContainer($uid);
$last = $dataHandler->copyMappingArray['tt_content'][$uid] ?? null;
if ($command === 'copyToLanguage') {
$containerId = $last;
} else {
$containerId = $container->getUid();
}
$children = $container->getChildRecords();
$children = array_reverse($children);
$cmd = ['tt_content' => []];
foreach ($children as $colPos => $record) {
$cmd['tt_content'][$record['uid']] = [$command => $language];
}
if (count($cmd['tt_content']) > 0) {
$cmd = ['tt_content' => [$record['uid'] => [$command => $language]]];
$localDataHandler = GeneralUtility::makeInstance(DataHandler::class);
$localDataHandler->enableLogging = $dataHandler->enableLogging;
$localDataHandler->start([], $cmd, $dataHandler->BE_USER);
$localDataHandler->process_cmdmap();
$newId = $localDataHandler->copyMappingArray['tt_content'][$record['uid']] ?? null;
if ($newId === null) {
continue;
}
$cmd = ['tt_content' => [$newId=> [
'move' => [
'target' => -$last,
'action' => 'paste',
'update' => [
'tx_container_parent' => $containerId,
]
]
]]];
$localDataHandler = GeneralUtility::makeInstance(DataHandler::class);
$localDataHandler->enableLogging = $dataHandler->enableLogging;
$localDataHandler->start([], $cmd, $dataHandler->BE_USER);
$localDataHandler->process_cmdmap();
$last = $newId;
}
} catch (Exception $e) {
// nothing todo
Expand Down
3 changes: 0 additions & 3 deletions Classes/Hooks/Datahandler/DatamapPreProcessFieldArrayHook.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,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'])
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,22 @@ public function localizeWithNestedElements(): void
$this->dataHandler->process_cmdmap();
self::assertCSVDataSet(__DIR__ . '/Fixtures/CopyToLanguageSorting/LocalizeWithNestedElementsResult.csv');
}

/**
* @test
*/
public function localizeWithMultipleNestedElements(): void
{
$this->importCSVDataSet(__DIR__ . '/Fixtures/CopyToLanguageSorting/LocalizeWithMultipleNestedElements.csv');
$cmdmap = [
'tt_content' => [
1 => [
'copyToLanguage' => 4,
],
],
];
$this->dataHandler->start([], $cmdmap, $this->backendUser);
$this->dataHandler->process_cmdmap();
self::assertCSVDataSet(__DIR__ . '/Fixtures/CopyToLanguageSorting/LocalizeWithMultipleNestedElementsResult.csv');
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
,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
,7,1,"header","[Translate to german:] child-2-1",2432,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
,10,1,"header","[Translate to german:] child-1-2",880,1,200,8,0
,9,1,"header","[Translate to german:] child-1-1",832,1,200,8,0
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
,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
,8,1,"header","[Translate to german:] child-1-2",880,1,200,6,0
,7,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",952,1,0,0,0
,10,1,"header","[Translate to german:] child-2-1",970,1,200,9,0
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
"pages"
,"uid","pid","title"
,"1","0","page-1"
,"4","0","[Translate to de:] page-1"
"tt_content"
,"uid","pid","CType","header","sorting","sys_language_uid","colPos","tx_container_parent","l10n_source"
,"1","1","b13-2cols-with-header-container","1","256","0","0","0","0"
,"2","1","b13-2cols-with-header-container","2","512","0","200","1","0"
,"3","1","b13-2cols-with-header-container","3","768","0","201","2","0"
,"4","1","b13-2cols-with-header-container","4","1024","0","200","3","0"
,"5","1","b13-2cols-with-header-container","7","1280","0","200","3","0"
,"6","1","b13-2cols-with-header-container","5","1152","0","200","4","0"
,"7","1","header","6","1216","0","200","6","0"

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"pages"
,"uid","pid","title"
,"1","0","page-1"
,"4","0","[Translate to de:] page-1"
"tt_content"
,"uid","pid","CType","header","sorting","sys_language_uid","colPos","tx_container_parent","l10n_source"
,"1","1","b13-2cols-with-header-container","1","256","0","0","0","0"
,"2","1","b13-2cols-with-header-container","2","512","0","200","1","0"
,"3","1","b13-2cols-with-header-container","3","768","0","201","2","0"
,"4","1","b13-2cols-with-header-container","4","1024","0","200","3","0"
,"5","1","b13-2cols-with-header-container","7","1280","0","200","3","0"
,"6","1","b13-2cols-with-header-container","5","1152","0","200","4","0"
,"7","1","header","6","1216","0","200","6","0"
,"8","1","b13-2cols-with-header-container","[Translate to English-Free:] 1","1536","4","0","0","1"
,"9","1","b13-2cols-with-header-container","[Translate to English-Free:] 2","1664","4","200","8","2"
,"10","1","b13-2cols-with-header-container","[Translate to English-Free:] 3","1792","4","201","9","3"
,"11","1","b13-2cols-with-header-container","[Translate to English-Free:] 4","1840","4","200","10","4"
,"12","1","b13-2cols-with-header-container","[Translate to English-Free:] 5","1864","4","200","11","6"
,"13","1","header","[Translate to English-Free:] 6","1876","4","200","12","7"
,"14","1","b13-2cols-with-header-container","[Translate to English-Free:] 7","1888","4","200","10","5"

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
,"3","1","header","child-2-1","768","0","201","2","0","0"
,"4","1","header","child-2-2","1024","0","201","2","0","0"
,"5","1","b13-2cols-with-header-container","[Translate to English-Free:] container-1","1280","4","0","0","0","1"
,"6","1","b13-2cols-with-header-container","[Translate to English-Free:] container-2","1536","4","201","5","0","2"
,"8","1","header","[Translate to English-Free:] child-2-1","1664","4","201","6","0","3"
,"7","1","header","[Translate to English-Free:] child-2-2","1792","4","201","6","0","4"

,"6","1","b13-2cols-with-header-container","[Translate to English-Free:] container-2","1408","4","201","5","0","2"
,"7","1","header","[Translate to English-Free:] child-2-1","1472","4","201","6","0","3"
,"8","1","header","[Translate to English-Free:] child-2-2","1536","4","201","6","0","4"
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
,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
,3,1,"b13-2cols-with-header-container","[Translate to german:] container-language-1",192,1,0,0,0,1
,4,1,"header","[Translate to german:] header-language-1",224,1,200,3,0,2
,4,1,"header","[Translate to german:] header-language-1",208,1,200,3,0,2
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@
,21,1,"b13-2cols-with-header-container","container-language-1",768,1,0,0,1,0
,22,1,"header","header-language-1",128,1,200,1,2,0
,23,1,"b13-2cols-with-header-container","[Translate to france:] container-language-1",1024,2,0,0,0,21
,24,1,"header","[Translate to france:] header-language-1",384,2,200,23,0,22
,24,1,"header","[Translate to france:] header-language-1",1280,2,200,23,0,22
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
,51,1,"b13-2cols-with-header-container","container-language-1",256,1,0,0,0,0
,52,1,"header","header-language-1",257,1,200,51,0,0
,53,1,"b13-2cols-with-header-container","[Translate to france:] container-language-1",513,2,0,0,0,51
,54,1,"header","[Translate to france:] header-language-1",769,2,200,53,0,52
,54,1,"header","[Translate to france:] header-language-1",641,2,200,53,0,52
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit d1fc9bd

Please sign in to comment.