Breaking: #97135 - Removed support for module handling based on TBE_MODULES_EXT¶
See forge#97135
Description¶
Previously it had been possible to add additional functionality to TYPO3
backend modules, such as Web > Info or Web > Template,
using the ExtensionManagementUtility::insertModuleFunction()
API method,
which attached a new entry to the global TBE_MODULES_EXT
array.
Since the introduction of the new
Module Registration API,
all modules are registered in the dedicated Configuration/Backend/Modules.php
configuration file. Additional modules, or "third-level modules" are now also
registered via the new mechanism.
Therefore, the $GLOBALS['TBE_MODULES_EXT']
has been removed, while the
corresponding ExtensionManagementUtility::insertModuleFunction()
API
method has no effect.
The related page TSconfig options mod.web_info.menu.function
as well as mod.web_ts.menu.function
have been removed in favor
of the existing hideModules
user TSconfig option and the module
access logic, which due to the new registration, now also covers those modules.
Additionally, the following hooks have been removed, because their use cases does no longer exist:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['TYPO3\CMS\Tstemplate\Controller\TypoScriptTemplateModuleController']['newStandardTemplateView']
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['TYPO3\CMS\Tstemplate\Controller\TypoScriptTemplateModuleController']['newStandardTemplateHandler']
Impact¶
The global TBE_MODULES_EXT
array does no longer exist and the
ExtensionManagementUtility::insertModuleFunction()
API method no
longer has any effect.
The page TSconfig options mod.web_info.menu.function
and mod.web_ts.menu.function
are no longer evaluated.
Using one of mentioned, TypoScriptTemplateModuleController
related
hooks does no longer have any effect.
Affected Installations¶
All installations using the global TBE_MODULES_EXT
array or
calling ExtensionManagementUtility::insertModuleFunction()
in
custom extension code.
All installations using one of the removed page TSconfig options or one of the removed hooks.
Migration¶
Register your "third-level" module in our extension's
Configuration/Backend/Modules.php
file.
Previous configuration in ext_tables.php
:
ExtensionManagementUtility::insertModuleFunction(
'web_info',
MyAdditonalInfoModuleController::class,
'',
'LLL:EXT:extkey/Resources/Private/Language/locallang.xlf:mod_title'
);
Will now be registered in Configuration/Backend/Modules.php
:
'web_info_additional' => [
'parent' => 'web_info',
'access' => 'user',
'path' => '/module/web/info/additional',
'iconIdentifier' => 'module-my-icon-identifier',
'labels' => [
'title' => 'LLL:EXT:extkey/Resources/Private/Language/locallang.xlf:mod_title',
],
'routes' => [
'_default' => [
'target' => MyAdditonalInfoModuleController::class . '::handleRequest',
],
],
],
To hide a "third-level" module in the doc header menu, use the user TSconfig
options.hideModules
option:
# before
mod.web_info.menu.function.TYPO3\CMS\Info\Controller\TranslationStatusController = 0
# after
options.hideModules := addToList(web_info_translations)
Note
While the previously used TSconfig options mod.*.menu.function
are bound
to a page is the new options.hideModules
option based on user and user
group level. This allows greater influence and furthermore allows to hide
any module, even if the module is not connected to a page.
Additionally, use the module access logic to restrict access to those modules.
Remove any registration of the mentioned hooks. There is no direct migration, since the use cases for those hooks do no longer exist.