Revert "[TASK] Avoid slow array functions in loops"
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Classes / View / BackendTemplateView.php
1 <?php
2 namespace TYPO3\CMS\Backend\View;
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
17 use TYPO3\CMS\Backend\Template\ModuleTemplate;
18 use TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext;
19 use TYPO3\CMS\Extbase\Mvc\View\ViewInterface;
20 use TYPO3\CMS\Fluid\View\TemplateView;
21
22 /**
23 * Decorates the main template view. Should be used as view if you want to use
24 * Fluid templates in a backend module in order to have a consistent backend.
25 */
26 class BackendTemplateView implements ViewInterface
27 {
28 /**
29 * @var ModuleTemplate
30 */
31 protected $moduleTemplate;
32
33 /**
34 * @var TemplateView
35 */
36 protected $templateView;
37
38 /**
39 * @param ModuleTemplate $moduleTemplate
40 */
41 public function injectModuleTemplate(ModuleTemplate $moduleTemplate)
42 {
43 $this->moduleTemplate = $moduleTemplate;
44 }
45
46 /**
47 * @param TemplateView $templateView
48 */
49 public function injectTemplateView(TemplateView $templateView)
50 {
51 $this->templateView = $templateView;
52 }
53
54 /**
55 * @return ModuleTemplate
56 */
57 public function getModuleTemplate()
58 {
59 return $this->moduleTemplate;
60 }
61
62 /**
63 * Loads the template source and render the template.
64 * If "layoutName" is set in a PostParseFacet callback, it will render the file with the given layout.
65 *
66 * Additionally amends the rendered template with a module template "frame"
67 *
68 * @param string $actionName If set, the view of the specified action will be rendered instead. Default is the action specified in the Request object
69 * @return string Rendered Template
70 */
71 public function render($actionName = null)
72 {
73 $actionViewContent = $this->templateView->render($actionName);
74 $this->moduleTemplate->setContent($actionViewContent);
75 return $this->moduleTemplate->renderContent();
76 }
77
78 /**
79 * Sets the current controller context
80 *
81 * @param \TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext $controllerContext Controller context which is available inside the view
82 */
83 public function setControllerContext(\TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext $controllerContext)
84 {
85 $this->templateView->setControllerContext($controllerContext);
86 }
87
88 /**
89 * Assign a value to the variable container.
90 *
91 * @param string $key The key of a view variable to set
92 * @param mixed $value The value of the view variable
93 * @return \TYPO3\CMS\Fluid\View\AbstractTemplateView the instance of this view to allow chaining
94 */
95 public function assign($key, $value)
96 {
97 $this->templateView->assign($key, $value);
98 return $this;
99 }
100
101 /**
102 * Assigns multiple values to the JSON output.
103 * However, only the key "value" is accepted.
104 *
105 * @param array $values Keys and values - only a value with key "value" is considered
106 * @return \TYPO3\CMS\Fluid\View\AbstractTemplateView the instance of this view to allow chaining
107 */
108 public function assignMultiple(array $values)
109 {
110 $this->templateView->assignMultiple($values);
111 return $this;
112 }
113
114 /**
115 * Checks whether a template can be resolved for the current request context.
116 *
117 * @param ControllerContext $controllerContext Controller context which is available inside the view
118 * @return bool
119 */
120 public function canRender(ControllerContext $controllerContext)
121 {
122 return $this->templateView->canRender($controllerContext);
123 }
124
125 /**
126 * Init view
127 */
128 public function initializeView()
129 {
130 $this->templateView->initializeView();
131 }
132
133 /**
134 * Set the root path(s) to the templates.
135 *
136 * @param array $templateRootPaths Root path(s) to the templates.
137 */
138 public function setTemplateRootPaths(array $templateRootPaths)
139 {
140 $this->templateView->setTemplateRootPaths($templateRootPaths);
141 }
142
143 /**
144 * Set the root path(s) to the partials.
145 *
146 * @param array $partialRootPaths Root paths to the partials.
147 */
148 public function setPartialRootPaths(array $partialRootPaths)
149 {
150 $this->templateView->setPartialRootPaths($partialRootPaths);
151 }
152
153 /**
154 * Set the root path(s) to the layouts.
155 *
156 * @param array $layoutRootPaths Root path to the layouts.
157 */
158 public function setLayoutRootPaths(array $layoutRootPaths)
159 {
160 $this->templateView->setLayoutRootPaths($layoutRootPaths);
161 }
162 }