‪TYPO3CMS  ‪main
AbstractActionTestCase.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
27 
29 {
31 
32  protected const ‪VALUE_PageIdParent = 88;
33  protected const ‪VALUE_PageId = 89;
34  protected const ‪VALUE_PageIdTarget = 90;
35  protected const ‪VALUE_PageIdWebsite = 1;
36  protected const ‪VALUE_ContentIdParent = 296;
37  protected const ‪VALUE_ContentIdFirst = 297;
38  protected const ‪VALUE_ContentIdSecond = 298;
39  protected const ‪VALUE_ContentIdThird = 299;
40  protected const ‪VALUE_ContentIdThirdLocalized = 300;
41  protected const ‪VALUE_ContentIdFreeMode = 310;
42  protected const ‪VALUE_LanguageId = 1;
43  protected const ‪VALUE_LanguageIdSecond = 2;
44 
45  protected const ‪TABLE_Page = 'pages';
46  protected const ‪TABLE_Content = 'tt_content';
47 
48  protected const ‪SCENARIO_DataSet = __DIR__ . '/DataSet/ImportDefault.csv';
49 
50  protected function ‪setUp(): void
51  {
52  parent::setUp();
53  // Show copied pages records in frontend request
54  ‪$GLOBALS['TCA']['pages']['ctrl']['hideAtCopy'] = false;
55  // Show copied tt_content records in frontend request
56  ‪$GLOBALS['TCA']['tt_content']['ctrl']['hideAtCopy'] = false;
57  $this->importCSVDataSet(static::SCENARIO_DataSet);
59  'test',
60  $this->‪buildSiteConfiguration(1, '/'),
61  [
62  $this->‪buildDefaultLanguageConfiguration('EN', '/'),
63  $this->‪buildLanguageConfiguration('DA', '/da/', ['EN']),
64  $this->‪buildLanguageConfiguration('DE', '/de/', ['DA', 'EN']),
65  ]
66  );
67  $this->setUpFrontendRootPage(1, ['EXT:core/Tests/Functional/Fixtures/Frontend/JsonRenderer.typoscript']);
68  }
69 
77  public function ‪createContents(): void
78  {
79  // Creating record at the beginning of the page
80  $newTableIds = $this->actionService->createNewRecord(self::TABLE_Content, self::VALUE_PageId, ['header' => 'Testing #1']);
81  $this->recordIds['newContentIdFirst'] = $newTableIds[‪self::TABLE_Content][0];
82  // Creating record at the end of the page (after last one)
83  $newTableIds = $this->actionService->createNewRecord(self::TABLE_Content, -self::VALUE_ContentIdSecond, ['header' => 'Testing #2']);
84  $this->recordIds['newContentIdLast'] = $newTableIds[‪self::TABLE_Content][0];
85  }
86 
92  public function ‪createContentForLanguageAll(): void
93  {
94  $newTableIds = $this->actionService->createNewRecord(self::TABLE_Content, self::VALUE_PageId, ['header' => 'Language set to all', 'sys_language_uid' => -1]);
95  $this->recordIds['newContentLanguageAll'] = $newTableIds[‪self::TABLE_Content][0];
96  }
97 
98  public function ‪modifyContent(): void
99  {
100  $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, ['header' => 'Testing #1']);
101  }
102 
106  public function ‪modifyTranslatedContent(): void
107  {
108  $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdThirdLocalized, ['header' => 'Testing Translation #3']);
109  }
110 
111  public function ‪hideContent(): void
112  {
113  $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, ['hidden' => '1']);
114  }
115 
116  public function ‪deleteContent(): void
117  {
118  $this->actionService->deleteRecord(self::TABLE_Content, self::VALUE_ContentIdSecond);
119  }
120 
121  public function ‪deleteLocalizedContentAndDeleteContent(): void
122  {
123  $this->actionService->deleteRecord(self::TABLE_Content, self::VALUE_ContentIdThirdLocalized);
124  $this->actionService->deleteRecord(self::TABLE_Content, self::VALUE_ContentIdThird);
125  }
126 
127  public function ‪copyContent(): void
128  {
129  $copiedTableIds = $this->actionService->copyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_PageId);
130  $this->recordIds['copiedContentId'] = $copiedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
131  }
132 
133  public function ‪copyContentToLanguage(): void
134  {
135  $copiedTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
136  $this->recordIds['localizedContentId'] = $copiedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
137  }
138 
143  {
144  ‪$GLOBALS['TCA']['tt_content']['columns']['header']['config']['behaviour']['allowLanguageSynchronization'] = true;
145  $copiedTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
146  $this->recordIds['localizedContentId'] = $copiedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
147  $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, ['header' => 'Testing #1']);
148  }
149 
154  {
155  ‪$GLOBALS['TCA']['tt_content']['columns']['header']['l10n_mode'] = 'exclude';
156  $copiedTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
157  $this->recordIds['localizedContentId'] = $copiedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
158  $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, ['header' => 'Testing #1']);
159  }
160 
164  public function ‪copyContentToLanguageFromNonDefaultLanguage(): void
165  {
166  $copiedTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdThirdLocalized, self::VALUE_LanguageIdSecond);
167  $this->recordIds['localizedContentId'] = $copiedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdThirdLocalized];
168  }
169 
173  public function ‪copyPasteContent(): void
174  {
175  $this->actionService->copyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_PageId, ['header' => 'Testing #1']);
176  }
177 
178  public function ‪localizeContent(): void
179  {
180  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
181  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
182  }
183 
184  public function ‪localizeContentWithHideAtCopy(): void
185  {
186  ‪$GLOBALS['TCA'][‪self::TABLE_Content]['ctrl']['hideAtCopy'] = true;
187  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
188  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
189  $this->actionService->modifyRecord(self::TABLE_Content, $this->recordIds['localizedContentId'], ['hidden' => 0]);
190  }
191 
195  public function ‪localizeContentWithEmptyTcaIntegrityColumns(): void
196  {
197  $integrityFieldNames = [
198  'language' => ‪$GLOBALS['TCA'][‪self::TABLE_Content]['ctrl']['languageField'] ?? null,
199  'languageParent' => ‪$GLOBALS['TCA'][‪self::TABLE_Content]['ctrl']['transOrigPointerField'] ?? null,
200  'languageSource' => ‪$GLOBALS['TCA'][‪self::TABLE_Content]['ctrl']['translationSource'] ?? null,
201  ];
202  // explicitly unset integrity columns in TCA
203  foreach ($integrityFieldNames as $integrityFieldName) {
204  unset(‪$GLOBALS['TCA'][self::TABLE_Content]['columns'][$integrityFieldName]);
205  }
206  // After TCA changes, refindex is not ok anymore for imported rows. Update it before performing other actions.
207  $referenceIndex = GeneralUtility::makeInstance(ReferenceIndex::class);
208  $referenceIndex->updateIndex(false);
209 
210  // explicitly call TcaMigration (which was executed already earlier in functional testing bootstrap)
211  ‪$GLOBALS['TCA'] = (new TcaMigration())->migrate(‪$GLOBALS['TCA']);
212  // create translated page first
213  $this->actionService->copyRecordToLanguage(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
214  // perform actions to be tested
215  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
216  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
217  }
218 
219  public function ‪localizeContentWithLanguageSynchronization(): void
220  {
221  ‪$GLOBALS['TCA']['tt_content']['columns']['header']['config']['behaviour']['allowLanguageSynchronization'] = true;
222  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
223  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
224  $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, ['header' => 'Testing #1']);
225  }
226 
228  {
229  ‪$GLOBALS['TCA']['tt_content']['columns']['bodytext']['config']['nullable'] = true;
230  ‪$GLOBALS['TCA']['tt_content']['columns']['bodytext']['config']['behaviour']['allowLanguageSynchronization'] = true;
231  $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, ['bodytext' => null]);
232  ‪$GLOBALS['TCA']['tt_content']['columns']['header']['config']['behaviour']['allowLanguageSynchronization'] = true;
233  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
234  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
235  $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, ['header' => 'Testing #1']);
236  }
237 
238  public function ‪localizeContentFromNonDefaultLanguage(): void
239  {
240  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdThirdLocalized, self::VALUE_LanguageIdSecond);
241  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdThirdLocalized];
242  }
243 
245  {
246  ‪$GLOBALS['TCA']['tt_content']['columns']['header']['config']['behaviour']['allowLanguageSynchronization'] = true;
247  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdThirdLocalized, self::VALUE_LanguageIdSecond);
248  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdThirdLocalized];
249  $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdThird, ['header' => 'Testing #1']);
250  }
251 
253  {
254  ‪$GLOBALS['TCA']['tt_content']['columns']['header']['config']['behaviour']['allowLanguageSynchronization'] = true;
255  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdThirdLocalized, self::VALUE_LanguageIdSecond);
256  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdThirdLocalized];
257  $this->actionService->modifyRecord(self::TABLE_Content, $this->recordIds['localizedContentId'], ['l10n_state' => ['header' => 'source']]);
258  $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdThird, ['header' => 'Testing #1']);
259  }
260 
267  {
268  // Change defaults from import data set: We want to create all the lang 1 and lang 2 content elements
269  // with one DH call in one go per language, but the import data set has some localized content elements
270  // already. Drop those.
271  $this->‪setWorkspaceId(0);
272  $this->actionService->deleteRecords([
273  'tt_content' => [300, 301, 302],
274  ]);
275  if (defined('static::VALUE_WorkspaceId') > 0) {
276  $this->‪setWorkspaceId(static::VALUE_WorkspaceId);
277  }
278 
279  // Create translated pages first
280  $this->actionService->copyRecordToLanguage(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
281  $this->actionService->copyRecordToLanguage(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageIdSecond);
282 
283  // @todo: This should be extracted as localizeRecords() in addition to localizeRecord() to ActionService
284  // Create localization of the 3 default language content elements
285  $commandMap = [
286  'tt_content' => [
287  self::VALUE_ContentIdFirst => [ 'localize' => ‪self::VALUE_LanguageId],
288  self::VALUE_ContentIdSecond => [ 'localize' => ‪self::VALUE_LanguageId],
289  self::VALUE_ContentIdThird => [ 'localize' => ‪self::VALUE_LanguageId],
290  ],
291  ];
292  $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
293  $dataHandler->start([], $commandMap);
294  $dataHandler->process_cmdmap();
295  // uid's of lang 1 localized elements
296  $mappingArray = $dataHandler->copyMappingArray_merged;
297 
298  // Localize again, with uid's of second language as source ("translation of translation")
299  $commandMap = [
300  'tt_content' => [
301  $mappingArray['tt_content'][‪self::VALUE_ContentIdFirst] => ['localize' => ‪self::VALUE_LanguageIdSecond],
302  $mappingArray['tt_content'][‪self::VALUE_ContentIdSecond] => ['localize' => ‪self::VALUE_LanguageIdSecond],
303  $mappingArray['tt_content'][‪self::VALUE_ContentIdThird] => ['localize' => ‪self::VALUE_LanguageIdSecond],
304  ],
305  ];
306  $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
307  $dataHandler->start([], $commandMap);
308  $dataHandler->process_cmdmap();
309  }
310 
317  public function ‪localizeContentAfterMovedContent(): void
318  {
319  // Create translated page first
320  $this->actionService->copyRecordToLanguage(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
321  // Default language element 310 on page 90 that has two 'free mode' localizations is moved to page 89.
322  // Note the two localizations are NOT moved along with the default language element, due to free mode.
323  // Note l10n_source of first localization 311 is kept and still points to 310, even though 310 is moved to different page.
324  $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFreeMode, self::VALUE_PageId);
325  // Create new record after (relative to) previously moved one.
326  $newTableIds = $this->actionService->createNewRecord(self::TABLE_Content, -self::VALUE_ContentIdFreeMode, ['header' => 'Testing #1']);
327  $this->recordIds['newContentIdLast'] = $newTableIds[‪self::TABLE_Content][0];
328  // Localize this new record
329  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, $newTableIds[self::TABLE_Content][0], self::VALUE_LanguageId);
330  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][$newTableIds[‪self::TABLE_Content][0]];
331  }
332 
333  public function ‪createLocalizedContent(): void
334  {
335  $newContentIdDefault = ‪StringUtility::getUniqueId('NEW');
336  $newContentIdLocalized = ‪StringUtility::getUniqueId('NEW');
337  $dataMap = [
338  self::TABLE_Content => [
339  $newContentIdDefault => ['pid' => ‪self::VALUE_PageId, 'header' => 'Testing'],
340  $newContentIdLocalized => ['pid' => ‪self::VALUE_PageId, 'header' => 'Localized Testing', 'sys_language_uid' => ‪self::VALUE_LanguageId, 'l18n_parent' => $newContentIdDefault, 'l10n_source' => $newContentIdDefault],
341  ],
342  ];
343  $this->actionService->invoke($dataMap, []);
344  $this->recordIds['newContentIdDefault'] = $this->actionService->getDataHandler()->substNEWwithIDs[$newContentIdDefault];
345  $this->recordIds['newContentIdLocalized'] = $this->actionService->getDataHandler()->substNEWwithIDs[$newContentIdLocalized];
346  }
347 
349  {
350  ‪$GLOBALS['TCA']['tt_content']['columns']['header']['config']['behaviour']['allowLanguageSynchronization'] = true;
351  $newContentIdDefault = ‪StringUtility::getUniqueId('NEW');
352  $newContentIdLocalized = ‪StringUtility::getUniqueId('NEW');
353  $dataMap = [
354  self::TABLE_Content => [
355  $newContentIdDefault => ['pid' => ‪self::VALUE_PageId, 'header' => 'Testing'],
356  $newContentIdLocalized => ['pid' => ‪self::VALUE_PageId, 'header' => 'Localized Testing', 'sys_language_uid' => ‪self::VALUE_LanguageId, 'l18n_parent' => $newContentIdDefault, 'l10n_source' => $newContentIdDefault],
357  ],
358  ];
359  $this->actionService->invoke($dataMap, []);
360  $this->recordIds['newContentIdDefault'] = $this->actionService->getDataHandler()->substNEWwithIDs[$newContentIdDefault];
361  $this->recordIds['newContentIdLocalized'] = $this->actionService->getDataHandler()->substNEWwithIDs[$newContentIdLocalized];
362  }
363 
365  {
366  ‪$GLOBALS['TCA']['tt_content']['columns']['header']['l10n_mode'] = 'exclude';
367  $newContentIdDefault = ‪StringUtility::getUniqueId('NEW');
368  $newContentIdLocalized = ‪StringUtility::getUniqueId('NEW');
369  $dataMap = [
370  self::TABLE_Content => [
371  $newContentIdDefault => ['pid' => ‪self::VALUE_PageId, 'header' => 'Testing'],
372  $newContentIdLocalized => ['pid' => ‪self::VALUE_PageId, 'header' => 'Localized Testing', 'sys_language_uid' => ‪self::VALUE_LanguageId, 'l18n_parent' => $newContentIdDefault, 'l10n_source' => $newContentIdDefault],
373  ],
374  ];
375  $this->actionService->invoke($dataMap, []);
376  $this->recordIds['newContentIdDefault'] = $this->actionService->getDataHandler()->substNEWwithIDs[$newContentIdDefault];
377  $this->recordIds['newContentIdLocalized'] = $this->actionService->getDataHandler()->substNEWwithIDs[$newContentIdLocalized];
378  }
379 
380  public function ‪changeContentSorting(): void
381  {
382  $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdSecond);
383  }
384 
385  public function ‪changeContentSortingAfterSelf(): void
386  {
387  $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdFirst);
388  }
389 
390  public function ‪moveContentToDifferentPage(): void
391  {
392  $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_PageIdTarget);
393  }
394 
398  public function ‪movePasteContentToDifferentPage(): void
399  {
400  $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_PageIdTarget, ['header' => 'Testing #1']);
401  }
402 
403  public function ‪moveContentToDifferentPageAndChangeSorting(): void
404  {
405  $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_PageIdTarget);
406  $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdSecond);
407  }
408 
409  public function ‪moveContentToDifferentPageAndHide(): void
410  {
411  $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_PageIdTarget, ['hidden' => '1']);
412  }
413 
414  public function ‪moveLocalizedContentToDifferentPage(): void
415  {
416  // Create translated page first
417  $this->actionService->copyRecordToLanguage(self::TABLE_Page, self::VALUE_PageIdTarget, self::VALUE_LanguageId);
418  $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdThird, self::VALUE_PageIdTarget);
419  }
420 
428  public function ‪createPage(): void
429  {
430  $newTableIds = $this->actionService->createNewRecord(self::TABLE_Page, self::VALUE_PageId, ['title' => 'Testing #1', 'hidden' => 0, 'nav_title' => 'Nav Testing #1']);
431  $this->recordIds['newPageId'] = $newTableIds[‪self::TABLE_Page][0];
432  }
433 
434  public function ‪createPageAndSubPageAndSubPageContent(): void
435  {
436  $newTableIds = $this->actionService->createNewRecord(self::TABLE_Page, self::VALUE_PageId, ['title' => 'Testing #1', 'hidden' => 0]);
437  $this->recordIds['newPageId'] = $newTableIds[‪self::TABLE_Page][0];
438  $newTableIds = $this->actionService->createNewRecord(self::TABLE_Page, $this->recordIds['newPageId'], ['title' => 'Testing #1 #1', 'hidden' => 0]);
439  $this->recordIds['newSubPageId'] = $newTableIds[‪self::TABLE_Page][0];
440  $newTableIds = $this->actionService->createNewRecord(self::TABLE_Content, $this->recordIds['newSubPageId'], ['header' => 'Testing #1 #1', 'hidden' => 0]);
441  $this->recordIds['newSubPageContentId'] = $newTableIds[‪self::TABLE_Content][0];
442  }
443 
448  public function ‪createPageAndChangePageSorting(): void
449  {
450  $newTableIds = $this->actionService->createNewRecord(self::TABLE_Page, 88, ['title' => 'Testing #1', 'hidden' => 0, 'nav_title' => 'Nav Testing #1']);
451  $this->recordIds['newPageId'] = $newTableIds[‪self::TABLE_Page][0];
452  $this->actionService->moveRecord(self::TABLE_Page, $this->recordIds['newPageId'], -self::VALUE_PageId);
453  }
454 
458  public function ‪createPageAndMoveCreatedPage(): void
459  {
460  $newTableIds = $this->actionService->createNewRecord(self::TABLE_Page, self::VALUE_PageId, ['title' => 'Testing #1', 'hidden' => 0, 'nav_title' => 'Nav Testing #1']);
461  $this->recordIds['newPageId'] = $newTableIds[‪self::TABLE_Page][0];
462  $this->actionService->moveRecord(self::TABLE_Page, $this->recordIds['newPageId'], -self::VALUE_PageId);
463  }
464 
465  public function ‪createPageAndContentWithTcaDefaults(): void
466  {
467  $newTableIds = $this->actionService->createNewRecords(
468  self::VALUE_PageId,
469  [
470  self::TABLE_Page => ['title' => 'Testing #1'],
471  self::TABLE_Content => ['pid' => '__previousUid', 'header' => 'Testing #1'],
472  ]
473  );
474  $this->recordIds['newPageId'] = $newTableIds[‪self::TABLE_Page][0];
475  $this->recordIds['newContentId'] = $newTableIds[‪self::TABLE_Content][0];
476  }
477 
478  public function ‪modifyPage(): void
479  {
480  $this->actionService->modifyRecord(self::TABLE_Page, self::VALUE_PageId, ['title' => 'Testing #1']);
481  }
482 
483  public function ‪deletePage(): void
484  {
485  $this->actionService->deleteRecord(self::TABLE_Page, self::VALUE_PageId);
486  }
487 
488  public function ‪copyPage(): void
489  {
490  $newTableIds = $this->actionService->copyRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
491  $this->recordIds['newPageId'] = $newTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
492  $this->recordIds['newContentIdFirst'] = $newTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdFirst];
493  $this->recordIds['newContentIdLast'] = $newTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
494  }
495 
496  public function ‪copyPageFreeMode(): void
497  {
498  $newTableIds = $this->actionService->copyRecord(self::TABLE_Page, self::VALUE_PageIdTarget, self::VALUE_PageIdTarget);
499  $this->recordIds['newPageId'] = $newTableIds[‪self::TABLE_Page][‪self::VALUE_PageIdTarget];
500  }
501 
502  public function ‪localizePage(): void
503  {
504  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
505  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
506  }
507 
509  {
510  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
511  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
512  $this->actionService->modifyRecord(self::TABLE_Page, $this->recordIds['localizedPageId'], ['title' => 'Testing #1']);
513  ‪$record = $this->getConnectionPool()->getConnectionForTable(self::TABLE_Page)
514  ->select(['*'], self::TABLE_Page, ['uid' => $this->recordIds['localizedPageId']])
515  ->fetchAssociative();
516  // cleanup some fields from record
517  unset(‪$record['uid'], ‪$record['pid'], ‪$record['l10n_diffsource']);
518  ‪$record['l10n_state'] = \json_decode(‪$record['l10n_state']);
519  // modify record
520  $modifiedRecord = array_replace(‪$record, ['title' => 'Testing #2']);
521  $this->actionService->modifyRecord(self::TABLE_Page, $this->recordIds['localizedPageId'], $modifiedRecord);
522  }
523 
524  public function ‪localizePageWithLanguageSynchronization(): void
525  {
526  unset(‪$GLOBALS['TCA'][self::TABLE_Page]['columns']['title']['l10n_mode']);
527  ‪$GLOBALS['TCA'][‪self::TABLE_Page]['columns']['title']['config']['behaviour']['allowLanguageSynchronization'] = true;
528  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
529  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
530  $this->actionService->modifyRecord(self::TABLE_Page, self::VALUE_PageId, ['title' => 'Testing #1']);
531  }
532 
534  {
535  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
536  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
537  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
538  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
539  // Deleting the localized page should also delete its localized records
540  $this->actionService->deleteRecord(self::TABLE_Page, $this->recordIds['localizedPageId']);
541  }
542 
543  public function ‪localizeNestedPagesAndContents(): void
544  {
545  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageIdParent, self::VALUE_LanguageId);
546  $this->recordIds['localizedParentPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageIdParent];
547  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdParent, self::VALUE_LanguageId);
548  $this->recordIds['localizedParentContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdParent];
549  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
550  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
551  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
552  $this->recordIds['localizedContentId'] = $localizedTableIds[‪self::TABLE_Content][‪self::VALUE_ContentIdSecond];
553  // Have another localized content element on page 88 to verify it's translation is also properly discarded in workspaces
554  $this->actionService->copyRecord(self::TABLE_Content, self::VALUE_ContentIdParent, self::VALUE_PageIdParent);
555  }
556 
557  public function ‪localizePageNotHiddenHideAtCopyFalse(): void
558  {
559  ‪$GLOBALS['TCA'][‪self::TABLE_Page]['ctrl']['hideAtCopy'] = false;
560 
561  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
562  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
563  }
564 
565  public function ‪localizePageHiddenHideAtCopyFalse(): void
566  {
567  ‪$GLOBALS['TCA'][‪self::TABLE_Page]['ctrl']['hideAtCopy'] = false;
568 
569  // @todo Add hidden page to importDefault.csv to make this database change superfluous.
570  $this->getConnectionPool()->getConnectionForTable(self::TABLE_Page)->update(
571  self::TABLE_Page,
572  [
573  'hidden' => 1,
574  ],
575  [
576  'uid' => self::VALUE_PageId,
577  ]
578  );
579 
580  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
581  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
582  }
583 
585  {
586  // This is the default, but set it to be expressive for this test.
587  ‪$GLOBALS['TCA'][‪self::TABLE_Page]['ctrl']['hideAtCopy'] = true;
588 
589  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
590  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
591  }
592 
594  {
595  // This is the default, but set it to be expressive for this test.
596  ‪$GLOBALS['TCA'][‪self::TABLE_Page]['ctrl']['hideAtCopy'] = true;
597 
598  // @todo Add hidden page to importDefault.csv to make this database change superfluous.
599  $this->getConnectionPool()->getConnectionForTable(self::TABLE_Page)->update(
600  self::TABLE_Page,
601  [
602  'hidden' => 1,
603  ],
604  [
605  'uid' => self::VALUE_PageId,
606  ]
607  );
608 
609  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
610  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
611  }
612 
614  {
615  // This is the default, but set it to be expressive for this test.
616  ‪$GLOBALS['TCA'][‪self::TABLE_Page]['ctrl']['hideAtCopy'] = true;
617 
618  $this->getConnectionPool()->getConnectionForTable(self::TABLE_Page)->update(
619  self::TABLE_Page,
620  [
621  'TSconfig' => 'TCEMAIN.table.pages.disableHideAtCopy = 0',
622  ],
623  [
624  'uid' => self::VALUE_PageIdWebsite,
625  ]
626  );
627 
628  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
629  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
630  }
631 
633  {
634  // This is the default, but set it to be expressive for this test.
635  ‪$GLOBALS['TCA'][‪self::TABLE_Page]['ctrl']['hideAtCopy'] = true;
636 
637  // @todo Add hidden page to importDefault.csv to make this database change superfluous.
638  $this->getConnectionPool()->getConnectionForTable(self::TABLE_Page)->update(
639  self::TABLE_Page,
640  [
641  'hidden' => 1,
642  ],
643  [
644  'uid' => self::VALUE_PageId,
645  ]
646  );
647  $this->getConnectionPool()->getConnectionForTable(self::TABLE_Page)->update(
648  self::TABLE_Page,
649  [
650  'TSconfig' => 'TCEMAIN.table.pages.disableHideAtCopy = 0',
651  ],
652  [
653  'uid' => self::VALUE_PageIdWebsite,
654  ]
655  );
656 
657  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
658  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
659  }
660 
662  {
663  // This is the default, but set it to be expressive for this test.
664  ‪$GLOBALS['TCA'][‪self::TABLE_Page]['ctrl']['hideAtCopy'] = true;
665 
666  $this->getConnectionPool()->getConnectionForTable(self::TABLE_Page)->update(
667  self::TABLE_Page,
668  [
669  'TSconfig' => 'TCEMAIN.table.pages.disableHideAtCopy = 1',
670  ],
671  [
672  'uid' => self::VALUE_PageIdWebsite,
673  ]
674  );
675  ‪$GLOBALS['TCA'][‪self::TABLE_Page]['ctrl']['hideAtCopy'] = true;
676  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
677  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
678  }
679 
681  {
682  // This is the default, but set it to be expressive for this test.
683  ‪$GLOBALS['TCA'][‪self::TABLE_Page]['ctrl']['hideAtCopy'] = true;
684 
685  // @todo Add hidden page to importDefault.csv to make this database change superfluous.
686  $this->getConnectionPool()->getConnectionForTable(self::TABLE_Page)->update(
687  self::TABLE_Page,
688  [
689  'hidden' => 1,
690  ],
691  [
692  'uid' => self::VALUE_PageId,
693  ]
694  );
695  $this->getConnectionPool()->getConnectionForTable(self::TABLE_Page)->update(
696  self::TABLE_Page,
697  [
698  'TSconfig' => 'TCEMAIN.table.pages.disableHideAtCopy = 1',
699  ],
700  [
701  'uid' => self::VALUE_PageIdWebsite,
702  ]
703  );
704 
705  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
706  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
707  }
708 
709  public function ‪changePageSorting(): void
710  {
711  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, -self::VALUE_PageIdTarget);
712  }
713 
714  public function ‪changePageSortingAfterSelf(): void
715  {
716  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, -self::VALUE_PageId);
717  }
718 
719  public function ‪movePageToDifferentPage(): void
720  {
721  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
722  }
723 
724  public function ‪movePageToDifferentPageTwice(): void
725  {
726  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
727  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdWebsite);
728  }
729 
735  public function ‪movePageLocalizedToDifferentPageTwice(): void
736  {
737  // Localize page first. In workspaces, this localization is created within ws, creating a "new" t3ver_state=1 record
738  $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
739  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
740  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdWebsite);
741  }
742 
751  public function ‪movePageLocalizedInLiveToDifferentPageTwice(): void
752  {
753  $this->‪setWorkspaceId(0);
754  $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
755  $this->‪setWorkspaceId(static::VALUE_WorkspaceId);
756  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
757  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdWebsite);
758  }
759 
770  {
771  $this->‪setWorkspaceId(0);
772  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
773  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
774  $this->‪setWorkspaceId(static::VALUE_WorkspaceId);
775  $this->actionService->modifyRecord(self::TABLE_Page, $this->recordIds['localizedPageId'], ['title' => 'Testing #1']);
776  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
777  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdWebsite);
778  }
779 
791  {
792  $this->‪setWorkspaceId(0);
793  $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
794  $this->recordIds['localizedPageId'] = $localizedTableIds[‪self::TABLE_Page][‪self::VALUE_PageId];
795  $this->‪setWorkspaceId(static::VALUE_WorkspaceId);
796  $this->actionService->deleteRecord(self::TABLE_Page, $this->recordIds['localizedPageId']);
797  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
798  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdWebsite);
799  }
800 
801  public function ‪movePageToDifferentPageAndChangeSorting(): void
802  {
803  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageIdTarget, self::VALUE_PageIdWebsite);
804  $this->actionService->moveRecord(self::TABLE_Page, self::VALUE_PageId, -self::VALUE_PageIdTarget);
805  }
806 }
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_ContentIdParent
‪const VALUE_ContentIdParent
Definition: AbstractActionTestCase.php:35
‪TYPO3\CMS\Core\DataHandling\DataHandler
Definition: DataHandler.php:94
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\movePageLocalizedToDifferentPageTwice
‪movePageLocalizedToDifferentPageTwice()
Definition: AbstractActionTestCase.php:734
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\movePageLocalizedInLiveToDifferentPageTwice
‪movePageLocalizedInLiveToDifferentPageTwice()
Definition: AbstractActionTestCase.php:750
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageNotHiddenHideAtCopyDisableHideAtCopyUnset
‪localizePageNotHiddenHideAtCopyDisableHideAtCopyUnset()
Definition: AbstractActionTestCase.php:583
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildLanguageConfiguration
‪buildLanguageConfiguration(string $identifier, string $base, array $fallbackIdentifiers=[], string $fallbackType=null)
Definition: SiteBasedTestTrait.php:108
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\createPageAndChangePageSorting
‪createPageAndChangePageSorting()
Definition: AbstractActionTestCase.php:447
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\TABLE_Content
‪const TABLE_Content
Definition: AbstractActionTestCase.php:45
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_ContentIdSecond
‪const VALUE_ContentIdSecond
Definition: AbstractActionTestCase.php:37
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_PageIdParent
‪const VALUE_PageIdParent
Definition: AbstractActionTestCase.php:31
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_ContentIdThirdLocalized
‪const VALUE_ContentIdThirdLocalized
Definition: AbstractActionTestCase.php:39
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\changePageSortingAfterSelf
‪changePageSortingAfterSelf()
Definition: AbstractActionTestCase.php:713
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageNotHiddenHideAtCopyDisableHideAtCopySetToTrue
‪localizePageNotHiddenHideAtCopyDisableHideAtCopySetToTrue()
Definition: AbstractActionTestCase.php:660
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\createPage
‪createPage()
Definition: AbstractActionTestCase.php:427
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait
Definition: SiteBasedTestTrait.php:37
‪TYPO3\CMS\Core\Database\ReferenceIndex
Definition: ReferenceIndex.php:40
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\copyPasteContent
‪copyPasteContent()
Definition: AbstractActionTestCase.php:172
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase
Definition: AbstractActionTestCase.php:29
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\modifyContent
‪modifyContent()
Definition: AbstractActionTestCase.php:97
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_ContentIdFirst
‪const VALUE_ContentIdFirst
Definition: AbstractActionTestCase.php:36
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\changePageSorting
‪changePageSorting()
Definition: AbstractActionTestCase.php:708
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\createContents
‪createContents()
Definition: AbstractActionTestCase.php:76
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\writeSiteConfiguration
‪writeSiteConfiguration(string $identifier, array $site=[], array $languages=[], array $errorHandling=[])
Definition: SiteBasedTestTrait.php:50
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageNotHiddenHideAtCopyDisableHideAtCopySetToFalse
‪localizePageNotHiddenHideAtCopyDisableHideAtCopySetToFalse()
Definition: AbstractActionTestCase.php:612
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\movePageLocalizedInLiveWorkspaceDeletedToDifferentPageTwice
‪movePageLocalizedInLiveWorkspaceDeletedToDifferentPageTwice()
Definition: AbstractActionTestCase.php:789
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildSiteConfiguration
‪buildSiteConfiguration(int $rootPageId, string $base='')
Definition: SiteBasedTestTrait.php:88
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_ContentIdThird
‪const VALUE_ContentIdThird
Definition: AbstractActionTestCase.php:38
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_PageId
‪const VALUE_PageId
Definition: AbstractActionTestCase.php:32
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeContentFromNonDefaultLanguage
‪localizeContentFromNonDefaultLanguage()
Definition: AbstractActionTestCase.php:237
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_PageIdWebsite
‪const VALUE_PageIdWebsite
Definition: AbstractActionTestCase.php:34
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\createPageAndContentWithTcaDefaults
‪createPageAndContentWithTcaDefaults()
Definition: AbstractActionTestCase.php:464
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeContentWithEmptyTcaIntegrityColumns
‪localizeContentWithEmptyTcaIntegrityColumns()
Definition: AbstractActionTestCase.php:194
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\AbstractDataHandlerActionTestCase\setWorkspaceId
‪setWorkspaceId(int $workspaceId)
Definition: AbstractDataHandlerActionTestCase.php:76
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeContent
‪localizeContent()
Definition: AbstractActionTestCase.php:177
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\copyContentToLanguage
‪copyContentToLanguage()
Definition: AbstractActionTestCase.php:132
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\AbstractDataHandlerActionTestCase
Definition: AbstractDataHandlerActionTestCase.php:37
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\changeContentSorting
‪changeContentSorting()
Definition: AbstractActionTestCase.php:379
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\movePageToDifferentPage
‪movePageToDifferentPage()
Definition: AbstractActionTestCase.php:718
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeContentWithLanguageSynchronizationHavingNullValue
‪localizeContentWithLanguageSynchronizationHavingNullValue()
Definition: AbstractActionTestCase.php:226
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\moveContentToDifferentPageAndHide
‪moveContentToDifferentPageAndHide()
Definition: AbstractActionTestCase.php:408
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular
Definition: AbstractActionTestCase.php:18
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\movePasteContentToDifferentPage
‪movePasteContentToDifferentPage()
Definition: AbstractActionTestCase.php:397
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\moveLocalizedContentToDifferentPage
‪moveLocalizedContentToDifferentPage()
Definition: AbstractActionTestCase.php:413
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\SCENARIO_DataSet
‪const SCENARIO_DataSet
Definition: AbstractActionTestCase.php:47
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\movePageLocalizedInLiveWorkspaceChangedToDifferentPageTwice
‪movePageLocalizedInLiveWorkspaceChangedToDifferentPageTwice()
Definition: AbstractActionTestCase.php:768
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_LanguageIdSecond
‪const VALUE_LanguageIdSecond
Definition: AbstractActionTestCase.php:42
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_ContentIdFreeMode
‪const VALUE_ContentIdFreeMode
Definition: AbstractActionTestCase.php:40
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageHiddenHideAtCopyDisableHideAtCopySetToFalse
‪localizePageHiddenHideAtCopyDisableHideAtCopySetToFalse()
Definition: AbstractActionTestCase.php:631
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\copyContentToLanguageWithLocalizationExclude
‪copyContentToLanguageWithLocalizationExclude()
Definition: AbstractActionTestCase.php:152
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageWithLanguageSynchronization
‪localizePageWithLanguageSynchronization()
Definition: AbstractActionTestCase.php:523
‪TYPO3\CMS\Webhooks\Message\$record
‪identifier readonly int readonly array $record
Definition: PageModificationMessage.php:36
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePage
‪localizePage()
Definition: AbstractActionTestCase.php:501
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\movePageToDifferentPageAndChangeSorting
‪movePageToDifferentPageAndChangeSorting()
Definition: AbstractActionTestCase.php:800
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\copyContentToLanguageFromNonDefaultLanguage
‪copyContentToLanguageFromNonDefaultLanguage()
Definition: AbstractActionTestCase.php:163
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\deletePage
‪deletePage()
Definition: AbstractActionTestCase.php:482
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\deleteLocalizedContentAndDeleteContent
‪deleteLocalizedContentAndDeleteContent()
Definition: AbstractActionTestCase.php:120
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageHiddenHideAtCopyDisableHideAtCopyUnset
‪localizePageHiddenHideAtCopyDisableHideAtCopyUnset()
Definition: AbstractActionTestCase.php:592
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeContentWithHideAtCopy
‪localizeContentWithHideAtCopy()
Definition: AbstractActionTestCase.php:183
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_LanguageId
‪const VALUE_LanguageId
Definition: AbstractActionTestCase.php:41
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\hideContent
‪hideContent()
Definition: AbstractActionTestCase.php:110
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageHiddenHideAtCopyFalse
‪localizePageHiddenHideAtCopyFalse()
Definition: AbstractActionTestCase.php:564
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\TABLE_Page
‪const TABLE_Page
Definition: AbstractActionTestCase.php:44
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageNotHiddenHideAtCopyFalse
‪localizePageNotHiddenHideAtCopyFalse()
Definition: AbstractActionTestCase.php:556
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageAndUpdateRecordWithMinorChangesInFullRetrievedRecord
‪localizePageAndUpdateRecordWithMinorChangesInFullRetrievedRecord()
Definition: AbstractActionTestCase.php:507
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\copyContent
‪copyContent()
Definition: AbstractActionTestCase.php:126
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildDefaultLanguageConfiguration
‪buildDefaultLanguageConfiguration(string $identifier, string $base)
Definition: SiteBasedTestTrait.php:98
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\changeContentSortingAfterSelf
‪changeContentSortingAfterSelf()
Definition: AbstractActionTestCase.php:384
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\copyPageFreeMode
‪copyPageFreeMode()
Definition: AbstractActionTestCase.php:495
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeContentAfterMovedContent
‪localizeContentAfterMovedContent()
Definition: AbstractActionTestCase.php:316
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeContentFromNonDefaultLanguageWithLanguageSynchronizationSource
‪localizeContentFromNonDefaultLanguageWithLanguageSynchronizationSource()
Definition: AbstractActionTestCase.php:251
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\moveContentToDifferentPage
‪moveContentToDifferentPage()
Definition: AbstractActionTestCase.php:389
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\createContentForLanguageAll
‪createContentForLanguageAll()
Definition: AbstractActionTestCase.php:91
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\movePageToDifferentPageTwice
‪movePageToDifferentPageTwice()
Definition: AbstractActionTestCase.php:723
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageAndContentsAndDeletePageLocalization
‪localizePageAndContentsAndDeletePageLocalization()
Definition: AbstractActionTestCase.php:532
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeContentWithLanguageSynchronization
‪localizeContentWithLanguageSynchronization()
Definition: AbstractActionTestCase.php:218
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\copyPage
‪copyPage()
Definition: AbstractActionTestCase.php:487
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\moveContentToDifferentPageAndChangeSorting
‪moveContentToDifferentPageAndChangeSorting()
Definition: AbstractActionTestCase.php:402
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\deleteContent
‪deleteContent()
Definition: AbstractActionTestCase.php:115
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeContentFromNonDefaultLanguageWithLanguageSynchronizationDefault
‪localizeContentFromNonDefaultLanguageWithLanguageSynchronizationDefault()
Definition: AbstractActionTestCase.php:243
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\VALUE_PageIdTarget
‪const VALUE_PageIdTarget
Definition: AbstractActionTestCase.php:33
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:24
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizePageHiddenHideAtCopyDisableHideAtCopySetToTrue
‪localizePageHiddenHideAtCopyDisableHideAtCopySetToTrue()
Definition: AbstractActionTestCase.php:679
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeNestedPagesAndContents
‪localizeNestedPagesAndContents()
Definition: AbstractActionTestCase.php:542
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\createPageAndSubPageAndSubPageContent
‪createPageAndSubPageAndSubPageContent()
Definition: AbstractActionTestCase.php:433
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\localizeContentFromNonDefaultLanguageWithAllContentElements
‪localizeContentFromNonDefaultLanguageWithAllContentElements()
Definition: AbstractActionTestCase.php:265
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\copyContentToLanguageWithLanguageSynchronization
‪copyContentToLanguageWithLanguageSynchronization()
Definition: AbstractActionTestCase.php:141
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\modifyPage
‪modifyPage()
Definition: AbstractActionTestCase.php:477
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\createLocalizedContentWithLocalizationExclude
‪createLocalizedContentWithLocalizationExclude()
Definition: AbstractActionTestCase.php:363
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\createPageAndMoveCreatedPage
‪createPageAndMoveCreatedPage()
Definition: AbstractActionTestCase.php:457
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\createLocalizedContentWithLanguageSynchronization
‪createLocalizedContentWithLanguageSynchronization()
Definition: AbstractActionTestCase.php:347
‪TYPO3\CMS\Core\Utility\StringUtility\getUniqueId
‪static getUniqueId(string $prefix='')
Definition: StringUtility.php:57
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\setUp
‪setUp()
Definition: AbstractActionTestCase.php:49
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\modifyTranslatedContent
‪modifyTranslatedContent()
Definition: AbstractActionTestCase.php:105
‪TYPO3\CMS\Core\Configuration\Tca\TcaMigration
Definition: TcaMigration.php:31
‪TYPO3\CMS\Core\Tests\Functional\DataScenarios\Regular\AbstractActionTestCase\createLocalizedContent
‪createLocalizedContent()
Definition: AbstractActionTestCase.php:332