Skip to content

Commit 287de35

Browse files
committed
[TASK] allow TYPO3 dev-main branch installation
1 parent d059dc3 commit 287de35

File tree

9 files changed

+186
-18
lines changed

9 files changed

+186
-18
lines changed

Build/phpstan-baseline-11-7.4.neon

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,27 @@ parameters:
4040
message: "#^Class TYPO3\\\\CMS\\\\Backend\\\\View\\\\PageLayoutContext constructor invoked with 5 parameters, 2 required\\.$#"
4141
count: 1
4242
path: ../Tests/Functional/Integrity/IntegrityTest.php
43+
-
44+
message: "#^Call to method create\\(\\) on an unknown class TYPO3\\\\CMS\\\\Core\\\\View\\\\ViewFactoryInterface\\.$#"
45+
count: 1
46+
path: ../Classes/Backend/Preview/GridRenderer.php
47+
48+
-
49+
message: "#^Class TYPO3\\\\CMS\\\\Core\\\\View\\\\ViewFactoryInterface not found\\.$#"
50+
count: 1
51+
path: ../Classes/Backend/Preview/GridRenderer.php
52+
53+
-
54+
message: "#^Instantiated class TYPO3\\\\CMS\\\\Core\\\\View\\\\ViewFactoryData not found\\.$#"
55+
count: 1
56+
path: ../Classes/Backend/Preview/GridRenderer.php
57+
58+
-
59+
message: "#^Call to an undefined static method TYPO3\\\\CMS\\\\Core\\\\Versioning\\\\VersionState\\:\\:tryFrom\\(\\)\\.$#"
60+
count: 1
61+
path: ../Classes/Domain/Factory/ContainerFactory.php
62+
63+
-
64+
message: "#^Call to an undefined static method TYPO3\\\\CMS\\\\Core\\\\Versioning\\\\VersionState\\:\\:tryFrom\\(\\)\\.$#"
65+
count: 2
66+
path: ../Classes/Domain/Factory/PageView/Backend/ContentStorage.php

Build/phpstan-baseline-11.neon

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,27 @@ parameters:
4949
message: "#^Attribute class TYPO3\\\\CMS\\\\Install\\\\Attribute\\\\UpgradeWizard does not exist\\.$#"
5050
count: 1
5151
path: ../Classes/Updates/ContainerMigrateSorting.php
52+
-
53+
message: "#^Call to method create\\(\\) on an unknown class TYPO3\\\\CMS\\\\Core\\\\View\\\\ViewFactoryInterface\\.$#"
54+
count: 1
55+
path: ../Classes/Backend/Preview/GridRenderer.php
56+
57+
-
58+
message: "#^Class TYPO3\\\\CMS\\\\Core\\\\View\\\\ViewFactoryInterface not found\\.$#"
59+
count: 1
60+
path: ../Classes/Backend/Preview/GridRenderer.php
61+
62+
-
63+
message: "#^Instantiated class TYPO3\\\\CMS\\\\Core\\\\View\\\\ViewFactoryData not found\\.$#"
64+
count: 1
65+
path: ../Classes/Backend/Preview/GridRenderer.php
66+
67+
-
68+
message: "#^Call to an undefined static method TYPO3\\\\CMS\\\\Core\\\\Versioning\\\\VersionState\\:\\:tryFrom\\(\\)\\.$#"
69+
count: 1
70+
path: ../Classes/Domain/Factory/ContainerFactory.php
71+
72+
-
73+
message: "#^Call to an undefined static method TYPO3\\\\CMS\\\\Core\\\\Versioning\\\\VersionState\\:\\:tryFrom\\(\\)\\.$#"
74+
count: 2
75+
path: ../Classes/Domain/Factory/PageView/Backend/ContentStorage.php

