diff --git a/components/testing_framework/core/FunctionalTestCase.php b/components/testing_framework/core/FunctionalTestCase.php index e8618b34890fae57d9ec5d2cc5f939cd52010586..867df0064e09adee10cb7d376fd76e8304861b7b 100644 --- a/components/testing_framework/core/FunctionalTestCase.php +++ b/components/testing_framework/core/FunctionalTestCase.php @@ -365,8 +365,9 @@ abstract class FunctionalTestCase extends BaseTestCase foreach ($typoScriptFiles as $typoScriptFile) { $templateFields['config'] .= '<INCLUDE_TYPOSCRIPT: source="FILE:' . $typoScriptFile . '">' . LF; } - - GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_template')->insert( + $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_template'); + $connection->delete('sys_template', ['pid' => $pageId]); + $connection->insert( 'sys_template', $templateFields ); diff --git a/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php b/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php index 5e4e864d2af75a9d78ec969fcd194edcaaef0993..66b2fb5e9f48f09e883abbf45ed844c9d8702152 100644 --- a/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php +++ b/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php @@ -226,22 +226,8 @@ class LocalizationController 'localize' => $destLanguageId ]; } else { - $previousUid = $this->localizationRepository->getPreviousLocalizedRecordUid( - 'tt_content', - $currentUid, - $pageId, - $srcLanguageId, - $destLanguageId - ); $cmd['tt_content'][$currentUid] = [ - 'copy' => [ - 'action' => 'paste', - 'target' => -$previousUid, - 'update' => [ - 'sys_language_uid' => $destLanguageId, - 'l18n_parent' => 0 - ] - ] + 'copyToLanguage' => $destLanguageId, ]; } } diff --git a/typo3/sysext/backend/Tests/Functional/Controller/Page/LocalizationControllerTest.php b/typo3/sysext/backend/Tests/Functional/Controller/Page/LocalizationControllerTest.php index 0d30f133425218f7ae1a9d7715da94fb4c791df4..243cd9311a8c890fba518deaf9e5b69343bab0d1 100644 --- a/typo3/sysext/backend/Tests/Functional/Controller/Page/LocalizationControllerTest.php +++ b/typo3/sysext/backend/Tests/Functional/Controller/Page/LocalizationControllerTest.php @@ -181,19 +181,19 @@ class LocalizationControllerTest extends \TYPO3\CMS\Components\TestingFramework\ 'pid' => 1, 'sys_language_uid' => 2, 'l18n_parent' => 0, - 'header' => 'Test content 1 (copy 1)', + 'header' => '[Translate to Deutsch:] Test content 1', ], [ 'pid' => 1, 'sys_language_uid' => 2, 'l18n_parent' => 0, - 'header' => 'Test content 2 (copy 1)', + 'header' => '[Translate to Deutsch:] Test content 2', ], [ 'pid' => 1, 'sys_language_uid' => 2, 'l18n_parent' => 0, - 'header' => 'Test content 3 (copy 1)', + 'header' => '[Translate to Deutsch:] Test content 3', ], ]; $queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tt_content'); @@ -239,19 +239,19 @@ class LocalizationControllerTest extends \TYPO3\CMS\Components\TestingFramework\ 'pid' => 1, 'sys_language_uid' => 2, 'l18n_parent' => 0, - 'header' => 'Test indhold 1 (copy 1)', + 'header' => '[Translate to Deutsch:] Test indhold 1', ], [ 'pid' => 1, 'sys_language_uid' => 2, 'l18n_parent' => 0, - 'header' => 'Test indhold 2 (copy 1)', + 'header' => '[Translate to Deutsch:] Test indhold 2', ], [ 'pid' => 1, 'sys_language_uid' => 2, 'l18n_parent' => 0, - 'header' => 'Test indhold 3 (copy 1)', + 'header' => '[Translate to Deutsch:] Test indhold 3', ], ]; $queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tt_content'); @@ -321,25 +321,25 @@ class LocalizationControllerTest extends \TYPO3\CMS\Components\TestingFramework\ 'pid' => 1, 'sys_language_uid' => 1, 'l18n_parent' => 0, - 'header' => 'Test content 1 (copy 1)', + 'header' => '[Translate to Dansk:] Test content 1', ], [ 'pid' => 1, 'sys_language_uid' => 1, 'l18n_parent' => 0, - 'header' => 'Test content 2 (copy 1)', + 'header' => '[Translate to Dansk:] Test content 2.5', ], [ 'pid' => 1, 'sys_language_uid' => 1, 'l18n_parent' => 0, - 'header' => 'Test content 2.5 (copy 1)', + 'header' => '[Translate to Dansk:] Test content 2', ], [ 'pid' => 1, 'sys_language_uid' => 1, 'l18n_parent' => 0, - 'header' => 'Test content 3 (copy 1)', + 'header' => '[Translate to Dansk:] Test content 3', ], ]; $queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tt_content'); diff --git a/typo3/sysext/core/Classes/DataHandling/DataHandler.php b/typo3/sysext/core/Classes/DataHandling/DataHandler.php index 38e03d6e9bc0ed9ac725aa08ac2bf9e5d31b33ab..c58ebf3255cd6195fbf43fbbf5419e0162276589 100644 --- a/typo3/sysext/core/Classes/DataHandling/DataHandler.php +++ b/typo3/sysext/core/Classes/DataHandling/DataHandler.php @@ -137,6 +137,15 @@ class DataHandler */ public $dontProcessTransformations = false; + /** + * Will distinguish between translations (with parent) and localizations (without parent) while still using the same methods to copy the records + * TRUE: translation of a record connected to the default language + * FALSE: localization of a record without connection to the default language + * + * @var bool + */ + protected $useTransOrigPointerField = true; + /** * TRUE: (traditional) Updates when record is saved. For flexforms, updates if change is made to the localized value. * FALSE: Will not update anything. @@ -3214,6 +3223,11 @@ class DataHandler $procId = $this->copyMappingArray[$table][$id]; break; case 'localize': + $this->useTransOrigPointerField = true; + $this->localize($table, $id, $value); + break; + case 'copyToLanguage': + $this->useTransOrigPointerField = false; $this->localize($table, $id, $value); break; case 'inlineLocalizeSynchronize': @@ -4487,7 +4501,10 @@ class DataHandler } $this->registerNestedElementCall($table, $uid, 'localize'); - if ((!$GLOBALS['TCA'][$table]['ctrl']['languageField'] || !$GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] || $table === 'pages_language_overay') && $table !== 'pages') { + if ((!$GLOBALS['TCA'][$table]['ctrl']['languageField'] + || !$GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] + || $table === 'pages_language_overay') + && $table !== 'pages') { if ($this->enableLogging) { $this->newlog('Localization failed; "languageField" and "transOrigPointerField" must be defined for the table!', 1); } @@ -4567,8 +4584,12 @@ class DataHandler // If the translated record is a default language record, set it's uid as localization parent of the new record. // If translating from any other language, no override is needed; we just can copy the localization parent of // the original record (which is pointing to the correspondent default language record) to the new record. - if ($row[$GLOBALS['TCA'][$table]['ctrl']['languageField']] === 0 || $table === 'pages') { + // In copy / free mode the TransOrigPointer field is always set to 0, as no connection to the localization parent is wanted in that case. + if (($this->useTransOrigPointerField && (int)$row[$GLOBALS['TCA'][$table]['ctrl']['languageField']] === 0) + || $table === 'pages') { $overrideValues[$GLOBALS['TCA'][$Ttable]['ctrl']['transOrigPointerField']] = $uid; + } elseif (!$this->useTransOrigPointerField) { + $overrideValues[$GLOBALS['TCA'][$Ttable]['ctrl']['transOrigPointerField']] = 0; } // Copy the type (if defined in both tables) from the original record so that translation has same type as original record if (isset($GLOBALS['TCA'][$table]['ctrl']['type']) && isset($GLOBALS['TCA'][$Ttable]['ctrl']['type'])) { diff --git a/typo3/sysext/core/Documentation/Changelog/master/Important-75400-NewDataHandlerCommandCopyToLanguage.rst b/typo3/sysext/core/Documentation/Changelog/master/Important-75400-NewDataHandlerCommandCopyToLanguage.rst new file mode 100644 index 0000000000000000000000000000000000000000..f7cdaf2e87bba749d424cb09f49d561443e81f55 --- /dev/null +++ b/typo3/sysext/core/Documentation/Changelog/master/Important-75400-NewDataHandlerCommandCopyToLanguage.rst @@ -0,0 +1,21 @@ +.. include:: ../../Includes.txt + +============================================================ +Important: #75400 - New DataHandler command 'copyToLanguage' +============================================================ + +See :issue:`75400` + +Description +=========== + +A new DataHandler command 'copyToLanguage' has been introduced. It behaves like 'localize' command +(both record and child records are copied to given language), but does not set transOrigPointerField fields (e.g. l10n_parent). + +The 'copyToLanguage' command should be used when localizing records in the "Free Mode". This command is used when localizing +content elements using translation wizard's "Copy" strategy. + +The 'localize' DataHandler command should be used when translating records in "Connected Mode" (strict translation of records from the default language). +This command is used when selecting "Translate" strategy in content elements translation wizard. + +.. index:: PHP-API \ No newline at end of file diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php index f0f349f896521b0ac5a9b345f6b342301e2ffd0b..3ff620b532cc09e9aa2dfc0215ea8cdd5e9c7f75 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php @@ -87,6 +87,15 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D $this->recordIds['copiedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; } + /** + * @see Modify/DataSet/copyContentToLanguage.csv + */ + public function copyContentToLanguage() + { + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + /** * @see Modify/DataSet/localizeContent.csv */ diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php index 45574a1dfa7c74b44cfa237e60bac74eab7899e8..20846c352f8740b4537b5ee4c4ac4200da8119a7 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php @@ -78,6 +78,28 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\FAL\Abstr ->setTable(self::TABLE_FileReference)->setField('title')->setValues('This is Kasper', 'Taken at T3BOARD')); } + /** + * @test + * @see DataSet/copyContentToLanguage.csv + */ + public function copyContentToLanguage() + { + parent::copyContentToLanguage(); + $this->assertAssertionDataSet('copyContentToLanguage'); + + $this->setUpFrontendRootPage(1, [ + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts', + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts' + ]); + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint() + ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #2')); + + $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['localizedContentId'])->setRecordField(self::FIELD_ContentImage) + ->setTable(self::TABLE_FileReference)->setField('title')->setValues('[Translate to Dansk:] This is Kasper', '[Translate to Dansk:] Taken at T3BOARD')); + } + /** * @test * @see DataSet/localizeContent.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContentToLanguage.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContentToLanguage.csv new file mode 100644 index 0000000000000000000000000000000000000000..d8f00fd9b64360eead1bda0dae873b03f2bb0b07 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContentToLanguage.csv @@ -0,0 +1,13 @@ +sys_file_reference,,,,,,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link +,126,89,128,0,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,, +,127,89,64,0,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,, +,128,89,32,0,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,Taken at T3BOARD,,, +,129,89,16,0,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,This is Kasper,,, +,130,89,48,0,1,0,0,0,0,0,0,0,21,332,tt_content,image,1,sys_file,[Translate to Dansk:] Taken at T3BOARD,,, +,131,89,24,0,1,0,0,0,0,0,0,0,1,332,tt_content,image,2,sys_file,[Translate to Dansk:] This is Kasper,,, +tt_content,,,,,,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,,,,,,,, +,330,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,2,,,,,,,, +,331,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,2,,,,,,,, +,332,89,768,0,1,0,331,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,2,,,,,,,, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Framework/ActionService.php b/typo3/sysext/core/Tests/Functional/DataHandling/Framework/ActionService.php index 2dd6cf8d4953b9550742e78a1f9f5626bed5b8f2..7638fe67244f90c4ce38d4a69b490843274caf27 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/Framework/ActionService.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Framework/ActionService.php @@ -304,6 +304,27 @@ class ActionService return $this->dataHandler->copyMappingArray; } + /** + * @param string $tableName + * @param int $uid + * @param int $languageId + * @return array + */ + public function copyRecordToLanguage($tableName, $uid, $languageId) + { + $commandMap = [ + $tableName => [ + $uid => [ + 'copyToLanguage' => $languageId, + ], + ], + ]; + $this->createDataHandler(); + $this->dataHandler->start([], $commandMap); + $this->dataHandler->process_cmdmap(); + return $this->dataHandler->copyMappingArray; + } + /** * @param string $tableName * @param int $uid diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Group/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/Group/AbstractActionTestCase.php index 2a2821ace64dfc08041b3325dd07878f736b55da..b0950f8fc0e181a9c29debf561a4c9534afa93a1 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/Group/AbstractActionTestCase.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Group/AbstractActionTestCase.php @@ -187,6 +187,26 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D $this->recordIds['copiedElementId'] = $newTableIds[self::TABLE_Element][self::VALUE_ElementIdFirst]; } + /** + * @test + * @see DataSet/copyContentToLanguageOfRelation.csv + */ + public function copyContentToLanguageOfRelation() + { + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + + /** + * @test + * @see DataSet/copyElementToLanguageOfRelation.csv + */ + public function copyElementToLanguageOfRelation() + { + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Element, self::VALUE_ElementIdFirst, self::VALUE_LanguageId); + $this->recordIds['localizedElementId'] = $newTableIds[self::TABLE_Element][self::VALUE_ElementIdFirst]; + } + /** * @test * @see DataSet/localizeContentOfRelation.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/ActionTest.php index 43898cc0f464f3837ea72d7d0d04e8cf0d174d35..658b4074d91fffe083dda993cba2ec86466f51d8 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/ActionTest.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/ActionTest.php @@ -235,6 +235,42 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\Group\Abs ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1 (copy 1)')); } + /** + * @test + * @see DataSet/copyContentToLanguageOfRelation.csv + */ + public function copyContentToLanguageOfRelation() + { + parent::copyContentToLanguageOfRelation(); + $this->assertAssertionDataSet('copyContentToLanguageOfRelation'); + + $this->setUpFrontendRootPage(1, [ + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts', + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts' + ]); + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['localizedContentId'])->setRecordField(self::FIELD_ContentElement) + ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #2', 'Element #3')); + } + + /** + * @test + * @see DataSet/copyElementToLanguageOfRelation.csv + */ + public function copyElementToLanguageOfRelation() + { + parent::copyElementToLanguageOfRelation(); + $this->assertAssertionDataSet('copyElementToLanguageOfRelation'); + + //in this case the translated element is orphaned (no CE with relation to it, and it has no l10n_parent) + //so on frontend there is no change. + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement) + ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1', 'Element #2')); + } + /** * @test * @see DataSet/localizeContentOfRelation.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyContentToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyContentToLanguageOfRelation.csv new file mode 100644 index 0000000000000000000000000000000000000000..09d8f0ab555249b3cfdf4cb32b4d143de5250b54 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyContentToLanguageOfRelation.csv @@ -0,0 +1,16 @@ +pages,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,,, +,1,0,256,0,0,0,0,0,0,0,FunctionalTest,,, +,88,1,256,0,0,0,0,0,0,0,DataHandlerTest,,, +,89,88,256,0,0,0,0,0,0,0,Relations,,, +,90,88,512,0,0,0,0,0,0,0,Target,,, +tt_content,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_testdatahandler_group +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"1,2" +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,"2,3" +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,"2,3" +tx_testdatahandler_element,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title, +,1,89,256,0,0,0,0,0,0,0,0,0,Element #1, +,2,89,512,0,0,0,0,0,0,0,0,0,Element #2, +,3,89,768,0,0,0,0,0,0,0,0,0,Element #3, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyElementToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyElementToLanguageOfRelation.csv new file mode 100644 index 0000000000000000000000000000000000000000..6b65cc820c893723b4128393ccbcea72aab18613 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyElementToLanguageOfRelation.csv @@ -0,0 +1,16 @@ +pages,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,,, +,1,0,256,0,0,0,0,0,0,0,FunctionalTest,,, +,88,1,256,0,0,0,0,0,0,0,DataHandlerTest,,, +,89,88,256,0,0,0,0,0,0,0,Relations,,, +,90,88,512,0,0,0,0,0,0,0,Target,,, +tt_content,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_testdatahandler_group +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"1,2" +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,"2,3" +tx_testdatahandler_element,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title, +,1,89,256,0,0,0,0,0,0,0,0,0,Element #1, +,2,89,512,0,0,0,0,0,0,0,0,0,Element #2, +,3,89,768,0,0,0,0,0,0,0,0,0,Element #3, +,4,89,384,0,1,0,1,0,0,0,0,0,[Translate to Dansk:] Element #1, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/AbstractActionTestCase.php index 2add0411b493d9b7b456808fa5f030848344925e..2358441b5655afbbd3e9601472dec701a76257f2 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/AbstractActionTestCase.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/AbstractActionTestCase.php @@ -98,6 +98,54 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; } + /** + * @see DataSet/copyParentContentToLanguageKeep.csv + */ + public function copyParentContentToLanguageInKeepMode() + { + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'keep'; + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false; + $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false; + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + + /** + * @see DataSet/copyParentContentToLanguageWAllChildrenKeep.csv + */ + public function copyParentContentToLanguageWithAllChildrenInKeepMode() + { + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'keep'; + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true; + $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true; + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + + /** + * @see DataSet/copyParentContentToLanguageSelect.csv + */ + public function copyParentContentToLanguageInSelectMode() + { + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'select'; + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false; + $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false; + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + + /** + * @see DataSet/copyParentContentToLanguageWAllChildrenSelect.csv + */ + public function copyParentContentToLanguageWithAllChildrenInSelectMode() + { + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'select'; + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true; + $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true; + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + /** * @see DataSet/localizeParentContentKeep.csv */ diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/ActionTest.php index 6a8021ef50c7db8e551d3b64385236a2b94529bf..6f660422061b171bd41a7f09f6813b5f24f0bc49 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/ActionTest.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/ActionTest.php @@ -103,6 +103,70 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\IRRE\CSV\ ->setTable(self::TABLE_Hotel)->setField('title')->setValues('Hotel #1')); } + /** + * @test + * @see DataSet/copyParentContentToLanguageKeep.csv + */ + public function copyParentContentToLanguageInKeepMode() + { + parent::copyParentContentToLanguageInKeepMode(); + $this->assertAssertionDataSet('copyParentContentToLanguageKeep'); + + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel) + ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1')); + } + + /** + * @test + * @see DataSet/copyParentContentToLanguageWAllChildrenKeep.csv + */ + public function copyParentContentToLanguageWithAllChildrenInKeepMode() + { + parent::copyParentContentToLanguageWithAllChildrenInKeepMode(); + $this->assertAssertionDataSet('copyParentContentToLanguageWAllChildrenKeep'); + + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel) + ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1')); + } + + /** + * @test + * @see DataSet/copyParentContentToLanguageSelect.csv + */ + public function copyParentContentToLanguageInSelectMode() + { + parent::copyParentContentToLanguageInSelectMode(); + $this->assertAssertionDataSet('copyParentContentToLanguageSelect'); + + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel) + ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1')); + } + + /** + * @test + * @see DataSet/copyParentContentToLanguageWAllChildrenSelect.csv + */ + public function copyParentContentToLanguageWithAllChildrenInSelectMode() + { + parent::copyParentContentToLanguageWithAllChildrenInSelectMode(); + $this->assertAssertionDataSet('copyParentContentToLanguageWAllChildrenSelect'); + + $this->setUpFrontendRootPage(1, [ + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts', + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts' + ]); + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['localizedContentId'])->setRecordField(self::FIELD_ContentHotel) + ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1')); + } + /** * @test * @see DataSet/localizeParentContentKeep.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageKeep.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageKeep.csv new file mode 100644 index 0000000000000000000000000000000000000000..2d93e8e62875e77d9f49380b8ce12642451ad180 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageKeep.csv @@ -0,0 +1,25 @@ +tt_content,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1ncsv_hotels +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"3,4" +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,5 +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2, +tx_irretutorial_1ncsv_hotel,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers +,3,89,256,0,0,0,0,0,0,0,0,0,Hotel #1,"5,6" +,4,89,128,0,0,0,0,0,0,0,0,0,Hotel #2,7 +,5,89,64,0,0,0,0,0,0,0,0,0,Hotel #1,8 +tx_irretutorial_1ncsv_offer,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices +,5,89,256,0,0,0,0,0,0,0,0,0,Offer #1.1,"7,8,9" +,6,89,128,0,0,0,0,0,0,0,0,0,Offer #1.2,"10,11" +,7,89,64,0,0,0,0,0,0,0,0,0,Offer #2.1,12 +,8,89,32,0,0,0,0,0,0,0,0,0,Offer #1.1,13 +tx_irretutorial_1ncsv_price,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title, +,7,89,256,0,0,0,0,0,0,0,0,0,Price #1.1.1, +,8,89,128,0,0,0,0,0,0,0,0,0,Price #1.1.2, +,9,89,64,0,0,0,0,0,0,0,0,0,Price #1.1.3, +,10,89,32,0,0,0,0,0,0,0,0,0,Price #1.2.1, +,11,89,16,0,0,0,0,0,0,0,0,0,Price #1.2.2, +,12,89,8,0,0,0,0,0,0,0,0,0,Price #2.1.1, +,13,89,4,0,0,0,0,0,0,0,0,0,Price #1.1.1, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageSelect.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageSelect.csv new file mode 100644 index 0000000000000000000000000000000000000000..2d93e8e62875e77d9f49380b8ce12642451ad180 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageSelect.csv @@ -0,0 +1,25 @@ +tt_content,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1ncsv_hotels +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"3,4" +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,5 +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2, +tx_irretutorial_1ncsv_hotel,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers +,3,89,256,0,0,0,0,0,0,0,0,0,Hotel #1,"5,6" +,4,89,128,0,0,0,0,0,0,0,0,0,Hotel #2,7 +,5,89,64,0,0,0,0,0,0,0,0,0,Hotel #1,8 +tx_irretutorial_1ncsv_offer,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices +,5,89,256,0,0,0,0,0,0,0,0,0,Offer #1.1,"7,8,9" +,6,89,128,0,0,0,0,0,0,0,0,0,Offer #1.2,"10,11" +,7,89,64,0,0,0,0,0,0,0,0,0,Offer #2.1,12 +,8,89,32,0,0,0,0,0,0,0,0,0,Offer #1.1,13 +tx_irretutorial_1ncsv_price,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title, +,7,89,256,0,0,0,0,0,0,0,0,0,Price #1.1.1, +,8,89,128,0,0,0,0,0,0,0,0,0,Price #1.1.2, +,9,89,64,0,0,0,0,0,0,0,0,0,Price #1.1.3, +,10,89,32,0,0,0,0,0,0,0,0,0,Price #1.2.1, +,11,89,16,0,0,0,0,0,0,0,0,0,Price #1.2.2, +,12,89,8,0,0,0,0,0,0,0,0,0,Price #2.1.1, +,13,89,4,0,0,0,0,0,0,0,0,0,Price #1.1.1, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv new file mode 100644 index 0000000000000000000000000000000000000000..2d93e8e62875e77d9f49380b8ce12642451ad180 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv @@ -0,0 +1,25 @@ +tt_content,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1ncsv_hotels +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"3,4" +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,5 +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2, +tx_irretutorial_1ncsv_hotel,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers +,3,89,256,0,0,0,0,0,0,0,0,0,Hotel #1,"5,6" +,4,89,128,0,0,0,0,0,0,0,0,0,Hotel #2,7 +,5,89,64,0,0,0,0,0,0,0,0,0,Hotel #1,8 +tx_irretutorial_1ncsv_offer,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices +,5,89,256,0,0,0,0,0,0,0,0,0,Offer #1.1,"7,8,9" +,6,89,128,0,0,0,0,0,0,0,0,0,Offer #1.2,"10,11" +,7,89,64,0,0,0,0,0,0,0,0,0,Offer #2.1,12 +,8,89,32,0,0,0,0,0,0,0,0,0,Offer #1.1,13 +tx_irretutorial_1ncsv_price,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title, +,7,89,256,0,0,0,0,0,0,0,0,0,Price #1.1.1, +,8,89,128,0,0,0,0,0,0,0,0,0,Price #1.1.2, +,9,89,64,0,0,0,0,0,0,0,0,0,Price #1.1.3, +,10,89,32,0,0,0,0,0,0,0,0,0,Price #1.2.1, +,11,89,16,0,0,0,0,0,0,0,0,0,Price #1.2.2, +,12,89,8,0,0,0,0,0,0,0,0,0,Price #2.1.1, +,13,89,4,0,0,0,0,0,0,0,0,0,Price #1.1.1, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv new file mode 100644 index 0000000000000000000000000000000000000000..8f6125a0aa63f1a2cbf81f29b6ea4be7d4e67405 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv @@ -0,0 +1,28 @@ +tt_content,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1ncsv_hotels +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"3,4" +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,5 +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,6 +tx_irretutorial_1ncsv_hotel,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers +,3,89,256,0,0,0,0,0,0,0,0,0,Hotel #1,"5,6" +,4,89,128,0,0,0,0,0,0,0,0,0,Hotel #2,7 +,5,89,64,0,0,0,0,0,0,0,0,0,Hotel #1,8 +,6,89,96,0,1,0,5,0,0,0,0,0,[Translate to Dansk:] Hotel #1,9 +tx_irretutorial_1ncsv_offer,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices +,5,89,256,0,0,0,0,0,0,0,0,0,Offer #1.1,"7,8,9" +,6,89,128,0,0,0,0,0,0,0,0,0,Offer #1.2,"10,11" +,7,89,64,0,0,0,0,0,0,0,0,0,Offer #2.1,12 +,8,89,32,0,0,0,0,0,0,0,0,0,Offer #1.1,13 +,9,89,48,0,1,0,8,0,0,0,0,0,[Translate to Dansk:] Offer #1.1,14 +tx_irretutorial_1ncsv_price,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title, +,7,89,256,0,0,0,0,0,0,0,0,0,Price #1.1.1, +,8,89,128,0,0,0,0,0,0,0,0,0,Price #1.1.2, +,9,89,64,0,0,0,0,0,0,0,0,0,Price #1.1.3, +,10,89,32,0,0,0,0,0,0,0,0,0,Price #1.2.1, +,11,89,16,0,0,0,0,0,0,0,0,0,Price #1.2.2, +,12,89,8,0,0,0,0,0,0,0,0,0,Price #2.1.1, +,13,89,4,0,0,0,0,0,0,0,0,0,Price #1.1.1, +,14,89,6,0,1,0,13,0,0,0,0,0,[Translate to Dansk:] Price #1.1.1, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/AbstractActionTestCase.php index 11b2846e5aabb91383424939f02290956e2ce9a5..c56f82f74a70a6825829b8b76a22321846040763 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/AbstractActionTestCase.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/AbstractActionTestCase.php @@ -104,6 +104,54 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; } + /** + * @see DataSet/copyParentContentToLanguageKeep.csv + */ + public function copyParentContentToLanguageInKeepMode() + { + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'keep'; + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false; + $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false; + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + + /** + * @see DataSet/copyParentContentToLanguageWAllChildrenKeep.csv + */ + public function copyParentContentToLanguageWithAllChildrenInKeepMode() + { + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'keep'; + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true; + $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true; + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + + /** + * @see DataSet/copyParentContentToLanguageSelect.csv + */ + public function copyParentContentToLanguageInSelectMode() + { + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'select'; + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false; + $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false; + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + + /** + * @see DataSet/copyParentContentToLanguageWAllChildrenSelect.csv + */ + public function copyParentContentToLanguageWithAllChildrenInSelectMode() + { + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'select'; + $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true; + $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true; + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + /** * @see DataSet/localizeParentContentKeep.csv */ diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/ActionTest.php index fd6f768ebbf504fbc113c0a244cdbad34103ad24..cd400f7b78c3723d6e94f05b1ad0205e0bdd838d 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/ActionTest.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/ActionTest.php @@ -103,6 +103,71 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\IRRE\Fore ->setTable(self::TABLE_Hotel)->setField('title')->setValues('Hotel #1')); } + /** + * @test + * @see DataSet/copyParentContentToLanguageKeep.csv + */ + public function copyParentContentToLanguageInKeepMode() + { + parent::copyParentContentToLanguageInKeepMode(); + $this->assertAssertionDataSet('copyParentContentToLanguageKeep'); + + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections('Default', 'Extbase:list()'); + $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel) + ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1')); + } + + /** + * @test + * @see DataSet/copyParentContentToLanguageWAllChildrenKeep.csv + */ + public function copyParentContentToLanguageWithAllChildrenInKeepMode() + { + parent::copyParentContentToLanguageWithAllChildrenInKeepMode(); + $this->assertAssertionDataSet('copyParentContentToLanguageWAllChildrenKeep'); + + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections('Default', 'Extbase:list()'); + $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel) + ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1')); + } + + /** + * @test + * @see DataSet/copyParentContentToLanguageSelect.csv + */ + public function copyParentContentToLanguageInSelectMode() + { + parent::copyParentContentToLanguageInSelectMode(); + $this->assertAssertionDataSet('copyParentContentToLanguageSelect'); + + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections('Default', 'Extbase:list()'); + $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel) + ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1')); + } + + /** + * @test + * @see DataSet/copyParentContentToLanguageWAllChildrenSelect.csv + */ + public function copyParentContentToLanguageWithAllChildrenInSelectMode() + { + parent::copyParentContentToLanguageWithAllChildrenInSelectMode(); + $this->assertAssertionDataSet('copyParentContentToLanguageWAllChildrenSelect'); + + $this->setUpFrontendRootPage(1, [ + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts', + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/ExtbaseJsonRenderer.ts', + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts' + ]); + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections('Default', 'Extbase:list()'); + $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['localizedContentId'])->setRecordField(self::FIELD_ContentHotel) + ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1')); + } + /** * @test * @see DataSet/localizeParentContentKeep.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageKeep.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageKeep.csv new file mode 100644 index 0000000000000000000000000000000000000000..db72c88d9af64f7b682fe2bf44e21e4784a49fa5 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageKeep.csv @@ -0,0 +1,25 @@ +tt_content,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1nff_hotels,,, +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,2,,, +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,1,,, +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,0,,, +tx_irretutorial_1nff_hotel,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,offers +,3,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,297,tt_content,,2 +,4,89,2,0,0,0,0,0,0,0,0,0,Hotel #2,297,tt_content,,1 +,5,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,298,tt_content,,1 +tx_irretutorial_1nff_offer,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,prices +,5,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,3,tx_irretutorial_1nff_hotel,,3 +,6,89,2,0,0,0,0,0,0,0,0,0,Offer #1.2,3,tx_irretutorial_1nff_hotel,,2 +,7,89,1,0,0,0,0,0,0,0,0,0,Offer #2.1,4,tx_irretutorial_1nff_hotel,,1 +,8,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,5,tx_irretutorial_1nff_hotel,,1 +tx_irretutorial_1nff_price,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier, +,7,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,5,tx_irretutorial_1nff_offer,, +,8,89,2,0,0,0,0,0,0,0,0,0,Price #1.1.2,5,tx_irretutorial_1nff_offer,, +,9,89,3,0,0,0,0,0,0,0,0,0,Price #1.1.3,5,tx_irretutorial_1nff_offer,, +,10,89,1,0,0,0,0,0,0,0,0,0,Price #1.2.1,6,tx_irretutorial_1nff_offer,, +,11,89,2,0,0,0,0,0,0,0,0,0,Price #1.2.2,6,tx_irretutorial_1nff_offer,, +,12,89,1,0,0,0,0,0,0,0,0,0,Price #2.1.1,7,tx_irretutorial_1nff_offer,, +,13,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,8,tx_irretutorial_1nff_offer,, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageSelect.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageSelect.csv new file mode 100644 index 0000000000000000000000000000000000000000..db72c88d9af64f7b682fe2bf44e21e4784a49fa5 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageSelect.csv @@ -0,0 +1,25 @@ +tt_content,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1nff_hotels,,, +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,2,,, +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,1,,, +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,0,,, +tx_irretutorial_1nff_hotel,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,offers +,3,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,297,tt_content,,2 +,4,89,2,0,0,0,0,0,0,0,0,0,Hotel #2,297,tt_content,,1 +,5,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,298,tt_content,,1 +tx_irretutorial_1nff_offer,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,prices +,5,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,3,tx_irretutorial_1nff_hotel,,3 +,6,89,2,0,0,0,0,0,0,0,0,0,Offer #1.2,3,tx_irretutorial_1nff_hotel,,2 +,7,89,1,0,0,0,0,0,0,0,0,0,Offer #2.1,4,tx_irretutorial_1nff_hotel,,1 +,8,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,5,tx_irretutorial_1nff_hotel,,1 +tx_irretutorial_1nff_price,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier, +,7,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,5,tx_irretutorial_1nff_offer,, +,8,89,2,0,0,0,0,0,0,0,0,0,Price #1.1.2,5,tx_irretutorial_1nff_offer,, +,9,89,3,0,0,0,0,0,0,0,0,0,Price #1.1.3,5,tx_irretutorial_1nff_offer,, +,10,89,1,0,0,0,0,0,0,0,0,0,Price #1.2.1,6,tx_irretutorial_1nff_offer,, +,11,89,2,0,0,0,0,0,0,0,0,0,Price #1.2.2,6,tx_irretutorial_1nff_offer,, +,12,89,1,0,0,0,0,0,0,0,0,0,Price #2.1.1,7,tx_irretutorial_1nff_offer,, +,13,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,8,tx_irretutorial_1nff_offer,, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv new file mode 100644 index 0000000000000000000000000000000000000000..db72c88d9af64f7b682fe2bf44e21e4784a49fa5 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv @@ -0,0 +1,25 @@ +tt_content,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1nff_hotels,,, +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,2,,, +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,1,,, +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,0,,, +tx_irretutorial_1nff_hotel,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,offers +,3,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,297,tt_content,,2 +,4,89,2,0,0,0,0,0,0,0,0,0,Hotel #2,297,tt_content,,1 +,5,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,298,tt_content,,1 +tx_irretutorial_1nff_offer,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,prices +,5,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,3,tx_irretutorial_1nff_hotel,,3 +,6,89,2,0,0,0,0,0,0,0,0,0,Offer #1.2,3,tx_irretutorial_1nff_hotel,,2 +,7,89,1,0,0,0,0,0,0,0,0,0,Offer #2.1,4,tx_irretutorial_1nff_hotel,,1 +,8,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,5,tx_irretutorial_1nff_hotel,,1 +tx_irretutorial_1nff_price,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier, +,7,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,5,tx_irretutorial_1nff_offer,, +,8,89,2,0,0,0,0,0,0,0,0,0,Price #1.1.2,5,tx_irretutorial_1nff_offer,, +,9,89,3,0,0,0,0,0,0,0,0,0,Price #1.1.3,5,tx_irretutorial_1nff_offer,, +,10,89,1,0,0,0,0,0,0,0,0,0,Price #1.2.1,6,tx_irretutorial_1nff_offer,, +,11,89,2,0,0,0,0,0,0,0,0,0,Price #1.2.2,6,tx_irretutorial_1nff_offer,, +,12,89,1,0,0,0,0,0,0,0,0,0,Price #2.1.1,7,tx_irretutorial_1nff_offer,, +,13,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,8,tx_irretutorial_1nff_offer,, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv new file mode 100644 index 0000000000000000000000000000000000000000..6c3a11be6a2533156bcce1312cf5c9a98ab12c61 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv @@ -0,0 +1,28 @@ +tt_content,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1nff_hotels,,, +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,2,,, +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,1,,, +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,1,,, +tx_irretutorial_1nff_hotel,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,offers +,3,89,512,0,0,0,0,0,0,0,0,0,Hotel #1,297,tt_content,,2 +,4,89,1280,0,0,0,0,0,0,0,0,0,Hotel #2,297,tt_content,,1 +,5,89,768,0,0,0,0,0,0,0,0,0,Hotel #1,298,tt_content,,1 +,6,89,1,0,1,0,5,0,0,0,0,0,[Translate to Dansk:] Hotel #1,299,tt_content,,1 +tx_irretutorial_1nff_offer,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,prices +,5,89,512,0,0,0,0,0,0,0,0,0,Offer #1.1,3,tx_irretutorial_1nff_hotel,,3 +,6,89,1536,0,0,0,0,0,0,0,0,0,Offer #1.2,3,tx_irretutorial_1nff_hotel,,2 +,7,89,768,0,0,0,0,0,0,0,0,0,Offer #2.1,4,tx_irretutorial_1nff_hotel,,1 +,8,89,1024,0,0,0,0,0,0,0,0,0,Offer #1.1,5,tx_irretutorial_1nff_hotel,,1 +,9,89,1,0,1,0,8,0,0,0,0,0,[Translate to Dansk:] Offer #1.1,6,tx_irretutorial_1nff_hotel,,1 +tx_irretutorial_1nff_price,,,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier, +,7,89,512,0,0,0,0,0,0,0,0,0,Price #1.1.1,5,tx_irretutorial_1nff_offer,, +,8,89,1792,0,0,0,0,0,0,0,0,0,Price #1.1.2,5,tx_irretutorial_1nff_offer,, +,9,89,2304,0,0,0,0,0,0,0,0,0,Price #1.1.3,5,tx_irretutorial_1nff_offer,, +,10,89,768,0,0,0,0,0,0,0,0,0,Price #1.2.1,6,tx_irretutorial_1nff_offer,, +,11,89,2048,0,0,0,0,0,0,0,0,0,Price #1.2.2,6,tx_irretutorial_1nff_offer,, +,12,89,1024,0,0,0,0,0,0,0,0,0,Price #2.1.1,7,tx_irretutorial_1nff_offer,, +,13,89,1280,0,0,0,0,0,0,0,0,0,Price #1.1.1,8,tx_irretutorial_1nff_offer,, +,14,89,1,0,1,0,13,0,0,0,0,0,[Translate to Dansk:] Price #1.1.1,9,tx_irretutorial_1nff_offer,, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/AbstractActionTestCase.php index eb631138ab068f981b4aec297c5996b98f125571..68f554d16a9b3b7dd1261f3df5061773f4d23647 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/AbstractActionTestCase.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/AbstractActionTestCase.php @@ -149,6 +149,24 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D $this->actionService->copyRecord(self::TABLE_Category, self::VALUE_CategoryIdFirst, 0); } + /** + * @test + * @see DataSet/copyContentToLanguageOfRelation.csv + */ + public function copyContentToLanguageOfRelation() + { + $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + } + + /** + * @test + * @see DataSet/copyCategoryToLanguageOfRelation.csv + */ + public function copyCategoryToLanguageOfRelation() + { + $this->actionService->copyRecordToLanguage(self::TABLE_Category, self::VALUE_CategoryIdFirst, self::VALUE_LanguageId); + } + /** * @test * @see DataSet/Assertion/localizeContentRecordOfCategoryRelation.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/ActionTest.php index 0952b44e1c9c1d80c129afcd5f935ca2b10cde3e..5cb843501b65a1eff9fdf21598ce7a5118a34c19 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/ActionTest.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/ActionTest.php @@ -181,6 +181,37 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\ManyToMan ->setTable(self::TABLE_Category)->setField('title')->setValues('Category A', 'Category A (copy 1)')); } + /** + * @test + * @see DataSet/copyContentToLanguageOfRelation.csv + */ + public function copyContentToLanguageOfRelation() + { + parent::copyContentToLanguageOfRelation(); + $this->assertAssertionDataSet('copyContentToLanguageOfRelation'); + + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField('categories') + ->setTable(self::TABLE_Category)->setField('title')->setValues('Category B', 'Category C')); + } + + /** + * @test + * @see DataSet/copyCategoryToLanguageOfRelation.csv + */ + public function copyCategoryToLanguageOfRelation() + { + parent::copyCategoryToLanguageOfRelation(); + $this->assertAssertionDataSet('copyCategoryToLanguageOfRelation'); + //in this case the translated element is orphaned (no CE with relation to it, and it has no l10n_parent) + //so on frontend there is no change. + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories') + ->setTable(self::TABLE_Category)->setField('title')->setValues('Category A', 'Category B')); + } + /** * @test * @see DataSet/Assertion/localizeContentRecordOfCategoryRelation.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyCategoryToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyCategoryToLanguageOfRelation.csv new file mode 100644 index 0000000000000000000000000000000000000000..cbe0c0936e357435818ca4557be0bfd50f1ade5c --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyCategoryToLanguageOfRelation.csv @@ -0,0 +1,18 @@ +sys_category,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parent,items +,28,0,256,0,0,0,0,0,0,0,0,0,Category A,0,0 +,29,0,512,0,0,0,0,0,0,0,0,0,Category B,0,0 +,30,0,768,0,0,0,0,0,0,0,0,0,Category C,0,0 +,31,0,1024,0,0,0,0,0,0,0,0,0,Category A.A,28,0 +,32,0,384,0,1,0,28,0,0,0,0,0,[Translate to Dansk:] Category A,0,1 +sys_category_record_mm,,,,,,,,,,,,,,, +,uid_local,uid_foreign,tablenames,sorting,sorting_foreign,fieldname,,,,,,,,, +,28,297,tt_content,0,1,categories,,,,,,,,, +,29,297,tt_content,0,2,categories,,,,,,,,, +,29,298,tt_content,0,1,categories,,,,,,,,, +,30,298,tt_content,0,2,categories,,,,,,,,, +,32,297,tt_content,1,0,categories,,,,,,,,, +tt_content,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,categories +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,0,2 +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,0,2 diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyContentToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyContentToLanguageOfRelation.csv new file mode 100644 index 0000000000000000000000000000000000000000..ee791d7e59cc85b1dfca7fdb8c6b46ce16177abf --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyContentToLanguageOfRelation.csv @@ -0,0 +1,19 @@ +sys_category,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parent,items +,28,0,256,0,0,0,0,0,0,0,0,0,Category A,0,0 +,29,0,512,0,0,0,0,0,0,0,0,0,Category B,0,0 +,30,0,768,0,0,0,0,0,0,0,0,0,Category C,0,0 +,31,0,1024,0,0,0,0,0,0,0,0,0,Category A.A,28,0 +sys_category_record_mm,,,,,,,,,,,,,,, +,uid_local,uid_foreign,tablenames,sorting,sorting_foreign,fieldname,,,,,,,,, +,28,297,tt_content,0,1,categories,,,,,,,,, +,29,297,tt_content,0,2,categories,,,,,,,,, +,29,298,tt_content,0,1,categories,,,,,,,,, +,30,298,tt_content,0,2,categories,,,,,,,,, +,29,299,tt_content,0,1,categories,,,,,,,,, +,30,299,tt_content,0,2,categories,,,,,,,,, +tt_content,,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,categories +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,0,2 +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,0,2 +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,0,2 diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php index 7e60842997afc257683af3bd39f70953150220de..946f3ee24f3f7333c53c54a7ec257a670db8d9d6 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php @@ -99,6 +99,15 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D $this->actionService->copyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_PageId); } + /** + * @test + * @see DataSet/copyContentToLanguage.csv + */ + public function copyContentToLanguage() + { + $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId); + } + /** * @test * @see DataSet/copyPasteContent.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php index 3938ab1cee97dc3b982489414a28ce016d7923a0..522ed0b864a0378b691c2f86d3b6e1fa55a69998 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php @@ -100,6 +100,24 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\Regular\A ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2 (copy 1)')); } + /** + * @test + * @see DataSet/copyContentToLanguage.csv + */ + public function copyContentToLanguage() + { + parent::copyContentToLanguage(); + $this->assertAssertionDataSet('copyContentToLanguage'); + + $this->setUpFrontendRootPage(1, [ + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts', + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts' + ]); + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint() + ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #3', '[Translate to Dansk:] Regular Element #2')); + } + /** * @test * @see DataSet/Assertion/copyContentRecord.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv new file mode 100644 index 0000000000000000000000000000000000000000..aed7e6b670cdcddb0526f9188292399ea9d67a9f --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv @@ -0,0 +1,7 @@ +tt_content,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1 +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2 +,299,89,768,0,0,0,0,0,0,0,0,0,Regular Element #3 +,300,89,1024,0,1,299,299,0,0,0,0,0,[Translate to Dansk:] Regular Element #3 +,301,89,640,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2 diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Select/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/Select/AbstractActionTestCase.php index 9e83e8341034f6afc804b32058a8e5d00b51fead..554063e1f198e69c5d56616c3df1a5a02d802901 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/Select/AbstractActionTestCase.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Select/AbstractActionTestCase.php @@ -187,6 +187,26 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D $this->recordIds['copiedElementId'] = $newTableIds[self::TABLE_Element][self::VALUE_ElementIdFirst]; } + /** + * @test + * @see DataSet/copyContentToLanguageOfRelation.csv + */ + public function copyContentToLanguageOfRelation() + { + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast]; + } + + /** + * @test + * @see DataSet/copyElementToLanguageOfRelation.csv + */ + public function copyElementToLanguageOfRelation() + { + $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Element, self::VALUE_ElementIdFirst, self::VALUE_LanguageId); + $this->recordIds['localizedElementId'] = $newTableIds[self::TABLE_Element][self::VALUE_ElementIdFirst]; + } + /** * @test * @see DataSet/localizeContentOfRelation.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/ActionTest.php index fe4cb68feb8ed53317c80922193c45946174b747..e5a7d0a76e37db7665db39aeb0ffbe211f8c55b3 100644 --- a/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/ActionTest.php +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/ActionTest.php @@ -234,6 +234,38 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\Select\Ab ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1 (copy 1)')); } + /** + * @test + * @see DataSet/copyContentToLanguageOfRelation.csv + */ + public function copyContentToLanguageOfRelation() + { + parent::copyContentToLanguageOfRelation(); + $this->assertAssertionDataSet('copyContentToLanguageOfRelation'); + + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentElement) + ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #2', 'Element #3')); + } + + /** + * @test + * @see DataSet/copyElementToLanguageOfRelation.csv + */ + public function copyElementToLanguageOfRelation() + { + parent::copyElementToLanguageOfRelation(); + $this->assertAssertionDataSet('copyElementToLanguageOfRelation'); + + //in this case the translated element is orphaned (no CE with relation to it, and it has no l10n_parent) + //so on frontend there is no change. + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint() + ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement) + ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1', 'Element #2')); + } + /** * @test * @see DataSet/localizeContentOfRelation.csv diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyContentToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyContentToLanguageOfRelation.csv new file mode 100644 index 0000000000000000000000000000000000000000..a4083d8e5cf70dd7368857ac2142957373247b7c --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyContentToLanguageOfRelation.csv @@ -0,0 +1,16 @@ +pages,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,,, +,1,0,256,0,0,0,0,0,0,0,FunctionalTest,,, +,88,1,256,0,0,0,0,0,0,0,DataHandlerTest,,, +,89,88,256,0,0,0,0,0,0,0,Relations,,, +,90,88,512,0,0,0,0,0,0,0,Target,,, +tt_content,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_testdatahandler_select +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"1,2" +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,"2,3" +,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,"2,3" +tx_testdatahandler_element,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title, +,1,89,256,0,0,0,0,0,0,0,0,0,Element #1, +,2,89,512,0,0,0,0,0,0,0,0,0,Element #2, +,3,89,768,0,0,0,0,0,0,0,0,0,Element #3, diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyElementToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyElementToLanguageOfRelation.csv new file mode 100644 index 0000000000000000000000000000000000000000..5c73dd0a7b9af58f3ae57aef967c075c9192aef0 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyElementToLanguageOfRelation.csv @@ -0,0 +1,16 @@ +pages,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,,, +,1,0,256,0,0,0,0,0,0,0,FunctionalTest,,, +,88,1,256,0,0,0,0,0,0,0,DataHandlerTest,,, +,89,88,256,0,0,0,0,0,0,0,Relations,,, +,90,88,512,0,0,0,0,0,0,0,Target,,, +tt_content,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_testdatahandler_select +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"1,2" +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,"2,3" +tx_testdatahandler_element,,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title, +,1,89,256,0,0,0,0,0,0,0,0,0,Element #1, +,2,89,512,0,0,0,0,0,0,0,0,0,Element #2, +,3,89,768,0,0,0,0,0,0,0,0,0,Element #3, +,4,89,384,0,1,0,1,0,0,0,0,0,[Translate to Dansk:] Element #1, diff --git a/typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts b/typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts new file mode 100644 index 0000000000000000000000000000000000000000..ea342708feac5cbb1d20e5e264e2e5cc11ba6773 --- /dev/null +++ b/typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts @@ -0,0 +1,3 @@ +config { + sys_language_overlay = 0 +} \ No newline at end of file diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php index 2ecbe792d4f41a73ca058490e3937318ca46f2af..f2f99099734787ba6ad45bd6bb4d2462908a3199 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php @@ -136,6 +136,15 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D $this->recordIds['copiedContentId'] = $copiedTableIds[self::TABLE_Content][self::VALUE_ContentIdSecond]; } + /** + * @see DataSet/copyContentToLanguage.csv + */ + public function copyContentToLanguage() + { + $copiedTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId); + $this->recordIds['localizedContentId'] = $copiedTableIds[self::TABLE_Content][self::VALUE_ContentIdSecond]; + } + /** * @see DataSet/Assertion/localizeContentRecord.csv */ diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php index 6b3102ac9b081326ea6b4a82f2e7af4cee165142..f0d7ab3ca2844210dfe2c84a213a9f74840a9a3a 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php @@ -130,6 +130,24 @@ class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Reg ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2 (copy 1)')); } + /** + * @test + * @see DataSet/copyContentToLanguage.csv + */ + public function copyContentToLanguage() + { + parent::copyContentToLanguage(); + $this->assertAssertionDataSet('copyContentToLanguage'); + + $this->setUpFrontendRootPage(1, [ + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts', + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts' + ]); + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint() + ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #3', '[Translate to Dansk:] Regular Element #2')); + } + /** * @test * @see DataSet/Assertion/localizeContentRecord.csv diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv new file mode 100644 index 0000000000000000000000000000000000000000..bed6fe3cf521c05e3c4b172c55ba9e71141f3073 --- /dev/null +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv @@ -0,0 +1,10 @@ +tt_content,,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header +,296,88,256,0,0,0,0,0,0,0,0,0,Regular Element #0 +,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1 +,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2 +,299,89,768,0,0,0,0,0,0,0,0,0,Regular Element #3 +,300,89,1024,0,1,299,299,0,0,0,0,0,[Translate to Dansk:] Regular Element #3 +,301,-1,512,0,0,0,298,2,2,0,298,0,Regular Element #2 +,302,89,640,0,1,0,298,1,1,0,0,0,[Translate to Dansk:] Regular Element #2 +,303,-1,640,0,1,0,298,1,-1,0,302,0,[Translate to Dansk:] Regular Element #2 diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/ActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/ActionTest.php index ba609c0d519d850768a8ab692ece3b470737e232..c45e70ae543e63bd7e0ded63ef09076cfc807efc 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/ActionTest.php +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/ActionTest.php @@ -148,6 +148,25 @@ class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Reg ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2 (copy 1)')); } + /** + * @test + * @see DataSet/copyContentToLanguage.csv + */ + public function copyContentToLanguage() + { + parent::copyContentToLanguage(); + $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['localizedContentId']); + $this->assertAssertionDataSet('copyContentToLanguage'); + + $this->setUpFrontendRootPage(1, [ + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts', + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts' + ]); + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint() + ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #3', '[Translate to Dansk:] Regular Element #2')); + } + /** * @test * @see DataSet/Assertion/localizeContentRecord.csv diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguage.csv new file mode 100644 index 0000000000000000000000000000000000000000..5a9a18dae7f22f36e3749d9000ff86d77cab70b4 --- /dev/null +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguage.csv @@ -0,0 +1,9 @@ +tt_content,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header +,296,88,256,0,0,0,0,0,0,0,0,Regular Element #0 +,297,89,256,0,0,0,0,0,0,0,0,Regular Element #1 +,298,89,512,0,0,0,0,0,0,0,0,Regular Element #2 +,299,89,768,0,0,0,0,0,0,0,0,Regular Element #3 +,300,89,1024,0,1,299,0,0,0,0,0,[Translate to Dansk:] Regular Element #3 +,301,-1,512,0,0,0,2,2,0,298,0,Regular Element #2 +,302,89,640,0,1,0,0,0,0,0,0,[Translate to Dansk:] Regular Element #2 diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/ActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/ActionTest.php index 813439d8b307404a0ee0accc84b3f787805072d5..f0cd8289332a31c597e4c4d8e5a39b9fb218d072 100644 --- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/ActionTest.php +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/ActionTest.php @@ -137,6 +137,25 @@ class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Reg ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2 (copy 1)')); } + /** + * @test + * @see DataSet/copyContentToLanguage.csv + */ + public function copyContentToLanguage() + { + parent::copyContentToLanguage(); + $this->actionService->publishWorkspace(self::VALUE_WorkspaceId); + $this->assertAssertionDataSet('copyContentToLanguage'); + + $this->setUpFrontendRootPage(1, [ + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts', + 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts' + ]); + $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections(); + $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint() + ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #3', '[Translate to Dansk:] Regular Element #2')); + } + /** * @test * @see DataSet/Assertion/localizeContentRecord.csv diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguage.csv new file mode 100644 index 0000000000000000000000000000000000000000..5a9a18dae7f22f36e3749d9000ff86d77cab70b4 --- /dev/null +++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguage.csv @@ -0,0 +1,9 @@ +tt_content,,,,,,,,,,,, +,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header +,296,88,256,0,0,0,0,0,0,0,0,Regular Element #0 +,297,89,256,0,0,0,0,0,0,0,0,Regular Element #1 +,298,89,512,0,0,0,0,0,0,0,0,Regular Element #2 +,299,89,768,0,0,0,0,0,0,0,0,Regular Element #3 +,300,89,1024,0,1,299,0,0,0,0,0,[Translate to Dansk:] Regular Element #3 +,301,-1,512,0,0,0,2,2,0,298,0,Regular Element #2 +,302,89,640,0,1,0,0,0,0,0,0,[Translate to Dansk:] Regular Element #2