diff --git a/Classes/Controller/ListByCategoryController.php b/Classes/Controller/ListByCategoryController.php index 5be93e21ec44e7da6974b4ae674b3c4426eff694..0962a22dd9ac4bbe214fea380d8058d556d694f1 100644 --- a/Classes/Controller/ListByCategoryController.php +++ b/Classes/Controller/ListByCategoryController.php @@ -32,6 +32,7 @@ use SGalinski\SgNews\Domain\Repository\NewsRepository; use SGalinski\SgNews\Domain\Repository\TagRepository; use SGalinski\SgNews\Service\ConfigurationService; use SGalinski\SgNews\Service\HeaderMetaDataService; +use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; use TYPO3\CMS\Core\Http\ImmediateResponseException; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Frontend\Controller\ErrorController; @@ -167,12 +168,22 @@ class ListByCategoryController extends AbstractController { $newsMetaData[] = $data; if (!$headerSet) { - if ($data['image']) { - HeaderMetaDataService::addOgImageToHeader($data['image']); - $headerSet = TRUE; - } elseif ($data['teaserImage']) { - HeaderMetaDataService::addOgImageToHeader($data['teaserImage']); - $headerSet = TRUE; + if (version_compare(ExtensionManagementUtility::getExtensionVersion('sg_seo'), '5.0.0', '>=')) { + if ($data['image']) { + HeaderMetaDataService::addOgImageToHeader($data['imageObject']->getOriginalResource()); + $headerSet = TRUE; + } elseif ($data['teaserImage']) { + HeaderMetaDataService::addOgImageToHeader($data['teaserImageObject']->getOriginalResource()); + $headerSet = TRUE; + } + } else { + if ($data['image']) { + HeaderMetaDataService::addOgImageToHeader($data['image']); + $headerSet = TRUE; + } elseif ($data['teaserImage']) { + HeaderMetaDataService::addOgImageToHeader($data['teaserImage']); + $headerSet = TRUE; + } } } } diff --git a/Classes/Controller/OverviewController.php b/Classes/Controller/OverviewController.php index d3d589fc0c8c15d83187cfaa1e070d07cdf0363b..ee0d90c486a7819d11d79bbf402d81ce3a32b3df 100644 --- a/Classes/Controller/OverviewController.php +++ b/Classes/Controller/OverviewController.php @@ -41,6 +41,7 @@ use TYPO3\CMS\Extbase\Persistence\Generic\QueryResult; use TYPO3\CMS\Extbase\Persistence\QueryInterface; use TYPO3\CMS\Frontend\Controller\ErrorController; use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons; +use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; /** * Controller that handles the overview page of categories and their news @@ -147,10 +148,18 @@ class OverviewController extends AbstractController { $highlightedNewsMetaData = $this->getMetaDataForNews($highlightedNews, $category); } - if ($highlightedNewsMetaData['image']) { - HeaderMetaDataService::addOgImageToHeader($highlightedNewsMetaData['image']); - } elseif ($highlightedNewsMetaData['teaserImage']) { - HeaderMetaDataService::addOgImageToHeader($highlightedNewsMetaData['teaserImage']); + if (version_compare(ExtensionManagementUtility::getExtensionVersion('sg_seo'), '5.0.0', '>=')) { + if ($highlightedNewsMetaData['image']) { + HeaderMetaDataService::addOgImageToHeader($highlightedNewsMetaData['imageObject']->getOriginalResource()); + } elseif ($highlightedNewsMetaData['teaserImage']) { + HeaderMetaDataService::addOgImageToHeader($highlightedNewsMetaData['teaserImageObject']->getOriginalResource()); + } + } else { + if ($highlightedNewsMetaData['image']) { + HeaderMetaDataService::addOgImageToHeader($highlightedNewsMetaData['image']); + } elseif ($highlightedNewsMetaData['teaserImage']) { + HeaderMetaDataService::addOgImageToHeader($highlightedNewsMetaData['teaserImage']); + } } } diff --git a/Classes/Controller/SingleViewController.php b/Classes/Controller/SingleViewController.php index 16587afde8a096dd9bf74bdcfd59a08a7a3153de..40c14e0afbfa1c830c0be569c3f18771af04b095 100644 --- a/Classes/Controller/SingleViewController.php +++ b/Classes/Controller/SingleViewController.php @@ -33,6 +33,7 @@ use SGalinski\SgNews\Domain\Repository\NewsRepository; use SGalinski\SgNews\Domain\Repository\TagRepository; use SGalinski\SgNews\Service\HeaderMetaDataService; use TYPO3\CMS\Core\Charset\CharsetConverter; +use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; /** * Controller that handles the news single view page @@ -92,10 +93,18 @@ class SingleViewController extends AbstractController { // } $newsMetaData = $this->getMetaDataForNews($news, $newsCategory); - if ($newsMetaData['image']) { - HeaderMetaDataService::addOgImageToHeader($newsMetaData['image']); - } elseif ($newsMetaData['teaserImage']) { - HeaderMetaDataService::addOgImageToHeader($newsMetaData['teaserImage']); + if (version_compare(ExtensionManagementUtility::getExtensionVersion('sg_seo'), '5.0.0', '>=')) { + if ($newsMetaData['image']) { + HeaderMetaDataService::addOgImageToHeader($newsMetaData['imageObject']->getOriginalResource()); + } elseif ($newsMetaData['teaserImage']) { + HeaderMetaDataService::addOgImageToHeader($newsMetaData['teaserImageObject']->getOriginalResource()); + } + } else { + if ($newsMetaData['image']) { + HeaderMetaDataService::addOgImageToHeader($newsMetaData['image']); + } elseif ($newsMetaData['teaserImage']) { + HeaderMetaDataService::addOgImageToHeader($newsMetaData['teaserImage']); + } } $previousNews = $this->newsRepository->findPreviousNewsEntryFromCurrentNews($news, $this->settings['sortBy']) diff --git a/Classes/Service/HeaderMetaDataService.php b/Classes/Service/HeaderMetaDataService.php index 87ab25ef308fff5bdf04668c8fd8384cc8e163c1..807a64f57207d5cfde84145731bd6692c26d01e5 100644 --- a/Classes/Service/HeaderMetaDataService.php +++ b/Classes/Service/HeaderMetaDataService.php @@ -26,6 +26,7 @@ namespace SGalinski\SgNews\Service; * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ +use TYPO3\CMS\Core\Resource\FileReference; use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController; /** @@ -35,14 +36,10 @@ class HeaderMetaDataService { /** * Sets the data for the og:image meta data header tag. * - * @param string $path + * @param string|FileReference $path * @return void */ - public static function addOgImageToHeader($path) { - if (strlen($path) <= 0) { - return; - } - + public static function addOgImageToHeader($path): void { /** @var $typoScriptController TypoScriptFrontendController */ $typoScriptController = $GLOBALS['TSFE']; $typoScriptController->page['og_image_path_by_extension'] = $path; diff --git a/Configuration/TCA/Overrides/pages.php b/Configuration/TCA/Overrides/pages.php index c7613ed82245b16c6c0e6c456f1714510f55bd34..d666b221906c971c41b331cb0004c93584723153 100644 --- a/Configuration/TCA/Overrides/pages.php +++ b/Configuration/TCA/Overrides/pages.php @@ -56,8 +56,40 @@ foreach ( ]; } -$GLOBALS['TCA']['pages']['types'][\SGalinski\SgNews\Utility\BackendNewsUtility::NEWS_DOKTYPE] = [ - 'showitem' => '--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, +if (version_compare(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExtensionVersion('sg_seo'), '5.0.0', '>=')) { + $GLOBALS['TCA']['pages']['types'][\SGalinski\SgNews\Utility\BackendNewsUtility::NEWS_DOKTYPE] = [ + 'showitem' => '--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, + --palette--;;standard, + --palette--;;titleDescriptionAndHighlightFlag, + --palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:pages.palettes.editorial;editorialWithNewsAuthor, + tx_sgnews_content_from_another_page, tx_sgnews_related_news, tx_sgnews_tags, + --div--;LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.tabs.seo, + --palette--;;seo, + --palette--;;robots, + --palette--;;canonical, + --palette--;;sitemap, + --div--;LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.tabs.socialmedia, + --palette--;;opengraph, + --palette--;;twittercards, + --div--;' . $localLangDbPath . 'pages.tabs.images, + tx_sgnews_teaser2_image, tx_sgnews_teaser1_image, + --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.metadata, + --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.abstract;abstract, + --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.appearance, + --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.layout;layout, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, + --palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:pages.palettes.visibility;visibility, + --palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:pages.palettes.access;access, + --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.behaviour, + --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.caching;caching, + --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.miscellaneous;miscellaneous, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, + --palette--;;language + ' + ]; +} else { + $GLOBALS['TCA']['pages']['types'][\SGalinski\SgNews\Utility\BackendNewsUtility::NEWS_DOKTYPE] = [ + 'showitem' => '--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, --palette--;;standard, --palette--;;titleDescriptionAndHighlightFlag, --palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:pages.palettes.editorial;editorialWithNewsAuthor, @@ -79,10 +111,41 @@ $GLOBALS['TCA']['pages']['types'][\SGalinski\SgNews\Utility\BackendNewsUtility:: --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, --palette--;;language ' -]; - -$GLOBALS['TCA']['pages']['types'][\SGalinski\SgNews\Utility\BackendNewsUtility::CATEGORY_DOKTYPE] = [ - 'showitem' => '--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, + ]; +} +if (version_compare(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExtensionVersion('sg_seo'), '5.0.0', '>=')) { + $GLOBALS['TCA']['pages']['types'][\SGalinski\SgNews\Utility\BackendNewsUtility::CATEGORY_DOKTYPE] = [ + 'showitem' => '--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, + --palette--;;standard, + title, slug, tx_projectbase_path_segment, tx_projectbase_excludefromsluggeneration, tx_realurl_pathsegment, tx_realurl_exclude, + --div--;LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.tabs.seo, + --palette--;;seo, + --palette--;;robots, + --palette--;;canonical, + --palette--;;sitemap, + --div--;LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.tabs.socialmedia, + --palette--;;opengraph, + --palette--;;twittercards, + --div--;' . $localLangDbPath . 'pages.tabs.images, + tx_sgnews_teaser2_image, tx_sgnews_teaser1_image, + --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.metadata, + --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.abstract;abstract, + seo_title,canonical_link, description, + --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.appearance, + --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.layout;layout, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, + --palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:pages.palettes.visibility;visibility, + --palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:pages.palettes.access;access, + --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.behaviour, + --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.caching;caching, + --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.miscellaneous;miscellaneous, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, + --palette--;;language + ' + ]; +} else { + $GLOBALS['TCA']['pages']['types'][\SGalinski\SgNews\Utility\BackendNewsUtility::CATEGORY_DOKTYPE] = [ + 'showitem' => '--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, --palette--;;standard, title, slug, tx_projectbase_path_segment, tx_projectbase_excludefromsluggeneration, tx_realurl_pathsegment, tx_realurl_exclude, --div--;' . $localLangDbPath . 'pages.tabs.images, @@ -102,7 +165,8 @@ $GLOBALS['TCA']['pages']['types'][\SGalinski\SgNews\Utility\BackendNewsUtility:: --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, --palette--;;language ' -]; + ]; +} \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns( 'pages', @@ -391,29 +455,56 @@ $GLOBALS['TCA']['pages']['palettes']['editorialWithNewsAuthor'] = [ ]; foreach ($GLOBALS['TCA']['pages']['columns'] as $languageExcludeField => $_) { - if (!in_array($languageExcludeField, [ - 'doktype', - 'title', - 'subtitle', - 'description', - 'slug', - 'tx_projectbase_path_segment', - 'tx_projectbase_excludefromsluggeneration', - 'tx_sgnews_location', - 'tx_sgnews_teaser1_image', - 'tx_sgnews_teaser2_image', - 'tx_sgnews_tags', - 'abstract', - 'tx_projectbase_seo_titletag', - 'tx_projectbase_seo_canonicaltag', - 'hidden', - 'sys_language_uid', - 'tx_languagevisibility_visibility', - 'lastUpdated', - 'tx_sgnews_date_end', - 'tx_sgnews_highlighted', - 'tx_sgnews_never_highlighted', - ])) { + if (version_compare(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExtensionVersion('sg_seo'), '5.0.0', '>=')) { + $fieldNames = [ + 'doktype', + 'title', + 'subtitle', + 'description', + 'slug', + 'tx_projectbase_path_segment', + 'tx_projectbase_excludefromsluggeneration', + 'tx_sgnews_location', + 'tx_sgnews_teaser1_image', + 'tx_sgnews_teaser2_image', + 'tx_sgnews_tags', + 'abstract', + 'seo_title', + 'canonical_link', + 'hidden', + 'sys_language_uid', + 'tx_languagevisibility_visibility', + 'lastUpdated', + 'tx_sgnews_date_end', + 'tx_sgnews_highlighted', + 'tx_sgnews_never_highlighted', + ]; + } else { + $fieldNames = [ + 'doktype', + 'title', + 'subtitle', + 'description', + 'slug', + 'tx_projectbase_path_segment', + 'tx_projectbase_excludefromsluggeneration', + 'tx_sgnews_location', + 'tx_sgnews_teaser1_image', + 'tx_sgnews_teaser2_image', + 'tx_sgnews_tags', + 'abstract', + 'tx_projectbase_seo_titletag', + 'tx_projectbase_seo_canonicaltag', + 'hidden', + 'sys_language_uid', + 'tx_languagevisibility_visibility', + 'lastUpdated', + 'tx_sgnews_date_end', + 'tx_sgnews_highlighted', + 'tx_sgnews_never_highlighted', + ]; + } + if (!in_array($languageExcludeField, $fieldNames)) { $GLOBALS['TCA']['pages']['types'][\SGalinski\SgNews\Utility\BackendNewsUtility::NEWS_DOKTYPE]['columnsOverrides'][$languageExcludeField]['l10n_mode'] = 'exclude'; } }