diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19117ad..6d1c850 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,11 +8,8 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - TYPO3: [12, 13] - PHP: [ 8.2, 8.3 ] - include: - - TYPO3: 13 - php: 8.4 + TYPO3: [13, 14] + PHP: [ 8.2, 8.3, 8.4 ] steps: - name: Checkout @@ -33,15 +30,15 @@ jobs: path: ~/.composer/cache key: dependencies-composer-${{ hashFiles('composer.json') }} - - name: Install composer dependencies TYPO3 13 - if: matrix.TYPO3 == 13 + - name: Install composer dependencies TYPO3 14 + if: matrix.TYPO3 == 14 run: | composer install --no-progress --no-interaction - - name: Install composer dependencies TYPO3 12 - if: matrix.TYPO3 == 12 + - name: Install composer dependencies TYPO3 13 + if: matrix.TYPO3 == 13 run: | - composer require typo3/cms-backend:^12.4 --no-progress --no-interaction --dev -W + composer require typo3/cms-backend:^13.4 --no-progress --no-interaction --dev - name: Phpstan run: .Build/bin/phpstan analyze -c Build/phpstan.neon diff --git a/Classes/LinkHandler/PageLinkHandler.php b/Classes/LinkHandler/PageLinkHandler.php index 75ffc67..f3f4dee 100644 --- a/Classes/LinkHandler/PageLinkHandler.php +++ b/Classes/LinkHandler/PageLinkHandler.php @@ -22,6 +22,7 @@ use TYPO3\CMS\Core\Database\Query\Restriction\WorkspaceRestriction; use TYPO3\CMS\Core\Exception\SiteNotFoundException; use TYPO3\CMS\Core\Imaging\Icon; +use TYPO3\CMS\Core\Imaging\IconSize; use TYPO3\CMS\Core\LinkHandling\LinkService; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; use TYPO3\CMS\Core\Site\SiteFinder; @@ -84,10 +85,12 @@ protected function getRecordsOnExpandedPage($pageId) $languages = $this->getAllLanguages($pageId); $availableLanguages = []; $languageIds = []; + $iconSizeSmall = class_exists(IconSize::class) ? IconSize::SMALL : constant(Icon::class . '::SIZE_SMALL'); + foreach ($languages as $language) { $availableLanguages[$language->getLanguageId()] = [ 'title' => $language->getTitle(), - 'flag' => $this->iconFactory->getIcon($language->getFlagIdentifier(), Icon::SIZE_SMALL), + 'flag' => $this->iconFactory->getIcon($language->getFlagIdentifier(), $iconSizeSmall), ]; if ($language->getLanguageId() > -1) { $availableLanguages[$language->getLanguageId()]['url'] = $this->linkService->asString([ @@ -113,7 +116,7 @@ protected function getRecordsOnExpandedPage($pageId) $this->view->assign('activePageLink', $this->linkService->asString(['type' => LinkService::TYPE_PAGE, 'pageuid' => $pageId])); } $this->view->assign('activePageTitle', BackendUtility::getRecordTitle('pages', $activePageRecord, true)); - $this->view->assign('activePageIcon', $this->iconFactory->getIconForRecord('pages', $activePageRecord, Icon::SIZE_SMALL)->render()); + $this->view->assign('activePageIcon', $this->iconFactory->getIconForRecord('pages', $activePageRecord, $iconSizeSmall)->render()); // Look up tt_content elements from the expanded page $queryBuilder = $this->connectionPool->getQueryBuilderForTable('tt_content'); @@ -156,7 +159,7 @@ protected function getRecordsOnExpandedPage($pageId) $groupedContentElements = []; $groupedContentElements[-1] = [ 'label' => $languages[-1]['title'], - 'flag' => $this->iconFactory->getIcon($languages[-1]['flagIcon'], Icon::SIZE_SMALL), + 'flag' => $this->iconFactory->getIcon($languages[-1]['flagIcon'], $iconSizeSmall), 'items' => [], ]; foreach ($contentElements as &$contentElement) { @@ -164,7 +167,7 @@ protected function getRecordsOnExpandedPage($pageId) if (!isset($groupedContentElements[$languageId])) { $groupedContentElements[$languageId] = [ 'label' => $languages[$languageId]['title'], - 'flag' => $this->iconFactory->getIcon($languages[$languageId]['flagIcon'], Icon::SIZE_SMALL), + 'flag' => $this->iconFactory->getIcon($languages[$languageId]['flagIcon'], $iconSizeSmall), 'items' => [], ]; } @@ -179,7 +182,7 @@ protected function getRecordsOnExpandedPage($pageId) $contentElement['url'] = $this->linkService->asString(['type' => LinkService::TYPE_PAGE, 'parameters' => '&L=' . $languageId, 'pageuid' => (int)$pageId, 'fragment' => $contentElement['uid']]); $contentElement['isSelected'] = !empty($this->linkParts) && (int)($this->linkParts['url']['fragment'] ?? 0) === (int)$contentElement['uid']; - $contentElement['icon'] = $this->iconFactory->getIconForRecord('tt_content', $contentElement, Icon::SIZE_SMALL)->render(); + $contentElement['icon'] = $this->iconFactory->getIconForRecord('tt_content', $contentElement, $iconSizeSmall)->render(); $contentElement['title'] = BackendUtility::getRecordTitle('tt_content', $contentElement, true); $groupedContentElements[$languageId]['items'][$colPos]['items'][] = $contentElement; if ($languageId === 0) { diff --git a/composer.json b/composer.json index f0e6caa..a3ec484 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ "Language" ], "require": { - "typo3/cms-backend": "^12.4 || ^13.4" + "typo3/cms-backend": "^13.4 || ^14.3" }, "autoload": { "psr-4": { diff --git a/ext_emconf.php b/ext_emconf.php index 3ccbbd2..927fa47 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -11,7 +11,7 @@ 'author_company' => 'b13 GmbH', 'constraints' => [ 'depends' => [ - 'typo3' => '12.4.27-13.99.99', + 'typo3' => '13.4.0-14.3.99', ], ], ];