Skip to content
Snippets Groups Projects
ext_localconf.php 4.83 KiB
<?php
/**
 *
 * Copyright notice
 *
 * (c) sgalinski Internet Services (https://www.sgalinski.de)
 *
 * All rights reserved
 *
 * This script is part of the TYPO3 project. The TYPO3 project is
 * free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * The GNU General Public License can be found at
 * http://www.gnu.org/copyleft/gpl.html.
 *
 * This script is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * This copyright notice MUST APPEAR in all copies of the script!
 */

call_user_func(
	function ($extKey) {
		// common typoscript configuration
		\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(
			'<INCLUDE_TYPOSCRIPT: source="FILE:EXT:' . $extKey . '/Configuration/TypoScript/Common/setup.typoscript">'
		);

		// plugin configurations
		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
			'SGalinski.' . $extKey,
			'Overview',
			['Overview' => 'overview',],
			['Overview' => '',]
		);

		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
			'SGalinski.' . $extKey,
			'ListByCategory',
			['ListByCategory' => 'index',],
			['ListByCategory' => '',]
		);

		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
			'SGalinski.' . $extKey,
			'SingleView',
			['SingleView' => 'singleView',],
			['SingleView' => '',]
		);

		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
			'SGalinski.' . $extKey,
			'NewsFeed',
			['NewsFeed' => 'index',],
			['NewsFeed' => '',]
		);

		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
			'SGalinski.' . $extKey,
			'Latest',
			['Latest' => 'index',],
			['Latest' => '',]
		);

		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
			'SGalinski.' . $extKey,
			'ListByCategory',
			['ListByCategory' => 'index',],
			['ListByCategory' => '',]
		);

		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
			'SGalinski.' . $extKey,
			'PageBrowser',
			['PageBrowser' => 'index',],
			['PageBrowser' => '',]
		);

		if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('sg_ajax')) {
			\SGalinski\SgAjax\Service\AjaxRegistration::configureAjaxFrontendPlugin(
				$extKey, [
					'Ajax\Like' => 'addLike',
				]
			);
		}

		// hook registration
		$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] =
			'SGalinski\SgNews\TCA\TcaProvider';

		// Xclasses
		$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects']['TYPO3\CMS\Core\Page\PageRenderer'] =
			['className' => 'SGalinski\SgNews\Xclass\PageRenderer'];

		// add realurl configuration
		if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('realurl')) {
			$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/realurl/class.tx_realurl_autoconfgen.php']['extensionConfiguration']['sgnews'] =
				\SGalinski\SgNews\Hooks\RealUrlAutoConfiguration::class . '->addNewsConfig';
		}

		/** @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher $signalSlotDispatcher */
		$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
			\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class
		);

		$signalSlotDispatcher->connect(
			\TYPO3\CMS\Backend\Controller\EditDocumentController::class,
			'preInitAfter',
			\SGalinski\SgNews\Hooks\EditDocumentController::class,
			'preInitAfter'
		);

		if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/db_layout.php']['drawHeaderHook'])) {
			$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/db_layout.php']['drawHeaderHook'] = [];
		}
		$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/db_layout.php']['drawHeaderHook'][] =
			\SGalinski\SgNews\Hooks\PageLayoutController::class . '->addNewsModuleLink';

		// register command controllers
		$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['extbase']['commandControllers'][] =
			'SGalinski\SgNews\Command\MigrateNewsCommandController';

		// add the new doktype to the list of types available from the new page menu at the top of the page tree
		\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig(
			'options.pageTree.doktypesToShowInNewPageDragArea := addToList(' . \SGalinski\SgNews\Utility\BackendNewsUtility::NEWS_DOKTYPE . ')' . PHP_EOL
			. 'options.pageTree.doktypesToShowInNewPageDragArea := addToList(' . \SGalinski\SgNews\Utility\BackendNewsUtility::CATEGORY_DOKTYPE . ')'
		);

		\SGalinski\SgNews\Utility\BackendNewsUtility::registerIcons();

		\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(
		    '<INCLUDE_TYPOSCRIPT: source="FILE:EXT:' . $extKey . '/Configuration/TsConfig/Page/NewContentElementWizard.tsconfig">'
		);
	}, 'sg_news'
);