‪TYPO3CMS  ‪main
PageRendererViewHelper.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
26 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
27 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
28 use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
29 
50 final class ‪PageRendererViewHelper extends AbstractViewHelper
51 {
52  use CompileWithRenderStatic;
53 
54  public function ‪initializeArguments(): void
55  {
56  $this->registerArgument('pageTitle', 'string', 'title tag of the module. Not required by default, as BE modules are shown in a frame', false, '');
57  $this->registerArgument('includeCssFiles', 'array', 'List of custom CSS file to be loaded');
58  $this->registerArgument('includeJsFiles', 'array', 'List of custom JavaScript file to be loaded');
59  $this->registerArgument('addJsInlineLabels', 'array', 'Custom labels to add to JavaScript inline labels');
60  $this->registerArgument('includeJavaScriptModules', 'array', 'List of JavaScript modules to be loaded');
61  $this->registerArgument('addInlineSettings', 'array', 'Adds Javascript Inline Setting');
62  }
63 
64  public static function ‪renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext): void
65  {
66  $pageRenderer = ‪self::getPageRenderer();
67  $pageTitle = $arguments['pageTitle'];
68  $includeCssFiles = $arguments['includeCssFiles'];
69  $includeJsFiles = $arguments['includeJsFiles'];
70  $addJsInlineLabels = $arguments['addJsInlineLabels'];
71  $includeJavaScriptModules = $arguments['includeJavaScriptModules'];
72  $addInlineSettings = $arguments['addInlineSettings'];
73 
74  if ($pageTitle) {
75  $pageRenderer->setTitle($pageTitle);
76  }
77 
78  // Include custom CSS and JS files
79  if (is_array($includeCssFiles)) {
80  foreach ($includeCssFiles as $addCssFile) {
81  $pageRenderer->addCssFile($addCssFile);
82  }
83  }
84  if (is_array($includeJsFiles)) {
85  foreach ($includeJsFiles as $addJsFile) {
86  $pageRenderer->addJsFile($addJsFile);
87  }
88  }
89  if (is_array($includeJavaScriptModules)) {
90  foreach ($includeJavaScriptModules as $addJavaScriptModule) {
91  $pageRenderer->loadJavaScriptModule($addJavaScriptModule);
92  }
93  }
94 
95  if (is_array($addInlineSettings)) {
96  $pageRenderer->addInlineSettingArray(null, $addInlineSettings);
97  }
98 
99  // Add inline language labels
100  if (is_array($addJsInlineLabels) && count($addJsInlineLabels) > 0) {
102  $request = $renderingContext->getRequest();
103  if ($request instanceof ‪RequestInterface) {
104  // Extbase request resolves extension key and allows overriding labels using TypoScript configuration.
105  $extensionKey = $request->getControllerExtensionKey();
106  foreach ($addJsInlineLabels as $key) {
107  $label = ‪LocalizationUtility::translate($key, $extensionKey);
108  $pageRenderer->addInlineLanguageLabel($key, $label);
109  }
110  } else {
111  // No extbase request, labels should follow "LLL:EXT:some_ext/Resources/Private/someFile.xlf:key"
112  // syntax, and are not overridden by TypoScript extbase module / plugin configuration.
113  foreach ($addJsInlineLabels as &$labelKey) {
114  $labelKey = ‪self::getLanguageService()->sL($labelKey);
115  }
116  $pageRenderer->addInlineLanguageLabelArray($addJsInlineLabels);
117  }
118  }
119  }
120 
121  protected static function ‪getPageRenderer(): ‪PageRenderer
122  {
123  return GeneralUtility::makeInstance(PageRenderer::class);
124  }
125 
126  protected static function ‪getLanguageService(): ‪LanguageService
127  {
128  return ‪$GLOBALS['LANG'];
129  }
130 }
‪TYPO3\CMS\Extbase\Utility\LocalizationUtility
Definition: LocalizationUtility.php:35
‪TYPO3\CMS\Fluid\ViewHelpers\Be\PageRendererViewHelper\getLanguageService
‪static getLanguageService()
Definition: PageRendererViewHelper.php:125
‪TYPO3\CMS\Fluid\ViewHelpers\Be\PageRendererViewHelper
Definition: PageRendererViewHelper.php:51
‪TYPO3\CMS\Fluid\ViewHelpers\Be
Definition: AbstractBackendViewHelper.php:18
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:44
‪TYPO3\CMS\Extbase\Utility\LocalizationUtility\translate
‪static string null translate(string $key, ?string $extensionName=null, array $arguments=null, Locale|string $languageKey=null)
Definition: LocalizationUtility.php:47
‪TYPO3\CMS\Fluid\ViewHelpers\Be\PageRendererViewHelper\getPageRenderer
‪static getPageRenderer()
Definition: PageRendererViewHelper.php:120
‪TYPO3\CMS\Extbase\Mvc\RequestInterface
Definition: RequestInterface.php:24
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:46
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Fluid\Core\Rendering\RenderingContext
Definition: RenderingContext.php:35
‪TYPO3\CMS\Fluid\ViewHelpers\Be\PageRendererViewHelper\renderStatic
‪static renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
Definition: PageRendererViewHelper.php:63
‪TYPO3\CMS\Fluid\ViewHelpers\Be\PageRendererViewHelper\initializeArguments
‪initializeArguments()
Definition: PageRendererViewHelper.php:53