'list,detail,selectedList,dateMenu,searchForm,searchResult', \GeorgRinger\News\Controller\CategoryController::class => 'list', \GeorgRinger\News\Controller\TagController::class => 'list', ], [ \GeorgRinger\News\Controller\NewsController::class => 'searchForm,searchResult', ] ); // Page module hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['list_type_Info']['news' . '_pi1']['news'] = \GeorgRinger\News\Hooks\PageLayoutView::class . '->getExtensionSummary'; $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearCachePostProc']['news_clearcache'] = \GeorgRinger\News\Hooks\DataHandler::class . '->clearCachePostProc'; $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['moveRecordClass']['news_clearcache'] = \GeorgRinger\News\Hooks\DataHandler::class; // Edit restriction for news records $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']['news'] = \GeorgRinger\News\Hooks\DataHandler::class; $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass']['news'] = \GeorgRinger\News\Hooks\DataHandler::class; // Modify flexform values $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Core\Configuration\FlexForm\FlexFormTools::class]['flexParsing']['news'] = \GeorgRinger\News\Hooks\BackendUtility::class; // Modify flexform fields since core 8.5 via formEngine: Inject a data provider between TcaFlexPrepare and TcaFlexProcess $GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['tcaDatabaseRecord'][\GeorgRinger\News\Backend\FormDataProvider\NewsFlexFormManipulation::class] = [ 'depends' => [ \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexPrepare::class, ], 'before' => [ \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexProcess::class, ], ]; // Hide content elements in list module & filter in administration module $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList::class]['modifyQuery'][] = \GeorgRinger\News\Hooks\Backend\RecordListQueryHook::class; // Hide content elements in page module $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Backend\View\PageLayoutView::class]['modifyQuery'][] = \GeorgRinger\News\Hooks\Backend\PageViewQueryHook::class; // Inline records hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tceforms_inline.php']['tceformsInlineHook']['news'] = \GeorgRinger\News\Hooks\InlineElementHook::class; // Xclass InlineRecordContainer $GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\TYPO3\CMS\Backend\Form\Container\InlineRecordContainer::class] = [ 'className' => \GeorgRinger\News\Xclass\InlineRecordContainerForNews::class, ]; /* =========================================================================== Custom cache, done with the caching framework =========================================================================== */ if (empty($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['news_category'])) { $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['news_category'] = []; } // Define string frontend as default frontend, this must be set with TYPO3 4.5 and below // and overrides the default variable frontend of 4.6 if (!isset($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['news_category']['frontend'])) { $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['news_category']['frontend'] = \TYPO3\CMS\Core\Cache\Frontend\VariableFrontend::class; } /* =========================================================================== Add TSconfig =========================================================================== */ // For linkvalidator if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('linkvalidator')) { \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('@import \'EXT:news/Configuration/TSconfig/Page/mod.linkvalidator.tsconfig\''); } if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('guide')) { \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('@import \'EXT:news/Configuration/TSconfig/Tours/AdministrationModule.tsconfig\''); } \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(' @import \'EXT:news/Configuration/TSconfig/ContentElementWizard.tsconfig\' @import \'EXT:news/Configuration/TSconfig/Administration.tsconfig\' '); /* =========================================================================== Hooks =========================================================================== */ // Register cache frontend for proxy class generation $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['news'] = [ 'frontend' => \TYPO3\CMS\Core\Cache\Frontend\PhpFrontend::class, 'backend' => \TYPO3\CMS\Core\Cache\Backend\FileBackend::class, 'groups' => [ 'all', 'system', ], 'options' => [ 'defaultLifetime' => 0, ] ]; if (class_exists(\GeorgRinger\News\Utility\ClassLoader::class)) { \GeorgRinger\News\Utility\ClassLoader::registerAutoloader(); } $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearCachePostProc'][] = \GeorgRinger\News\Utility\ClassCacheManager::class . '->reBuild'; $GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['tcaDatabaseRecord'][\GeorgRinger\News\Backend\FormDataProvider\NewsRowInitializeNew::class] = [ 'depends' => [ \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowInitializeNew::class, ] ]; if (TYPO3_MODE === 'BE') { $icons = [ 'apps-pagetree-folder-contains-news' => 'ext-news-folder-tree.svg', 'apps-pagetree-page-contains-news' => 'ext-news-page-tree.svg', 'ext-news-wizard-icon' => 'plugin_wizard.svg', 'ext-news-type-default' => 'news_domain_model_news.svg', 'ext-news-type-internal' => 'news_domain_model_news_internal.svg', 'ext-news-type-external' => 'news_domain_model_news_external.svg', 'ext-news-tag' => 'news_domain_model_tag.svg', 'ext-news-link' => 'news_domain_model_link.svg', 'ext-news-donation' => 'donation.svg', 'ext-news-paypal' => 'donation_paypal.svg', 'ext-news-patreon' => 'donation_patreon.svg', 'ext-news-amazon' => 'donation_amazon.svg', ]; $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class); foreach ($icons as $identifier => $path) { if (!$iconRegistry->isRegistered($identifier)) { $iconRegistry->registerIcon( $identifier, \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class, ['source' => 'EXT:news/Resources/Public/Icons/' . $path] ); } } } // Slug helpers $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['realurlAliasNewsSlug'] = \GeorgRinger\News\Updates\RealurlAliasNewsSlugUpdater::class; // Recommended before 'newsSlug' $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['newsSlug'] = \GeorgRinger\News\Updates\NewsSlugUpdater::class; $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['sysCategorySlugs'] = \GeorgRinger\News\Updates\PopulateCategorySlugs::class; $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['txNewsTagSlugs'] = \GeorgRinger\News\Updates\PopulateTagSlugs::class; $GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['nodeRegistry'][1552726986] = [ 'nodeName' => 'NewsStaticText', 'priority' => 70, 'class' => \GeorgRinger\News\Backend\FieldInformation\StaticText::class ]; \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(trim(' config.pageTitleProviders { news { provider = GeorgRinger\News\Seo\NewsTitleProvider before = altPageTitle,record,seo } } ')); }; $boot(); unset($boot);