TYPO3CMS  8
 All Classes Namespaces Files Functions Variables Pages
ContainerViewHelper.php
Go to the documentation of this file.
1 <?php
2 namespace TYPO3\CMS\Fluid\ViewHelpers\Be;
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
20 
45 {
49  protected $escapeOutput = false;
50 
56  public function initializeArguments()
57  {
58  parent::initializeArguments();
59  $this->registerArgument('pageTitle', 'string', 'Title tag of the module. Not required by default, as BE modules are shown in a frame', false, '');
60  $this->registerArgument('enableClickMenu', 'bool', 'If TRUE, loads clickmenu.js required by BE context menus. Defaults to TRUE', false, true);
61  $this->registerArgument('loadExtJs', 'bool', 'Specifies whether to load ExtJS library. Defaults to FALSE', false, false);
62  $this->registerArgument('loadExtJsTheme', 'bool', 'Whether to load ExtJS "grey" theme. Defaults to FALSE', false, true);
63  $this->registerArgument('enableExtJsDebug', 'bool', 'If TRUE, debug version of ExtJS is loaded. Use this for development only', false, false);
64  $this->registerArgument('loadJQuery', 'bool', 'Whether to load jQuery library. Defaults to FALSE', false, false);
65  $this->registerArgument('includeCssFiles', 'array', 'List of custom CSS file to be loaded');
66  $this->registerArgument('includeJsFiles', 'array', 'List of custom JavaScript file to be loaded');
67  $this->registerArgument('addJsInlineLabels', 'array', 'Custom labels to add to JavaScript inline labels');
68  $this->registerArgument('includeRequireJsModules', 'array', 'List of RequireJS modules to be loaded');
69  $this->registerArgument('jQueryNamespace', 'string', 'Store the jQuery object in a specific namespace');
70  }
71 
79  public function render()
80  {
81  $pageTitle = $this->arguments['pageTitle'];
82  $enableClickMenu = $this->arguments['enableClickMenu'];
83  $loadExtJs = $this->arguments['loadExtJs'];
84  $loadExtJsTheme = $this->arguments['loadExtJsTheme'];
85  $enableExtJsDebug = $this->arguments['enableExtJsDebug'];
86  $loadJQuery = $this->arguments['loadJQuery'];
87  $includeCssFiles = $this->arguments['includeCssFiles'];
88  $includeJsFiles = $this->arguments['includeJsFiles'];
89  $addJsInlineLabels = $this->arguments['addJsInlineLabels'];
90  $includeRequireJsModules = $this->arguments['includeRequireJsModules'];
91  $jQueryNamespace = $this->arguments['jQueryNamespace'];
92 
93  $pageRenderer = $this->getPageRenderer();
94  $doc = $this->getDocInstance();
95  $doc->JScode .= GeneralUtility::wrapJS($doc->redirectUrls());
96 
97  // Load various standard libraries
98  if ($enableClickMenu) {
99  $pageRenderer->loadJquery();
100  $pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ClickMenu');
101  }
102  if ($loadExtJs) {
103  $pageRenderer->loadExtJS(true, $loadExtJsTheme);
104  if ($enableExtJsDebug) {
105  $pageRenderer->enableExtJsDebug();
106  }
107  }
108  if ($loadJQuery) {
109  $jQueryNamespace = $jQueryNamespace ?: PageRenderer::JQUERY_NAMESPACE_DEFAULT;
110  $pageRenderer->loadJquery(null, null, $jQueryNamespace);
111  }
112  // Include custom CSS and JS files
113  if (is_array($includeCssFiles) && count($includeCssFiles) > 0) {
114  foreach ($includeCssFiles as $addCssFile) {
115  $pageRenderer->addCssFile($addCssFile);
116  }
117  }
118  if (is_array($includeJsFiles) && count($includeJsFiles) > 0) {
119  foreach ($includeJsFiles as $addJsFile) {
120  $pageRenderer->addJsFile($addJsFile);
121  }
122  }
123  if (is_array($includeRequireJsModules) && count($includeRequireJsModules) > 0) {
124  foreach ($includeRequireJsModules as $addRequireJsFile) {
125  $pageRenderer->loadRequireJsModule($addRequireJsFile);
126  }
127  }
128  // Add inline language labels
129  if (is_array($addJsInlineLabels) && count($addJsInlineLabels) > 0) {
130  $extensionKey = $this->controllerContext->getRequest()->getControllerExtensionKey();
131  foreach ($addJsInlineLabels as $key) {
132  $label = LocalizationUtility::translate($key, $extensionKey);
133  $pageRenderer->addInlineLanguageLabel($key, $label);
134  }
135  }
136  // Render the content and return it
137  $output = $this->renderChildren();
138  $output = $doc->startPage($pageTitle) . $output;
139  $output .= $doc->endPage();
140  return $output;
141  }
142 }
static translate($key, $extensionName, $arguments=null)