Build/phpstan-baseline-12.neon

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,28 @@ parameters:
3939
-
4040
message: "#^Class TYPO3\\\\CMS\\\\Backend\\\\View\\\\PageLayoutContext constructor invoked with 5 parameters, 2 required\\.$#"
4141
count: 1
42-
path: ../Tests/Functional/Integrity/IntegrityTest.php
42+
path: ../Tests/Functional/Integrity/IntegrityTest.php
43+
-
44+
message: "#^Call to method create\\(\\) on an unknown class TYPO3\\\\CMS\\\\Core\\\\View\\\\ViewFactoryInterface\\.$#"
45+
count: 1
46+
path: ../Classes/Backend/Preview/GridRenderer.php
47+
48+
-
49+
message: "#^Class TYPO3\\\\CMS\\\\Core\\\\View\\\\ViewFactoryInterface not found\\.$#"
50+
count: 1
51+
path: ../Classes/Backend/Preview/GridRenderer.php
52+
53+
-
54+
message: "#^Instantiated class TYPO3\\\\CMS\\\\Core\\\\View\\\\ViewFactoryData not found\\.$#"
55+
count: 1
56+
path: ../Classes/Backend/Preview/GridRenderer.php
57+
58+
-
59+
message: "#^Call to an undefined static method TYPO3\\\\CMS\\\\Core\\\\Versioning\\\\VersionState\\:\\:tryFrom\\(\\)\\.$#"
60+
count: 1
61+
path: ../Classes/Domain/Factory/ContainerFactory.php
62+
63+
-
64+
message: "#^Call to an undefined static method TYPO3\\\\CMS\\\\Core\\\\Versioning\\\\VersionState\\:\\:tryFrom\\(\\)\\.$#"
65+
count: 2
66+
path: ../Classes/Domain/Factory/PageView/Backend/ContentStorage.php

Classes/Backend/Preview/GridRenderer.php

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,20 @@
1818
use B13\Container\Domain\Factory\Exception;
1919
use B13\Container\Domain\Factory\PageView\Backend\ContainerFactory;
2020
use B13\Container\Events\BeforeContainerPreviewIsRenderedEvent;
21+
use B13\Container\Events\BeforeContainerPreviewIsRenderedEventV12;
2122
use B13\Container\Tca\Registry;
2223
use Psr\EventDispatcher\EventDispatcherInterface;
2324
use TYPO3\CMS\Backend\Utility\BackendUtility;
2425
use TYPO3\CMS\Backend\View\BackendLayout\Grid\Grid;
25-
use TYPO3\CMS\Backend\View\BackendLayout\Grid\GridColumnItem;
2626
use TYPO3\CMS\Backend\View\BackendLayout\Grid\GridRow;
2727
use TYPO3\CMS\Backend\View\PageLayoutContext;
2828
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
2929
use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface;
30+
use TYPO3\CMS\Core\Information\Typo3Version;
3031
use TYPO3\CMS\Core\Localization\LanguageService;
3132
use TYPO3\CMS\Core\Utility\GeneralUtility;
33+
use TYPO3\CMS\Core\View\ViewFactoryData;
34+
use TYPO3\CMS\Core\View\ViewFactoryInterface;
3235
use TYPO3\CMS\Fluid\View\StandaloneView;
3336

3437
class GridRenderer
@@ -86,10 +89,20 @@ public function renderGrid(array $record, PageLayoutContext $context): string
8689
$gridTemplate = $this->tcaRegistry->getGridTemplate($record['CType']);
8790
$partialRootPaths = $this->tcaRegistry->getGridPartialPaths($record['CType']);
8891
$layoutRootPaths = $this->tcaRegistry->getGridLayoutPaths($record['CType']);
89-
$view = GeneralUtility::makeInstance(StandaloneView::class);
90-
$view->setPartialRootPaths($partialRootPaths);
91-
$view->setLayoutRootPaths($layoutRootPaths);
92-
$view->setTemplatePathAndFilename($gridTemplate);
92+
if ((GeneralUtility::makeInstance(Typo3Version::class))->getMajorVersion() < 13) {
93+
$view = GeneralUtility::makeInstance(StandaloneView::class);
94+
$view->setPartialRootPaths($partialRootPaths);
95+
$view->setLayoutRootPaths($layoutRootPaths);
96+
$view->setTemplatePathAndFilename($gridTemplate);
97+
} else {
98+
$viewFactory = GeneralUtility::makeInstance(ViewFactoryInterface::class);
99+
$view = $viewFactory->create(new ViewFactoryData(
100+
null,
101+
$partialRootPaths,
102+
$layoutRootPaths,
103+
$gridTemplate
104+
));
105+
}
93106

