Feature: #97174 - PSR-14 event for modifying info module content

See forge#97174

Description

A new PSR-14 event \TYPO3\CMS\Info\Controller\Event\ModifyInfoModuleContentEvent has been introduced which serves as a more powerful and flexible alternative for the now removed $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/web_info/class.tx_cms_webinfo.php']['drawFooterHook'] hook.

While the removed hook effectively only allowed to add content to the footer of the Pagetree Overview submodule in Web > Info, the new PSR-14 event now allows to modify the content above and below the actual info module content. This means that the content, added in the event, will be displayed in each submodule of Web > Info.

The PSR-14 event also provides the getCurrentModule() method, which returns the currently requested (sub)module. It's therefore possible to limit the added content to a subset of the available Web > Info submodules.

In addition to the getRequest() and the getModuleTemplate() methods, the event also has the usual getters and setters for the header and footer content.

Access control

By default, the added content is always displayed. The PSR-14 event however provides the hasAccess() method, returning whether the access checks in the module were passed by the user.

This way, event listeners can decide on their own whether their content should always be shown, or only if a user also has access to the main module content.

Example

Registration of the event in your extension's Services.yaml:

MyVendor\MyPackage\Backend\MyEventListener:
  tags:
    - name: event.listener
      identifier: 'my-package/backend/content-to-info-module'
Copied!

The corresponding event listener class:

use TYPO3\CMS\Info\Controller\Event\ModifyInfoModuleContentEvent;

class MyEventListener {

    public function __invoke(ModifyInfoModuleContentEvent $event): void
    {
        // Add header content for the "page TSconfig" submodule if user has access to module content
        if ($event->hasAccess() && $event->getCurrentModule()->getIdentifier() === 'web_info_pagets') {
            $event->addHeaderContent('<h3>Additional header content</h3>');
        }
    }
}
Copied!

Impact

It's now possible to modify the header and footer content of the Web > Info module, using the new PSR-14 event.