175 lines
8.6 KiB
PHP
175 lines
8.6 KiB
PHP
<?php
|
|
|
|
defined('TYPO3_MODE') or die();
|
|
|
|
$boot = static function (): void {
|
|
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
|
|
'News',
|
|
'Pi1',
|
|
[
|
|
\GeorgRinger\News\Controller\NewsController::class => '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);
|