Skip to content

Commit ae9d11c

Browse files
author
Achim Fritz
committed
[!!!][TASK] change dependencies
* drop TYPO3 v9 Support * add TYPO3 v12 Support * add PHP 7.4 as min requirement
1 parent a43c18a commit ae9d11c

11 files changed

+91
-35
lines changed

Classes/Hooks/DrawItem.php

+8-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* of the License, or any later version.
1313
*/
1414

15+
use B13\Listelements\Service\ListService;
1516
use TYPO3\CMS\Backend\View\PageLayoutView;
1617
use TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
1718

@@ -20,6 +21,12 @@
2021
*/
2122
class DrawItem implements PageLayoutViewDrawItemHookInterface
2223
{
24+
protected ListService $listService;
25+
26+
public function __construct(ListService $listService)
27+
{
28+
$this->listService = $listService;
29+
}
2330

2431
/**
2532
* @param PageLayoutView $parentObject : The parent object that triggered this hook
@@ -37,7 +44,7 @@ public function preProcess(
3744
) {
3845
// get all list items including all assets
3946
if ($row['tx_listelements_list'] ?? false) {
40-
\B13\Listelements\Service\ListService::resolveListitems($row);
47+
$row = $this->listService->resolveListitems($row);
4148
}
4249
}
4350
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace B13\Listelements\Listener;
6+
7+
/*
8+
* This file is part of TYPO3 CMS-extension listelements 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\Listelements\Service\ListService;
16+
use TYPO3\CMS\Backend\View\Event\PageContentPreviewRenderingEvent;
17+
18+
class PageContentPreviewRendering
19+
{
20+
protected ListService $listService;
21+
22+
public function __construct(ListService $listService)
23+
{
24+
$this->listService = $listService;
25+
}
26+
27+
public function __invoke(PageContentPreviewRenderingEvent $event): void
28+
{
29+
$record = $event->getRecord();
30+
if ($record['tx_listelements_list'] ?? false) {
31+
$record = $this->listService->resolveListitems($record);
32+
$event->setRecord($record);
33+
}
34+
}
35+
}

Classes/Service/ListService.php

+7-5
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,20 @@
1818
use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction;
1919
use TYPO3\CMS\Core\Database\Query\Restriction\WorkspaceRestriction;
2020
use TYPO3\CMS\Core\Resource\FileRepository;
21+
use TYPO3\CMS\Core\SingletonInterface;
2122
use TYPO3\CMS\Core\Utility\GeneralUtility;
2223
use TYPO3\CMS\Core\Versioning\VersionState;
2324

24-
class ListService
25+
class ListService implements SingletonInterface
2526
{
26-
2727
/**
2828
* @param array $row: The current data row for this item
2929
* @param string $field: Fieldname used to resolve the reference
3030
* @param string $table: Name of the table that holds the reference to this list items
3131
* @param string $filereferences: comma separated list of fields with file references
32+
* @return array $row: the extend row
3233
*/
33-
public static function resolveListitems(array &$row, $field = 'tx_listelements_list', $table = 'tt_content', $filereferences = 'assets,images')
34+
public function resolveListitems(array $row, string $field = 'tx_listelements_list', string $table = 'tt_content', string $filereferences = 'assets,images'): array
3435
{
3536
$returnAs = 'listitems_' . $field;
3637
if ($returnAs === 'listitems_tx_listelements_list') {
@@ -59,7 +60,7 @@ public static function resolveListitems(array &$row, $field = 'tx_listelements_l
5960

6061
$row[$returnAs] = $queryBuilder
6162
->execute()
62-
->fetchAll();
63+
->fetchAllAssociative();
6364

6465
foreach ($row[$returnAs] as $key => $specificRow) {
6566
BackendUtility::workspaceOL('tx_listelements_item', $specificRow);
@@ -78,7 +79,7 @@ public static function resolveListitems(array &$row, $field = 'tx_listelements_l
7879

7980
$row[$returnAs . '-numberOfVisibleItems'] = $queryBuilder
8081
->execute()
81-
->fetchColumn(0);
82+
->fetchOne();
8283

8384
$fileRepository = GeneralUtility::makeInstance(FileRepository::class);
8485
foreach ($row[$returnAs] as $key => $item) {
@@ -87,5 +88,6 @@ public static function resolveListitems(array &$row, $field = 'tx_listelements_l
8788
$row[$returnAs][$key]['processed' . ucfirst($fieldname)] = $fileRepository->findByRelation('tx_listelements_item', $fieldname, $item['uid']);
8889
}
8990
}
91+
return $row;
9092
}
9193
}

Configuration/Services.yaml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
services:
2+
_defaults:
3+
autowire: true
4+
autoconfigure: true
5+
public: false
6+
7+
B13\Listelements\:
8+
resource: '../Classes/*'
9+
10+
B13\Listelements\Hooks\DrawItem:
11+
public: true
12+
13+
B13\Listelements\Listener\PageContentPreviewRendering:
14+
tags:
15+
- name: event.listener
16+
identifier: 'b13-listelements-page-content-preview-rendering'
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?php
22

3-
defined('TYPO3_MODE') or die();
3+
defined('TYPO3') or die();
44

55
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('listelements', 'Configuration/TypoScript/', 'Configuration for extension "listelements"');

Configuration/TCA/Overrides/tt_content.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
defined('TYPO3_MODE') or die();
3+
defined('TYPO3') or die();
44

55
/**
66
* add fields to tt_content table
@@ -26,7 +26,7 @@
2626
'newRecordLinkAddTitle' => false,
2727
'newRecordLinkTitle' => 'LLL:EXT:listelements/Resources/Private/Language/locallang_db.xlf:tt_content.list.newRecordLinkAddTitle',
2828
'useSortable' => true,
29-
'useCombination' => false
29+
'useCombination' => false,
3030
],
3131
],
3232
],

Configuration/TCA/tx_listelements_item.php

+14-17
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,18 @@
3030
],
3131
'searchFields' => 'header,subheader,bodytext,link',
3232
],
33-
'interface' => [
34-
'showRecordFieldList' => 'hidden,uid_foreign,sorting_foreign,header,subheader,bodytext,text,link,linklabel,assets',
35-
],
3633

3734
'columns' => [
3835
'sys_language_uid' => [
39-
'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.language',
36+
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
4037
'config' => [
4138
'type' => 'select',
4239
'renderType' => 'selectSingle',
4340
'foreign_table' => 'sys_language',
4441
'foreign_table_where' => 'ORDER BY sys_language.title',
4542
'items' => [
46-
['LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
47-
['LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0],
43+
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
44+
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0],
4845
],
4946
'default' => 0,
5047
'fieldWizard' => [
@@ -56,7 +53,7 @@
5653
],
5754
'l10n_parent' => [
5855
'displayCond' => 'FIELD:sys_language_uid:>:0',
59-
'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
56+
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
6057
'config' => [
6158
'type' => 'select',
6259
'renderType' => 'selectSingle',
@@ -76,11 +73,11 @@
7673
],
7774
'l10n_source' => [
7875
'config' => [
79-
'type' => 'passthrough'
80-
]
76+
'type' => 'passthrough',
77+
],
8178
],
8279
'hidden' => [
83-
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
80+
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.hidden',
8481
'config' => [
8582
'type' => 'check',
8683
'default' => 0,
@@ -118,17 +115,17 @@
118115
'config' => [
119116
'type' => 'input',
120117
'size' => 30,
121-
'eval' => 'trim'
122-
]
118+
'eval' => 'trim',
119+
],
123120
],
124121
'fieldname' => [
125122
'label' => 'LLL:EXT:listelements/Resources/Private/Language/locallang_tca.xlf:tx_listelements_item.fieldname',
126123
'l10n_mode' => 'exclude',
127124
'config' => [
128125
'type' => 'input',
129126
'size' => 30,
130-
'eval' => 'trim'
131-
]
127+
'eval' => 'trim',
128+
],
132129
],
133130
'header' => [
134131
'l10n_mode' => 'prefixLangTitle',
@@ -165,7 +162,7 @@
165162
'cols' => 80,
166163
'rows' => 10,
167164
'softref' => 'typolink_tag,images,email[subst],url',
168-
]
165+
],
169166
],
170167
'bodytext' => [
171168
'l10n_mode' => 'prefixLangTitle',
@@ -175,8 +172,8 @@
175172
'cols' => 80,
176173
'rows' => 10,
177174
'softref' => 'typolink_tag,images,email[subst],url',
178-
'enableRichtext' => true
179-
]
175+
'enableRichtext' => true,
176+
],
180177
],
181178
'images' => [
182179
'label' => 'LLL:EXT:listelements/Resources/Private/Language/locallang_db.xlf:tx_listelements_item.images',

composer.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"GPL-2.0-or-later"
77
],
88
"require": {
9-
"typo3/cms-backend": "^9.5 || ^10.4 || ^11.5"
9+
"php": "^7.4 || ~8.0",
10+
"typo3/cms-backend": "^10.4 || ^11.5 || ^12.1"
1011
},
1112
"extra": {
1213
"typo3/cms": {

ext_emconf.php

+1-4
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,12 @@
66
'category' => 'backend',
77
'version' => '1.0.0',
88
'state' => 'stable',
9-
'uploadfolder' => 0,
10-
'createDirs' => '',
11-
'clearcacheonload' => 0,
129
'author' => 'David Steeb, b13 GmbH',
1310
'author_email' => '[email protected]',
1411
'author_company' => 'b13 GmbH, Stuttgart',
1512
'constraints' => [
1613
'depends' => [
17-
'typo3' => '9.5.0-11.5.99',
14+
'typo3' => '10.4.0-12.99.99',
1815
],
1916
],
2017
];

ext_localconf.php

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<?php
22

3-
defined('TYPO3_MODE') or die('Access denied.');
3+
defined('TYPO3') or die('Access denied.');
44

55
(function () {
6-
if (TYPO3_MODE === 'BE') {
7-
// Hook for rendering backend preview content element
6+
// Hook for rendering backend preview content element
7+
if ((\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Information\Typo3Version::class))->getMajorVersion() < 12) {
88
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem'][] = \B13\Listelements\Hooks\DrawItem::class;
9+
// else PageContentPreviewRendering Listener is used
910
}
1011
})();

ext_tables.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
defined('TYPO3_MODE') or die('Access denied.');
3+
defined('TYPO3') or die('Access denied.');
44

55
(function () {
66
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_listelements_item');

0 commit comments

Comments
 (0)