94107
$view->assign('hideRestrictedColumns', (bool)(BackendUtility::getPagesTSconfig($context->getPageId())['mod.']['web_layout.']['hideRestrictedCols'] ?? false));
95108
$view->assign('newContentTitle', $this->getLanguageService()->sL('LLL:EXT:backend/Resources/Private/Language/locallang_layout.xlf:newContentElement'));
@@ -101,7 +114,11 @@ public function renderGrid(array $record, PageLayoutContext $context): string
101114
$view->assign('containerRecord', $record);
102115
$view->assign('context', $context);
103116
$parentGridColumnItem = $this->runtimeCache->get('tx_container_current_gridColumItem');
104-
$beforeContainerPreviewIsRendered = new BeforeContainerPreviewIsRenderedEvent($container, $view, $grid, $parentGridColumnItem);
117+
if ((GeneralUtility::makeInstance(Typo3Version::class))->getMajorVersion() < 13) {
118+
$beforeContainerPreviewIsRendered = new BeforeContainerPreviewIsRenderedEventV12($container, $view, $grid, $parentGridColumnItem);
119+
} else {
120+
$beforeContainerPreviewIsRendered = new BeforeContainerPreviewIsRenderedEvent($container, $view, $grid, $parentGridColumnItem);
121+
}
105122
$this->eventDispatcher->dispatch($beforeContainerPreviewIsRendered);
106123
$rendered = $view->render();
107124
return $rendered;

