Feature: #97135 - New Registration for module functions

See forge#97135

Description

Previously, module functions could be added to modules such as Web > Info or Web > Template via the now removed global TBE_MODULES_EXT array.

Since those functions are actually additional - "third-level" - modules, they are now registered as such via the new Module Registration API, in an extensions' Configuration/Backend/Modules.php file.

Next to the additional configuration options, e.g. for defining the position, this also allows administrators to define access permissions via the module access logic for those modules individually.

Additionally, the corresponding backend controller classes are now able to make use of the new ModuleData API.

Example

Registration of an additional - "third-level" - module for the Web > Template in the Configuration/Backend/Modules.php file of an extension:

'web_ts_customts' => [
    'parent' => 'web_ts',
    'access' => 'user',
    'path' => '/module/web/typoscript/custom-ts',
    'iconIdentifier' => 'module-custom-ts',
    'labels' => [
        'title' => 'LLL:EXT:extkey/Resources/Private/Language/locallang.xlf:mod_title',
    ],
    'routes' => [
        '_default' => [
            'target' => CustomTsController::class . '::handleRequest',
        ],
    ],
    'moduleData' => [
        'someOption' => false,
    ],
],

Impact

Additional - "third-level" - modules are now registered in the extensions' Configuration/Backend/Modules.php file, the same way as main and sub modules. This therefore allows those modules to benefit from the same functionality.