*/ class BeforeTemplateRenderedListener implements IEventListener { public function __construct( private IInitialState $initialState, private ContainerInterface $container, private ThemeInjectionService $themeInjectionService, private IUserSession $userSession, private IConfig $config, ) { } public function handle(Event $event): void { $this->initialState->provideLazyInitialState( 'data', fn () => $this->container->get(JSDataService::class), ); /** @var BeforeTemplateRenderedEvent|BeforeLoginTemplateRenderedEvent $event */ if ($event->getResponse()->getRenderAs() === TemplateResponse::RENDER_AS_USER) { $this->initialState->provideLazyInitialState('shortcutsDisabled', function () { if ($this->userSession->getUser()) { $uid = $this->userSession->getUser()->getUID(); return $this->config->getUserValue($uid, Application::APP_ID, 'shortcuts_disabled', 'no') === 'yes'; } return false; }); } $this->themeInjectionService->injectHeaders(); // Making sure to inject just after core Util::addScript('theming', 'theming', 'core'); } }