Classes/Domain/Factory/ContainerFactory.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use B13\Container\Tca\Registry;
1717
use TYPO3\CMS\Backend\Utility\BackendUtility;
1818
use TYPO3\CMS\Core\Context\Context;
19+
use TYPO3\CMS\Core\Information\Typo3Version;
1920
use TYPO3\CMS\Core\SingletonInterface;
2021
use TYPO3\CMS\Core\Utility\GeneralUtility;
2122
use TYPO3\CMS\Core\Versioning\VersionState;
@@ -107,8 +108,14 @@ protected function workspaceOverlay(array $records): array
107108
$filtered = [];
108109
foreach ($records as $row) {
109110
BackendUtility::workspaceOL('tt_content', $row, $this->workspaceId, true);
110-
if ($row && !VersionState::cast($row['t3ver_state'] ?? 0)->equals(VersionState::DELETE_PLACEHOLDER)) {
111-
$filtered[] = $row;
111+
if ((GeneralUtility::makeInstance(Typo3Version::class))->getMajorVersion() > 12) {
112+
if ($row && VersionState::tryFrom($row['t3ver_state'] ?? 0) !== VersionState::DELETE_PLACEHOLDER) {
113+
$filtered[] = $row;
114+
}
115+
} else {
116+
if ($row && !VersionState::cast($row['t3ver_state'] ?? 0)->equals(VersionState::DELETE_PLACEHOLDER)) {
117+
$filtered[] = $row;
118+
}
112119
}
113120
}
114121
return $filtered;

Classes/Domain/Factory/PageView/Backend/ContentStorage.php

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
use B13\Container\Domain\Factory\Database;
1616
use TYPO3\CMS\Backend\Utility\BackendUtility;
1717
use TYPO3\CMS\Core\Context\Context;
18+
use TYPO3\CMS\Core\Information\Typo3Version;
19+
use TYPO3\CMS\Core\Utility\GeneralUtility;
1820
use TYPO3\CMS\Core\Versioning\VersionState;
1921

2022
class ContentStorage
@@ -85,8 +87,14 @@ public function workspaceOverlay(array $records): array
8587
$filtered = [];
8688
foreach ($records as $row) {
8789
BackendUtility::workspaceOL('tt_content', $row, $this->workspaceId, true);
88-
if ($row && !VersionState::cast($row['t3ver_state'] ?? 0)->equals(VersionState::DELETE_PLACEHOLDER)) {
89-
$filtered[] = $row;
90+
if ((GeneralUtility::makeInstance(Typo3Version::class))->getMajorVersion() > 12) {
91+
if ($row && VersionState::tryFrom($row['t3ver_state'] ?? 0) !== VersionState::DELETE_PLACEHOLDER) {
92+
$filtered[] = $row;
93+
}
94+
} else {
95+
if ($row && !VersionState::cast($row['t3ver_state'] ?? 0)->equals(VersionState::DELETE_PLACEHOLDER)) {
96+
$filtered[] = $row;
97+
}
9098
}
9199
}
92100
return $filtered;
@@ -95,8 +103,14 @@ public function workspaceOverlay(array $records): array
95103
public function containerRecordWorkspaceOverlay(array $record): ?array
96104
{
97105
BackendUtility::workspaceOL('tt_content', $record, $this->workspaceId, false);
98-
if ($record && !VersionState::cast($record['t3ver_state'] ?? 0)->equals(VersionState::DELETE_PLACEHOLDER)) {
99-
return $record;
106+
if ((GeneralUtility::makeInstance(Typo3Version::class))->getMajorVersion() > 12) {
107+
if ($record && VersionState::tryFrom($record['t3ver_state'] ?? 0) !== VersionState::DELETE_PLACEHOLDER) {
108+
return $record;
109+
}
110+
} else {
111+
if ($record && !VersionState::cast($record['t3ver_state'] ?? 0)->equals(VersionState::DELETE_PLACEHOLDER)) {
112+
return $record;
113+
}
100114
}
101115
return null;
102116
}

Classes/Events/BeforeContainerPreviewIsRenderedEvent.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,19 @@
1515
use B13\Container\Domain\Model\Container;
1616
use TYPO3\CMS\Backend\View\BackendLayout\Grid\Grid;
1717
use TYPO3\CMS\Backend\View\BackendLayout\Grid\GridColumnItem;
18-
use TYPO3\CMS\Fluid\View\StandaloneView;
18+
use TYPO3\CMS\Core\View\ViewInterface;
1919

2020
final class BeforeContainerPreviewIsRenderedEvent
2121
{
2222
protected Container $container;
2323

24-
protected StandaloneView $view;
24+
protected ViewInterface $view;
2525

2626
protected Grid $grid;
2727

2828
protected GridColumnItem $item;
2929

30-
public function __construct(Container $container, StandaloneView $view, Grid $grid, GridColumnItem $item)
30+
public function __construct(Container $container, ViewInterface $view, Grid $grid, GridColumnItem $item)
3131
{
3232
$this->container = $container;
3333
$this->view = $view;
@@ -40,7 +40,7 @@ public function getContainer(): Container
4040
return $this->container;
4141
}
4242

43-
public function getView(): StandaloneView
43+
public function getView(): ViewInterface
4444
{
4545
return $this->view;
4646
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace B13\Container\Events;
6+
7+
/*
8+
* This file is part of TYPO3 CMS-based extension "container" by b13.
9+
*
10+
* It is free software; you can redistribute it and/or modify it under
11+
* the terms of the GNU General Public License, either version 2
12+
* of the License, or any later version.
13+
*/
14+
15+
use B13\Container\Domain\Model\Container;
16+
use TYPO3\CMS\Backend\View\BackendLayout\Grid\Grid;
17+
use TYPO3\CMS\Backend\View\BackendLayout\Grid\GridColumnItem;
18+
use TYPO3\CMS\Fluid\View\StandaloneView;
19+
20+
final class BeforeContainerPreviewIsRenderedEventV12
21+
{
22+
protected Container $container;
23+
24+
protected StandaloneView $view;
25+
26+
protected Grid $grid;
27+
28+
protected GridColumnItem $item;
29+
30+
public function __construct(Container $container, StandaloneView $view, Grid $grid, GridColumnItem $item)
31+
{
32+
$this->container = $container;
33+
$this->view = $view;
34+
$this->grid = $grid;
35+
$this->item = $item;
36+
}
37+
38+
public function getContainer(): Container
39+
{
40+
return $this->container;
41+
}
42+
43+
public function getView(): StandaloneView
44+
{
45+
return $this->view;
46+
}
47+
48+
public function getGrid(): Grid
49+
{
50+
return $this->grid;
51+
}
52+
53+
public function getItem(): GridColumnItem
54+
{
55+
trigger_error('gridColumItem property will be removed on next major release', E_USER_DEPRECATED);
56+
return $this->item;
57+
}
58+
}

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"homepage": "https://b13.com",
66
"license": ["GPL-2.0-or-later"],
77
"require": {
8-
"typo3/cms-backend": "^11.5 || ^12.4 || ^13.4"
8+
"typo3/cms-backend": "^11.5 || ^12.4 || ^13.4 || dev-main"
99
},
1010
"autoload": {
1111
"psr-4": {

0 commit comments

Comments
 (0)