‪TYPO3CMS  11.5
NewContentElementController.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 
20 use Psr\Http\Message\ResponseInterface;
21 use Psr\Http\Message\ServerRequestInterface;
25 use TYPO3\CMS\Backend\Utility\BackendUtility;
32 use TYPO3\CMS\Core\Page\PageRenderer;
39 
45 {
51  protected ‪$id;
52 
58  protected ‪$sys_language = 0;
59 
65  protected ‪$R_URI = '';
66 
72  protected ‪$colPos;
73 
77  protected ‪$uid_pid;
78 
82  protected ‪$pageInfo;
83 
87  protected ‪$view;
88 
90  protected PageRenderer ‪$pageRenderer;
91  protected ‪UriBuilder ‪$uriBuilder;
93 
94  public function ‪__construct(
96  PageRenderer ‪$pageRenderer,
99  ) {
100  $this->iconFactory = ‪$iconFactory;
101  $this->pageRenderer = ‪$pageRenderer;
102  $this->uriBuilder = ‪$uriBuilder;
103  $this->moduleTemplateFactory = ‪$moduleTemplateFactory;
104  }
105 
112  public function ‪handleRequest(ServerRequestInterface $request): ResponseInterface
113  {
114  $parsedBody = $request->getParsedBody();
115  $queryParams = $request->getQueryParams();
116 
117  $action = (string)($parsedBody['action'] ?? $queryParams['action'] ?? 'wizard');
118  if (!in_array($action, ['wizard', 'positionMap'], true)) {
119  return new ‪HtmlResponse('Action not allowed', 400);
120  }
121 
122  // Setting internal vars:
123  $this->id = (int)($parsedBody['id'] ?? $queryParams['id'] ?? 0);
124  $this->sys_language = (int)($parsedBody['sys_language_uid'] ?? $queryParams['sys_language_uid'] ?? 0);
125  $this->R_URI = GeneralUtility::sanitizeLocalUrl($parsedBody['returnUrl'] ?? $queryParams['returnUrl'] ?? '');
126  ‪$colPos = $parsedBody['colPos'] ?? $queryParams['colPos'] ?? null;
127  $this->colPos = ‪$colPos === null ? null : (int)‪$colPos;
128  $this->uid_pid = (int)($parsedBody['uid_pid'] ?? $queryParams['uid_pid'] ?? 0);
129 
130  // Getting the current page and receiving access information
131  $this->pageInfo = BackendUtility::readPageAccess($this->id, $this->‪getBackendUser()->getPagePermsClause(‪Permission::PAGE_SHOW)) ?: [];
132 
133  // Initializing the view by forwarding the requested action as template name
134  $this->view = $this->‪getFluidTemplateObject(ucfirst($action));
135 
136  // Call action and return the response
137  return $this->{$action . 'Action'}($request);
138  }
139 
143  public function ‪wizardAction(ServerRequestInterface $request): ResponseInterface
144  {
145  $this->‪prepareWizardContent($request);
146  return new ‪HtmlResponse($this->view->render());
147  }
148 
152  public function ‪positionMapAction(ServerRequestInterface $request): ResponseInterface
153  {
154  $this->‪preparePositionMap($request);
155  return new ‪HtmlResponse($this->view->render());
156  }
157 
163  protected function ‪prepareWizardContent(ServerRequestInterface $request): void
164  {
165  $hasAccess = $this->id && $this->pageInfo !== [];
166  $this->view->assign('hasAccess', $hasAccess);
167  if (!$hasAccess) {
168  return;
169  }
170  // Whether position selection must be performed (no colPos was yet defined)
171  $positionSelection = !isset($this->colPos);
172  $this->view->assign('positionSelection', $positionSelection);
173 
174  // Get processed wizard items from configuration
175  $wizardItems = $this->‪getWizards();
176 
177  // Call hooks for manipulating the wizard items
178  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms']['db_new_content_el']['wizardItemsHook'] ?? [] as $className) {
179  $hookObject = GeneralUtility::makeInstance($className);
180  if (!$hookObject instanceof NewContentElementWizardHookInterface) {
181  throw new \UnexpectedValueException(
182  $className . ' must implement interface ' . NewContentElementWizardHookInterface::class,
183  1227834741
184  );
185  }
186  $hookObject->manipulateWizardItems($wizardItems, $this);
187  }
188 
189  $key = 0;
190  $menuItems = [];
191  // Traverse items for the wizard.
192  // An item is either a header or an item rendered with title/description and icon:
193  foreach ($wizardItems as $wizardKey => $wInfo) {
194  if (isset($wInfo['header'])) {
195  $menuItems[] = [
196  'label' => $wInfo['header'] ?: '-',
197  'content' => '',
198  ];
199  $key = count($menuItems) - 1;
200  } else {
201  // Initialize the view variables for the item
202  $viewVariables = [
203  'wizardInformation' => $wInfo,
204  'wizardKey' => $wizardKey,
205  'icon' => $this->iconFactory->getIcon(($wInfo['iconIdentifier'] ?? ''), ‪Icon::SIZE_DEFAULT, ($wInfo['iconOverlay'] ?? ''))->render(),
206  ];
207 
208  // Check wizardItem for defVals
209  $itemParams = [];
210  parse_str($wInfo['params'] ?? '', $itemParams);
211  $defVals = $itemParams['defVals']['tt_content'] ?? [];
212 
213  // In case no position has to be selected, we can just add the target
214  if (!$positionSelection) {
215  // Go to DataHandler directly instead of FormEngine
216  if (($wInfo['saveAndClose'] ?? false)) {
217  $viewVariables['target'] = (string)$this->uriBuilder->buildUriFromRoute('tce_db', [
218  'data' => [
219  'tt_content' => [
220  ‪StringUtility::getUniqueId('NEW') => array_replace($defVals, [
221  'colPos' => $this->colPos,
222  'pid' => $this->uid_pid,
223  'sys_language_uid' => $this->sys_language,
224  ]),
225  ],
226  ],
227  'redirect' => ‪$this->R_URI,
228  ]);
229  } else {
230  $viewVariables['target'] = (string)$this->uriBuilder->buildUriFromRoute('record_edit', [
231  'edit' => [
232  'tt_content' => [
233  $this->uid_pid => 'new',
234  ],
235  ],
236  'returnUrl' => $this->R_URI,
237  'defVals' => [
238  'tt_content' => array_replace($defVals, [
239  'colPos' => $this->colPos,
240  'sys_language_uid' => $this->sys_language,
241  ]),
242  ],
243  ]);
244  }
245  } else {
246  $viewVariables['positionMapArguments'] = GeneralUtility::jsonEncodeForHtmlAttribute([
247  'url' => (string)$this->uriBuilder->buildUriFromRoute('new_content_element_wizard', [
248  'action' => 'positionMap',
249  'id' => $this->id,
250  'sys_language_uid' => $this->sys_language,
251  'returnUrl' => $this->R_URI,
252  ]),
253  'defVals' => $defVals,
254  'saveAndClose' => (bool)($wInfo['saveAndClose'] ?? false),
255  ], true);
256  }
257 
258  $menuItems[$key]['content'] .= $this->‪getFluidTemplateObject('MenuItem')->‪assignMultiple($viewVariables)->render();
259  }
260  }
261 
262  $this->view->assign('renderedTabs', $this->moduleTemplateFactory->create($request)->getDynamicTabMenu(
263  $menuItems,
264  'new-content-element-wizard'
265  ));
266  }
267 
271  protected function ‪preparePositionMap(ServerRequestInterface $request): void
272  {
273  // Init position map object
274  $posMap = GeneralUtility::makeInstance(ContentCreationPagePositionMap::class);
275  $posMap->cur_sys_language = ‪$this->sys_language;
276  $posMap->defVals = (array)($request->getParsedBody()['defVals'] ?? []);
277  $posMap->saveAndClose = (bool)($request->getParsedBody()['saveAndClose'] ?? false);
278  $posMap->R_URI = ‪$this->R_URI;
279  $this->view->assign('posMap', $posMap->printContentElementColumns($this->id));
280  }
281 
288  protected function ‪getWizards(): array
289  {
290  $wizardItems = [];
291  $wizards = BackendUtility::getPagesTSconfig($this->id)['mod.']['wizards.']['newContentElement.']['wizardItems.'] ?? [];
292  $appendWizards = $this->‪getAppendWizards($wizards['elements.'] ?? []);
293  if (is_array($wizards)) {
294  foreach ($wizards as $groupKey => $wizardGroup) {
295  $this->‪prepareDependencyOrdering($wizards[$groupKey], 'before');
296  $this->‪prepareDependencyOrdering($wizards[$groupKey], 'after');
297  }
298  $wizards = GeneralUtility::makeInstance(DependencyOrderingService::class)->orderByDependencies($wizards);
299 
300  foreach ($wizards as $groupKey => $wizardGroup) {
301  $groupKey = rtrim($groupKey, '.');
302  $showItems = ‪GeneralUtility::trimExplode(',', $wizardGroup['show'] ?? '', true);
303  $showAll = in_array('*', $showItems, true);
304  $groupItems = [];
305  $appendWizardElements = $appendWizards[$groupKey . '.']['elements.'] ?? null;
306  if (is_array($appendWizardElements)) {
307  $wizardElements = array_merge((array)($wizardGroup['elements.'] ?? []), $appendWizardElements);
308  } else {
309  $wizardElements = $wizardGroup['elements.'] ?? [];
310  }
311  if (is_array($wizardElements)) {
312  foreach ($wizardElements as $itemKey => $itemConf) {
313  $itemKey = rtrim($itemKey, '.');
314  if ($showAll || in_array($itemKey, $showItems)) {
315  $tmpItem = $this->‪getWizardItem($itemConf);
316  if ($tmpItem) {
317  $groupItems[$groupKey . '_' . $itemKey] = $tmpItem;
318  }
319  }
320  }
321  }
322  if (!empty($groupItems)) {
323  $wizardItems[$groupKey] = $this->‪getWizardGroupHeader($wizardGroup);
324  $wizardItems = array_merge($wizardItems, $groupItems);
325  }
326  }
327  }
328  // Remove elements where preset values are not allowed:
329  $this->‪removeInvalidWizardItems($wizardItems);
330  return $wizardItems;
331  }
332 
337  protected function ‪getAppendWizards(array $wizardElements): array
338  {
339  // @deprecated will be removed in TYPO3 v12.0.
340  $classes = ‪$GLOBALS['TBE_MODULES_EXT']['xMOD_db_new_content_el']['addElClasses'] ?? [];
341  if (is_array($classes)) {
342  if (!empty($classes)) {
343  trigger_error('The hook $TBE_MODULES_EXT[xMOD_db_new_content_el][addElClasses] will be removed in TYPO3 v12.0. Use $GLOBALS[TYPO3_CONF_VARS][SC_OPTIONS][cms][db_new_content_el][wizardItemsHook] instead.', E_USER_DEPRECATED);
344  }
345  foreach ($classes as $class => $path) {
346  if (!class_exists($class) && file_exists($path)) {
347  require_once $path;
348  }
349  $modObj = GeneralUtility::makeInstance($class);
350  if (method_exists($modObj, 'proc')) {
351  $wizardElements = $modObj->proc($wizardElements);
352  }
353  }
354  }
355  $returnElements = [];
356  foreach ($wizardElements as $key => $wizardItem) {
357  preg_match('/^[a-zA-Z0-9]+_/', $key, $group);
358  $wizardGroup = $group[0] ? substr($group[0], 0, -1) . '.' : $key;
359  $returnElements[$wizardGroup]['elements.'][substr($key, strlen($wizardGroup)) . '.'] = $wizardItem;
360  }
361  return $returnElements;
362  }
363 
368  protected function ‪getWizardItem(array $itemConf): array
369  {
370  $itemConf['title'] = trim($this->‪getLanguageService()->sL($itemConf['title'] ?? ''));
371  $itemConf['description'] = trim($this->‪getLanguageService()->sL($itemConf['description'] ?? ''));
372  $itemConf['saveAndClose'] = (bool)($itemConf['saveAndClose'] ?? false);
373  $itemConf['tt_content_defValues'] = $itemConf['tt_content_defValues.'] ?? [];
374  unset($itemConf['tt_content_defValues.']);
375  return $itemConf;
376  }
377 
382  protected function ‪getWizardGroupHeader(array $wizardGroup): array
383  {
384  return [
385  'header' => $this->‪getLanguageService()->‪sL($wizardGroup['header'] ?? ''),
386  ];
387  }
388 
397  protected function ‪removeInvalidWizardItems(array &$wizardItems): void
398  {
399  $removeItems = [];
400  $keepItems = [];
401  // Get TCEFORM from TSconfig of current page
402  $TCEFORM_TSconfig = BackendUtility::getTCEFORM_TSconfig('tt_content', ['pid' => $this->id]);
403  $headersUsed = [];
404  // Traverse wizard items:
405  foreach ($wizardItems as $key => $cfg) {
406  // Exploding parameter string, if any (old style)
407  if ($wizardItems[$key]['params'] ?? false) {
408  // Explode GET vars recursively
409  $tempGetVars = [];
410  parse_str($wizardItems[$key]['params'], $tempGetVars);
411  // If tt_content values are set, merge them into the tt_content_defValues array,
412  // unset them from $tempGetVars and re-implode $tempGetVars into the param string
413  // (in case remaining parameters are around).
414  if (is_array($tempGetVars['defVals']['tt_content'])) {
415  $wizardItems[$key]['tt_content_defValues'] = array_merge(
416  is_array($wizardItems[$key]['tt_content_defValues']) ? $wizardItems[$key]['tt_content_defValues'] : [],
417  $tempGetVars['defVals']['tt_content']
418  );
419  unset($tempGetVars['defVals']['tt_content']);
420  $wizardItems[$key]['params'] = ‪HttpUtility::buildQueryString($tempGetVars, '&');
421  }
422  }
423  // If tt_content_defValues are defined...:
424  if (is_array($wizardItems[$key]['tt_content_defValues'] ?? false)) {
425  $backendUser = $this->‪getBackendUser();
426  // Traverse field values:
427  $wizardItems[$key]['params'] ??= '';
428  foreach ($wizardItems[$key]['tt_content_defValues'] as $fN => $fV) {
429  if (is_array(‪$GLOBALS['TCA']['tt_content']['columns'][$fN])) {
430  // Get information about if the field value is OK:
431  $config = &‪$GLOBALS['TCA']['tt_content']['columns'][$fN]['config'];
432  $authModeDeny = $config['type'] === 'select' && ($config['authMode'] ?? false)
433  && !$backendUser->checkAuthMode('tt_content', $fN, $fV, $config['authMode']);
434  // explode TSconfig keys only as needed
435  if (!isset($removeItems[$fN]) && isset($TCEFORM_TSconfig[$fN]['removeItems']) && $TCEFORM_TSconfig[$fN]['removeItems'] !== '') {
436  $removeItems[$fN] = array_flip(‪GeneralUtility::trimExplode(
437  ',',
438  $TCEFORM_TSconfig[$fN]['removeItems'],
439  true
440  ));
441  }
442  if (!isset($keepItems[$fN]) && isset($TCEFORM_TSconfig[$fN]['keepItems']) && $TCEFORM_TSconfig[$fN]['keepItems'] !== '') {
443  $keepItems[$fN] = array_flip(‪GeneralUtility::trimExplode(
444  ',',
445  $TCEFORM_TSconfig[$fN]['keepItems'],
446  true
447  ));
448  }
449  $isNotInKeepItems = !empty($keepItems[$fN]) && !isset($keepItems[$fN][$fV]);
450  if ($authModeDeny || ($fN === 'CType' && (isset($removeItems[$fN][$fV]) || $isNotInKeepItems))) {
451  // Remove element all together:
452  unset($wizardItems[$key]);
453  break;
454  }
455  // Add the parameter:
456  $wizardItems[$key]['params'] .= '&defVals[tt_content][' . $fN . ']=' . rawurlencode($this->‪getLanguageService()->sL($fV));
457  $tmp = explode('_', $key);
458  $headersUsed[$tmp[0]] = $tmp[0];
459  }
460  }
461  }
462  }
463  // remove headers without elements
464  foreach ($wizardItems as $key => $cfg) {
465  $tmp = explode('_', $key);
466  if (($tmp[0] ?? null) && !($tmp[1] ?? null) && !in_array($tmp[0], $headersUsed)) {
467  unset($wizardItems[$key]);
468  }
469  }
470  }
471 
478  protected function ‪prepareDependencyOrdering(&$wizardGroup, $key)
479  {
480  if (isset($wizardGroup[$key])) {
481  $wizardGroup[$key] = ‪GeneralUtility::trimExplode(',', $wizardGroup[$key]);
482  $wizardGroup[$key] = array_map(static function ($s) {
483  return $s . '.';
484  }, $wizardGroup[$key]);
485  }
486  }
487 
491  protected function ‪getLanguageService(): LanguageService
492  {
493  return ‪$GLOBALS['LANG'];
494  }
495 
499  protected function ‪getBackendUser(): ‪BackendUserAuthentication
500  {
501  return ‪$GLOBALS['BE_USER'];
502  }
503 
508  protected function ‪getFluidTemplateObject(string $templateName): ‪StandaloneView
509  {
510  ‪$view = GeneralUtility::makeInstance(StandaloneView::class);
511  ‪$view->‪setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName('EXT:backend/Resources/Private/Templates/NewContentElement/' . $templateName . '.html'));
513  return ‪$view;
514  }
515 
521  public function ‪getPageInfo(): array
522  {
523  return ‪$this->pageInfo;
524  }
525 
531  public function ‪getColPos(): ?int
532  {
533  return ‪$this->colPos;
534  }
535 
541  public function ‪getSysLanguage(): int
542  {
543  return ‪$this->sys_language;
544  }
545 
551  public function ‪getUidPid(): int
552  {
553  return ‪$this->uid_pid;
554  }
555 }
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static list< string > trimExplode($delim, $string, $removeEmptyValues=false, $limit=0)
Definition: GeneralUtility.php:999
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\handleRequest
‪ResponseInterface handleRequest(ServerRequestInterface $request)
Definition: NewContentElementController.php:105
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$uriBuilder
‪UriBuilder $uriBuilder
Definition: NewContentElementController.php:84
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getWizardItem
‪array getWizardItem(array $itemConf)
Definition: NewContentElementController.php:361
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_DEFAULT
‪const SIZE_DEFAULT
Definition: Icon.php:35
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$view
‪StandaloneView $view
Definition: NewContentElementController.php:80
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Backend\Template\ModuleTemplateFactory
Definition: ModuleTemplateFactory.php:29
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getFluidTemplateObject
‪StandaloneView getFluidTemplateObject(string $templateName)
Definition: NewContentElementController.php:501
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$uid_pid
‪int $uid_pid
Definition: NewContentElementController.php:72
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getAppendWizards
‪array getAppendWizards(array $wizardElements)
Definition: NewContentElementController.php:330
‪TYPO3\CMS\Backend\Controller\ContentElement
Definition: ElementHistoryController.php:16
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController
Definition: NewContentElementController.php:45
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\positionMapAction
‪positionMapAction(ServerRequestInterface $request)
Definition: NewContentElementController.php:145
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$pageRenderer
‪PageRenderer $pageRenderer
Definition: NewContentElementController.php:83
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getWizards
‪array getWizards()
Definition: NewContentElementController.php:281
‪TYPO3\CMS\Core\Localization\LanguageService\sL
‪string sL($input)
Definition: LanguageService.php:161
‪TYPO3\CMS\Backend\Tree\View\ContentCreationPagePositionMap
Definition: ContentCreationPagePositionMap.php:33
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:26
‪TYPO3\CMS\Fluid\View\StandaloneView\getRequest
‪TYPO3 CMS Extbase Mvc Request getRequest()
Definition: StandaloneView.php:93
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getUidPid
‪int getUidPid()
Definition: NewContentElementController.php:544
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$sys_language
‪int $sys_language
Definition: NewContentElementController.php:56
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\wizardAction
‪wizardAction(ServerRequestInterface $request)
Definition: NewContentElementController.php:136
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\__construct
‪__construct(IconFactory $iconFactory, PageRenderer $pageRenderer, UriBuilder $uriBuilder, ModuleTemplateFactory $moduleTemplateFactory)
Definition: NewContentElementController.php:87
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$R_URI
‪string $R_URI
Definition: NewContentElementController.php:62
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getColPos
‪int null getColPos()
Definition: NewContentElementController.php:524
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:40
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$pageInfo
‪array $pageInfo
Definition: NewContentElementController.php:76
‪TYPO3\CMS\Core\Utility\HttpUtility\buildQueryString
‪static string buildQueryString(array $parameters, string $prependCharacter='', bool $skipEmptyParameters=false)
Definition: HttpUtility.php:171
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\prepareWizardContent
‪prepareWizardContent(ServerRequestInterface $request)
Definition: NewContentElementController.php:156
‪TYPO3\CMS\Extbase\Mvc\Request\setControllerExtensionName
‪setControllerExtensionName($controllerExtensionName)
Definition: Request.php:305
‪TYPO3\CMS\Fluid\View\AbstractTemplateView\setTemplatePathAndFilename
‪setTemplatePathAndFilename($templatePathAndFilename)
Definition: AbstractTemplateView.php:113
‪TYPO3\CMS\Core\Service\DependencyOrderingService
Definition: DependencyOrderingService.php:32
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface\assignMultiple
‪self assignMultiple(array $values)
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_SHOW
‪const PAGE_SHOW
Definition: Permission.php:35
‪TYPO3\CMS\Backend\Wizard\NewContentElementWizardHookInterface
Definition: NewContentElementWizardHookInterface.php:23
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\removeInvalidWizardItems
‪removeInvalidWizardItems(array &$wizardItems)
Definition: NewContentElementController.php:390
‪TYPO3\CMS\Core\Utility\StringUtility\getUniqueId
‪static string getUniqueId($prefix='')
Definition: StringUtility.php:128
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$moduleTemplateFactory
‪ModuleTemplateFactory $moduleTemplateFactory
Definition: NewContentElementController.php:85
‪TYPO3\CMS\Fluid\View\StandaloneView
Definition: StandaloneView.php:31
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$colPos
‪int null $colPos
Definition: NewContentElementController.php:68
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\prepareDependencyOrdering
‪prepareDependencyOrdering(&$wizardGroup, $key)
Definition: NewContentElementController.php:471
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getWizardGroupHeader
‪array getWizardGroupHeader(array $wizardGroup)
Definition: NewContentElementController.php:375
‪TYPO3\CMS\Core\Utility\HttpUtility
Definition: HttpUtility.php:22
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: NewContentElementController.php:492
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$id
‪int $id
Definition: NewContentElementController.php:50
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getLanguageService
‪LanguageService getLanguageService()
Definition: NewContentElementController.php:484
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\preparePositionMap
‪preparePositionMap(ServerRequestInterface $request)
Definition: NewContentElementController.php:264
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getSysLanguage
‪int getSysLanguage()
Definition: NewContentElementController.php:534
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:22
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getPageInfo
‪array getPageInfo()
Definition: NewContentElementController.php:514
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$iconFactory
‪IconFactory $iconFactory
Definition: NewContentElementController.php:82
‪TYPO3\CMS\Core\Http\HtmlResponse
Definition: HtmlResponse.php:26