From c9d79db5a49a2c646ca213befe18b2db50829cfe Mon Sep 17 00:00:00 2001 From: Tymoteusz Motylewski <t.motylewski@gmail.com> Date: Sat, 31 Dec 2016 00:48:56 +0100 Subject: [PATCH] [BUGFIX] Make copy mode of translation modal use localize ... omitting TransOrigPointer While translating elements with the localization modal we have to make sure that the "Copy" mode does more than just a plain copy followed by an update of the sys_language_uid. Otherwise related elements will just be copied along but don't get a new language. This patch replaces the copy action with a new action called copyToLanguage. It behaves like localize action but does not set TransOrigPointer fields, so child elements get the correct language and are not connected to a language parent. Resolves: #75400 Releases: master, 7.6 Change-Id: If57af3c94c67824ab8bbbc62a8c6bea283e96fca Reviewed-on: https://review.typo3.org/47645 Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Mathias Schreiber <mathias.schreiber@typo3.com> Tested-by: Mathias Schreiber <mathias.schreiber@typo3.com> Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de> --- .../core/FunctionalTestCase.php | 5 +- .../Page/LocalizationController.php | 16 +---- .../Page/LocalizationControllerTest.php | 20 +++--- .../core/Classes/DataHandling/DataHandler.php | 25 ++++++- ...00-NewDataHandlerCommandCopyToLanguage.rst | 21 ++++++ .../FAL/AbstractActionTestCase.php | 9 +++ .../DataHandling/FAL/Modify/ActionTest.php | 22 +++++++ .../Modify/DataSet/copyContentToLanguage.csv | 13 ++++ .../DataHandling/Framework/ActionService.php | 21 ++++++ .../Group/AbstractActionTestCase.php | 20 ++++++ .../DataHandling/Group/Modify/ActionTest.php | 36 ++++++++++ .../copyContentToLanguageOfRelation.csv | 16 +++++ .../copyElementToLanguageOfRelation.csv | 16 +++++ .../IRRE/CSV/AbstractActionTestCase.php | 48 ++++++++++++++ .../IRRE/CSV/Modify/ActionTest.php | 64 ++++++++++++++++++ .../copyParentContentToLanguageKeep.csv | 25 +++++++ .../copyParentContentToLanguageSelect.csv | 25 +++++++ ...arentContentToLanguageWAllChildrenKeep.csv | 25 +++++++ ...entContentToLanguageWAllChildrenSelect.csv | 28 ++++++++ .../ForeignField/AbstractActionTestCase.php | 48 ++++++++++++++ .../IRRE/ForeignField/Modify/ActionTest.php | 65 +++++++++++++++++++ .../copyParentContentToLanguageKeep.csv | 25 +++++++ .../copyParentContentToLanguageSelect.csv | 25 +++++++ ...arentContentToLanguageWAllChildrenKeep.csv | 25 +++++++ ...entContentToLanguageWAllChildrenSelect.csv | 28 ++++++++ .../ManyToMany/AbstractActionTestCase.php | 18 +++++ .../ManyToMany/Modify/ActionTest.php | 31 +++++++++ .../copyCategoryToLanguageOfRelation.csv | 18 +++++ .../copyContentToLanguageOfRelation.csv | 19 ++++++ .../Regular/AbstractActionTestCase.php | 9 +++ .../Regular/Modify/ActionTest.php | 18 +++++ .../Modify/DataSet/copyContentToLanguage.csv | 7 ++ .../Select/AbstractActionTestCase.php | 20 ++++++ .../DataHandling/Select/Modify/ActionTest.php | 32 +++++++++ .../copyContentToLanguageOfRelation.csv | 16 +++++ .../copyElementToLanguageOfRelation.csv | 16 +++++ .../Frontend/JsonRendererNoOverlay.ts | 3 + .../Regular/AbstractActionTestCase.php | 9 +++ .../Regular/Modify/ActionTest.php | 18 +++++ .../Modify/DataSet/copyContentToLanguage.csv | 10 +++ .../Regular/Publish/ActionTest.php | 19 ++++++ .../Publish/DataSet/copyContentToLanguage.csv | 9 +++ .../Regular/PublishAll/ActionTest.php | 19 ++++++ .../DataSet/copyContentToLanguage.csv | 9 +++ 44 files changed, 942 insertions(+), 29 deletions(-) create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Important-75400-NewDataHandlerCommandCopyToLanguage.rst create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContentToLanguage.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyContentToLanguageOfRelation.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyElementToLanguageOfRelation.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageKeep.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageSelect.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageKeep.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageSelect.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyCategoryToLanguageOfRelation.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyContentToLanguageOfRelation.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyContentToLanguageOfRelation.csv create mode 100644 typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyElementToLanguageOfRelation.csv create mode 100644 typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts create mode 100644 typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv create mode 100644 typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguage.csv create mode 100644 typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguage.csv diff --git a/components/testing_framework/core/FunctionalTestCase.php b/components/testing_framework/core/FunctionalTestCase.php index e8618b34890f..867df0064e09 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 5e4e864d2af7..66b2fb5e9f48 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 0d30f1334252..243cd9311a8c 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 38e03d6e9bc0..c58ebf3255cd 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 000000000000..f7cdaf2e87bb --- /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 f0f349f89652..3ff620b532cc 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 45574a1dfa7c..20846c352f87 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 000000000000..d8f00fd9b643 --- /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 2dd6cf8d4953..7638fe67244f 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 2a2821ace64d..b0950f8fc0e1 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 43898cc0f464..658b4074d91f 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 000000000000..09d8f0ab5552 --- /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 000000000000..6b65cc820c89 --- /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 2add0411b493..2358441b5655 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 6a8021ef50c7..6f660422061b 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 000000000000..2d93e8e62875 --- /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 000000000000..2d93e8e62875 --- /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 000000000000..2d93e8e62875 --- /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 000000000000..8f6125a0aa63 --- /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 11b2846e5aab..c56f82f74a70 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 fd6f768ebbf5..cd400f7b78c3 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 000000000000..db72c88d9af6 --- /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 000000000000..db72c88d9af6 --- /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 000000000000..db72c88d9af6 --- /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 000000000000..6c3a11be6a25 --- /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 eb631138ab06..68f554d16a9b 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 0952b44e1c9c..5cb843501b65 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 000000000000..cbe0c0936e35 --- /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 000000000000..ee791d7e59cc --- /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 7e60842997af..946f3ee24f3f 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 3938ab1cee97..522ed0b864a0 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 000000000000..aed7e6b670cd --- /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 9e83e8341034..554063e1f198 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 fe4cb68feb8e..e5a7d0a76e37 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 000000000000..a4083d8e5cf7 --- /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 000000000000..5c73dd0a7b9a --- /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 000000000000..ea342708feac --- /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 2ecbe792d4f4..f2f990997347 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 6b3102ac9b08..f0d7ab3ca284 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 000000000000..bed6fe3cf521 --- /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 ba609c0d519d..c45e70ae543e 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 000000000000..5a9a18dae7f2 --- /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 813439d8b307..f0cd8289332a 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 000000000000..5a9a18dae7f2 --- /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 -- GitLab