Feature: #91132 - Introduce User Settings JavaScript Modules Event¶
See forge#91132
Description¶
JavaScript events in custom User Settings Configuration options shall not be placed as inline JavaScript anymore, but utilize a dedicated JavaScript module to handle custom events (see Important: #91132 - Avoid JavaScript in User Settings Configuration options)
This new PSR-14 event is introduced:
\TYPO3\
CMS\ Setup Event\ Add Java Script Modules Event
These public methods are exposed:
public function add
Module (string $module Name): void public function get
Modules (): array
$module
refers to the JavaScript module to be loaded with RequireJS
(e.g. TYPO3/
).
Example¶
A listener using mentioned PSR-14 event could look like the following.
-
Register listener
typo3conf/
my- extension/ Configuration/ Services. yaml services: MyVendor\MyExtension\EventListener\CustomUserSettingsListener: tags: - name: event.listener identifier: 'myExtension/CustomUserSettingsListener' event: TYPO3\CMS\SetupEvent\AddJavaScriptModulesEvent
Copied! -
Implement Listener to load JavaScript module
TYPO3/
CMS/ My Extension/ Custom User Settings Module namespace MyVendor\MyExtension\EventListener; use TYPO3\CMS\SetupEvent\AddJavaScriptModulesEvent; class CustomUserSettingsListener { // name of JavaScript module to be loaded private const MODULE_NAME = 'TYPO3/CMS/MyExtension/CustomUserSettingsModule'; public function __invoke(AddJavaScriptModulesEvent $event): void { $javaScriptModuleName = 'TYPO3/CMS/MyExtension/CustomUserSettings'; if (in_array(self::MODULE_NAME, $event->getModules(), true)) { return; } $event->addModule(self::MODULE_NAME); } }
Copied!