‪TYPO3CMS  9.5
NewContentElementController.php
Go to the documentation of this file.
1 <?php
2 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 
18 use Psr\Http\Message\ResponseInterface;
19 use Psr\Http\Message\ServerRequestInterface;
37 
43 {
45 
49  protected ‪$deprecatedPublicProperties = [
50  'id' => 'Using $id of NewContentElementController from the outside is discouraged as this variable is used for internal storage.',
51  'sys_language' => 'Using $sys_language of NewContentElementController from the outside is discouraged as this variable is used for internal storage.',
52  'R_URI' => 'Using $R_URI of NewContentElementController from the outside is discouraged as this variable is used for internal storage.',
53  'colPos' => 'Using $colPos of NewContentElementController from the outside is discouraged as this variable is used for internal storage.',
54  'uid_pid' => 'Using $uid_pid of NewContentElementController from the outside is discouraged as this variable is used for internal storage.',
55  'modTSconfig' => 'Using $modTSconfig of NewContentElementController from the outside is discouraged as this variable is used for internal storage.',
56  'doc' => 'Using $doc of NewContentElementController from the outside is discouraged as this variable is used for internal storage.',
57  'content' => 'Using $content of NewContentElementController from the outside is discouraged as this variable is used for internal storage.',
58  'access' => 'Using $access of NewContentElementController from the outside is discouraged as this variable is used for internal storage.',
59  'config' => 'Using $config of NewContentElementController from the outside is discouraged as this variable is used for internal storage.',
60  ];
61 
67  protected ‪$id;
68 
74  protected ‪$sys_language = 0;
75 
81  protected ‪$R_URI = '';
82 
88  protected ‪$colPos;
89 
93  protected ‪$uid_pid;
94 
100  protected ‪$modTSconfig = [];
101 
107  protected ‪$doc;
108 
114  protected ‪$content;
115 
121  protected ‪$access;
122 
128  protected ‪$config;
129 
133  protected ‪$pageInfo;
134 
138  protected ‪$onClickEvent;
139 
143  protected ‪$MCONF;
144 
148  protected ‪$view;
149 
153  protected ‪$menuItemView;
154 
160  protected ‪$moduleTemplate;
161 
165  public function ‪__construct()
166  {
167  $this->moduleTemplate = GeneralUtility::makeInstance(ModuleTemplate::class);
168  ‪$GLOBALS['SOBE'] = $this;
169  $this->view = $this->‪getFluidTemplateObject();
170  $this->menuItemView = $this->‪getFluidTemplateObject('MenuItem.html');
171 
172  // @deprecated since TYPO3 v9, will be obsolete in TYPO3 v10.0 with removal of init()
173  $request = ‪$GLOBALS['TYPO3_REQUEST'];
174  // @deprecated since TYPO3 v9, will be moved out of __construct() in TYPO3 v10.0
175  $this->‪init($request);
176  }
177 
183  public function ‪init(ServerRequestInterface $request = null)
184  {
185  if ($request === null) {
186  // Method signature in TYPO3 v10.0: protected function init(ServerRequestInterface $request)
187  trigger_error('NewContentElementController->init() will be set to protected in TYPO3 v10.0. Do not call from other extension.', E_USER_DEPRECATED);
188  $request = ‪$GLOBALS['TYPO3_REQUEST'];
189  }
190 
191  $lang = $this->‪getLanguageService();
192  $lang->includeLLFile('EXT:core/Resources/Private/Language/locallang_misc.xlf');
193  $LOCAL_LANG_orig = ‪$GLOBALS['LOCAL_LANG'];
194  $lang->includeLLFile('EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf');
195  ‪ArrayUtility::mergeRecursiveWithOverrule($LOCAL_LANG_orig, ‪$GLOBALS['LOCAL_LANG']);
196  ‪$GLOBALS['LOCAL_LANG'] = $LOCAL_LANG_orig;
197 
198  $parsedBody = $request->getParsedBody();
199  $queryParams = $request->getQueryParams();
200 
201  // Setting internal vars:
202  $this->id = (int)($parsedBody['id'] ?? $queryParams['id'] ?? 0);
203  $this->sys_language = (int)($parsedBody['sys_language_uid'] ?? $queryParams['sys_language_uid'] ?? 0);
204  $this->R_URI = GeneralUtility::sanitizeLocalUrl($parsedBody['returnUrl'] ?? $queryParams['returnUrl'] ?? '');
205  ‪$colPos = $parsedBody['colPos'] ?? $queryParams['colPos'] ?? null;
206  $this->colPos = ‪$colPos === null ? null : (int)‪$colPos;
207  $this->uid_pid = (int)($parsedBody['uid_pid'] ?? $queryParams['uid_pid'] ?? 0);
208  $this->MCONF['name'] = 'xMOD_db_new_content_el';
209  $this->modTSconfig['properties'] = ‪BackendUtility::getPagesTSconfig($this->id)['mod.']['wizards.']['newContentElement.'] ?? [];
211  $this->config = ‪$config['mod.']['wizards.']['newContentElement.'];
212  // Starting the document template object:
213  // We keep this here in case somebody relies on it in a hook or alike
214  $this->doc = GeneralUtility::makeInstance(DocumentTemplate::class);
215  // Setting up the context sensitive menu:
216  $this->moduleTemplate->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/ContextMenu');
217  // Getting the current page and receiving access information (used in main())
219  $this->pageInfo = ‪BackendUtility::readPageAccess($this->id, $perms_clause);
220  $this->access = is_array($this->pageInfo);
221  }
222 
230  public function ‪mainAction(ServerRequestInterface $request): ResponseInterface
231  {
232  $this->‪prepareContent('window');
233  $this->moduleTemplate->setContent($this->content);
234  return new ‪HtmlResponse($this->moduleTemplate->renderContent());
235  }
236 
244  public function ‪wizardAction(ServerRequestInterface $request): ResponseInterface
245  {
246  $this->‪prepareContent('list_frame');
247  return new ‪HtmlResponse($this->content);
248  }
249 
255  public function ‪main()
256  {
257  trigger_error('NewContentElementController->main() will be replaced by protected method prepareContent() in TYPO3 v10.0. Do not call from other extension.', E_USER_DEPRECATED);
258  $this->‪prepareContent('window');
259  }
260 
267  public function ‪wizardArray()
268  {
269  trigger_error('NewContentElementController->wizardArray() will be replaced by protected method getWizards() in TYPO3 v10.0. Do not call from other extension.', E_USER_DEPRECATED);
270  return $this->‪getWizards();
271  }
272 
277  public function ‪wizard_appendWizards($wizardElements)
278  {
279  trigger_error('NewContentElementController->wizard_appendWizards() will be replaced by protected method getAppendWizards() in TYPO3 v10.0. Do not call from other extension.', E_USER_DEPRECATED);
280  return $this->‪getAppendWizards($wizardElements);
281  }
282 
289  public function ‪wizard_getItem($groupKey, $itemKey, $itemConf)
290  {
291  trigger_error('NewContentElementController->wizard_getItem() will be replaced by protected method getWizardItem() in TYPO3 v10.0. Do not call from other extension.', E_USER_DEPRECATED);
292  return $this->‪getWizardItem($groupKey, $itemKey, $itemConf);
293  }
294 
300  public function ‪wizard_getGroupHeader($groupKey, $wizardGroup)
301  {
302  trigger_error('NewContentElementController->wizard_getGroupHeader() will be replaced by protected method getWizardGroupHeader() in TYPO3 v10.0. Do not call from other extension.', E_USER_DEPRECATED);
303  return $this->‪getWizardGroupHeader($wizardGroup);
304  }
305 
314  public function ‪removeInvalidElements(&$wizardItems)
315  {
316  trigger_error('NewContentElementController->removeInvalidElements() will be replaced by protected method removeInvalidWizardItems() in TYPO3 v10.0. Do not call from other extension.', E_USER_DEPRECATED);
317  $this->‪removeInvalidWizardItems($wizardItems);
318  }
319 
329  protected function ‪prepareContent(string $clientContext): void
330  {
331  $hasAccess = true;
332  if ($this->id && $this->access) {
333 
334  // Init position map object:
335  $posMap = GeneralUtility::makeInstance(
336  ContentCreationPagePositionMap::class,
337  null,
338  $clientContext
339  );
340  $posMap->cur_sys_language = ‪$this->sys_language;
341  // If a column is pre-set:
342  if (isset($this->colPos)) {
343  if ($this->uid_pid < 0) {
344  $row = [];
345  $row['uid'] = abs($this->uid_pid);
346  } else {
347  $row = '';
348  }
349  $this->onClickEvent = $posMap->onClickInsertRecord(
350  $row,
351  $this->colPos,
352  '',
353  $this->uid_pid,
354  $this->sys_language
355  );
356  } else {
357  $this->onClickEvent = '';
358  }
359  // ***************************
360  // Creating content
361  // ***************************
362  // Wizard
363  $wizardItems = $this->‪getWizards();
364  // Wrapper for wizards
365  // Hook for manipulating wizardItems, wrapper, onClickEvent etc.
366  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms']['db_new_content_el']['wizardItemsHook'] ?? [] as $className) {
367  $hookObject = GeneralUtility::makeInstance($className);
368  if (!$hookObject instanceof NewContentElementWizardHookInterface) {
369  throw new \UnexpectedValueException(
370  $className . ' must implement interface ' . NewContentElementWizardHookInterface::class,
371  1227834741
372  );
373  }
374  $hookObject->manipulateWizardItems($wizardItems, $this);
375  }
376 
377  // Traverse items for the wizard.
378  // An item is either a header or an item rendered with a radio button and title/description and icon:
379  $cc = ($key = 0);
380  $menuItems = [];
381 
382  $this->view->assignMultiple([
383  'hasClickEvent' => $this->onClickEvent !== '',
384  'onClickEvent' => 'function goToalt_doc() { ' . $this->onClickEvent . '}',
385  ]);
386 
387  foreach ($wizardItems as $wizardKey => $wInfo) {
388  $wizardOnClick = '';
389  if (isset($wInfo['header'])) {
390  $menuItems[] = [
391  'label' => $wInfo['header'] ?: '-',
392  'content' => ''
393  ];
394  $key = count($menuItems) - 1;
395  } else {
396  if (!$this->onClickEvent) {
397  // Radio button:
398  $wizardOnClick = 'document.editForm.defValues.value=unescape(' . GeneralUtility::quoteJSvalue(rawurlencode($wInfo['params'])) . '); window.location.hash=\'#sel2\';';
399  // Onclick action for icon/title:
400  $aOnClick = 'document.getElementsByName(\'tempB\')[' . $cc . '].checked=1;' . $wizardOnClick . 'return false;';
401  } else {
402  $aOnClick = "document.editForm.defValues.value=unescape('" . rawurlencode($wInfo['params']) . "');goToalt_doc();";
403  }
404 
405  $icon = $this->moduleTemplate->getIconFactory()->getIcon($wInfo['iconIdentifier'])->render();
406 
407  $this->menuItemView->assignMultiple([
408  'onClickEvent' => $this->onClickEvent,
409  'aOnClick' => $aOnClick,
410  'wizardInformation' => $wInfo,
411  'icon' => $icon,
412  'wizardOnClick' => $wizardOnClick,
413  'wizardKey' => $wizardKey
414  ]);
415  $menuItems[$key]['content'] .= $this->menuItemView->render();
416  $cc++;
417  }
418  }
419 
420  $this->view->assign('renderedTabs', $this->moduleTemplate->getDynamicTabMenu(
421  $menuItems,
422  'new-content-element-wizard'
423  ));
424 
425  // If the user must also select a column:
426  if (!$this->onClickEvent) {
427 
428  // Load SHARED page-TSconfig settings and retrieve column list from there, if applicable:
429  $colPosArray = GeneralUtility::callUserFunction(
430  BackendLayoutView::class . '->getColPosListItemsParsed',
431  $this->id,
432  $this
433  );
434  $colPosIds = array_column($colPosArray, 1);
435  // Removing duplicates, if any
436  $colPosList = implode(',', array_unique(array_map('intval', $colPosIds)));
437  // Finally, add the content of the column selector to the content:
438  $this->view->assign('posMap', $posMap->printContentElementColumns($this->id, 0, $colPosList, 1, $this->R_URI));
439  }
440  } else {
441  // In case of no access:
442  $hasAccess = false;
443  }
444  $this->view->assign('hasAccess', $hasAccess);
445 
446  $this->content = $this->view->render();
447  // Setting up the buttons and markers for docheader
448  $this->‪getButtons();
449  }
450 
454  protected function ‪getButtons()
455  {
456  $buttonBar = $this->moduleTemplate->getDocHeaderComponent()->getButtonBar();
457  if ($this->R_URI) {
458  $backButton = $buttonBar->makeLinkButton()
459  ->setHref($this->R_URI)
460  ->setTitle($this->‪getLanguageService()->getLL('goBack'))
461  ->setIcon($this->moduleTemplate->getIconFactory()->getIcon(
462  'actions-view-go-back',
464  ));
465  $buttonBar->addButton($backButton);
466  }
467  $cshButton = $buttonBar->makeHelpButton()->setModuleName('xMOD_csh_corebe')->setFieldName('new_ce');
468  $buttonBar->addButton($cshButton);
469  }
470 
477  protected function ‪getWizards(): array
478  {
479  $wizardItems = [];
480  if (is_array($this->config)) {
481  $wizards = $this->config['wizardItems.'] ?? [];
482  $appendWizards = $this->‪getAppendWizards($wizards['elements.'] ?? []);
483  if (is_array($wizards)) {
484  foreach ($wizards as $groupKey => $wizardGroup) {
485  $this->‪prepareDependencyOrdering($wizards[$groupKey], 'before');
486  $this->‪prepareDependencyOrdering($wizards[$groupKey], 'after');
487  }
488  $wizards = GeneralUtility::makeInstance(DependencyOrderingService::class)->orderByDependencies($wizards);
489 
490  foreach ($wizards as $groupKey => $wizardGroup) {
491  $groupKey = rtrim($groupKey, '.');
492  $showItems = GeneralUtility::trimExplode(',', $wizardGroup['show'], true);
493  $showAll = in_array('*', $showItems, true);
494  $groupItems = [];
495  if (is_array($appendWizards[$groupKey . '.']['elements.'])) {
496  $wizardElements = array_merge((array)$wizardGroup['elements.'], $appendWizards[$groupKey . '.']['elements.']);
497  } else {
498  $wizardElements = $wizardGroup['elements.'];
499  }
500  if (is_array($wizardElements)) {
501  foreach ($wizardElements as $itemKey => $itemConf) {
502  $itemKey = rtrim($itemKey, '.');
503  if ($showAll || in_array($itemKey, $showItems)) {
504  $tmpItem = $this->‪getWizardItem($groupKey, $itemKey, $itemConf);
505  if ($tmpItem) {
506  $groupItems[$groupKey . '_' . $itemKey] = $tmpItem;
507  }
508  }
509  }
510  }
511  if (!empty($groupItems)) {
512  $wizardItems[$groupKey] = $this->‪getWizardGroupHeader($wizardGroup);
513  $wizardItems = array_merge($wizardItems, $groupItems);
514  }
515  }
516  }
517  }
518  // Remove elements where preset values are not allowed:
519  $this->‪removeInvalidWizardItems($wizardItems);
520  return $wizardItems;
521  }
522 
527  protected function ‪getAppendWizards(array $wizardElements): array
528  {
529  if (!is_array($wizardElements)) {
530  $wizardElements = [];
531  }
532  if (is_array(‪$GLOBALS['TBE_MODULES_EXT']['xMOD_db_new_content_el']['addElClasses'])) {
533  foreach (‪$GLOBALS['TBE_MODULES_EXT']['xMOD_db_new_content_el']['addElClasses'] as $class => $path) {
534  if (!class_exists($class) && file_exists($path)) {
535  require_once $path;
536  }
537  $modObj = GeneralUtility::makeInstance($class);
538  if (method_exists($modObj, 'proc')) {
539  $wizardElements = $modObj->proc($wizardElements);
540  }
541  }
542  }
543  $returnElements = [];
544  foreach ($wizardElements as $key => $wizardItem) {
545  preg_match('/^[a-zA-Z0-9]+_/', $key, $group);
546  $wizardGroup = $group[0] ? substr($group[0], 0, -1) . '.' : $key;
547  $returnElements[$wizardGroup]['elements.'][substr($key, strlen($wizardGroup)) . '.'] = $wizardItem;
548  }
549  return $returnElements;
550  }
551 
558  protected function ‪getWizardItem(string $groupKey, string $itemKey, array $itemConf): array
559  {
560  $itemConf['title'] = $this->‪getLanguageService()->‪sL($itemConf['title']);
561  $itemConf['description'] = $this->‪getLanguageService()->‪sL($itemConf['description']);
562  $itemConf['tt_content_defValues'] = $itemConf['tt_content_defValues.'];
563  unset($itemConf['tt_content_defValues.']);
564  return $itemConf;
565  }
566 
571  protected function ‪getWizardGroupHeader(array $wizardGroup): array
572  {
573  return [
574  'header' => $this->‪getLanguageService()->‪sL($wizardGroup['header'])
575  ];
576  }
577 
586  protected function ‪removeInvalidWizardItems(array &$wizardItems): void
587  {
588  // Get TCEFORM from TSconfig of current page
589  $row = ['pid' => ‪$this->id];
590  $TCEFORM_TSconfig = ‪BackendUtility::getTCEFORM_TSconfig('tt_content', $row);
591  $headersUsed = [];
592  // Traverse wizard items:
593  foreach ($wizardItems as $key => $cfg) {
594  // Exploding parameter string, if any (old style)
595  if ($wizardItems[$key]['params']) {
596  // Explode GET vars recursively
597  $tempGetVars = [];
598  parse_str($wizardItems[$key]['params'], $tempGetVars);
599  // If tt_content values are set, merge them into the tt_content_defValues array,
600  // unset them from $tempGetVars and re-implode $tempGetVars into the param string
601  // (in case remaining parameters are around).
602  if (is_array($tempGetVars['defVals']['tt_content'])) {
603  $wizardItems[$key]['tt_content_defValues'] = array_merge(
604  is_array($wizardItems[$key]['tt_content_defValues']) ? $wizardItems[$key]['tt_content_defValues'] : [],
605  $tempGetVars['defVals']['tt_content']
606  );
607  unset($tempGetVars['defVals']['tt_content']);
608  $wizardItems[$key]['params'] = ‪HttpUtility::buildQueryString($tempGetVars, '&');
609  }
610  }
611  // If tt_content_defValues are defined...:
612  if (is_array($wizardItems[$key]['tt_content_defValues'])) {
613  $backendUser = $this->‪getBackendUser();
614  // Traverse field values:
615  foreach ($wizardItems[$key]['tt_content_defValues'] as $fN => $fV) {
616  if (is_array(‪$GLOBALS['TCA']['tt_content']['columns'][$fN])) {
617  // Get information about if the field value is OK:
618  ‪$config = &‪$GLOBALS['TCA']['tt_content']['columns'][$fN]['config'];
619  $authModeDeny = ‪$config['type'] === 'select' && ‪$config['authMode']
620  && !$backendUser->checkAuthMode('tt_content', $fN, $fV, ‪$config['authMode']);
621  // explode TSconfig keys only as needed
622  if (!isset($removeItems[$fN]) && isset($TCEFORM_TSconfig[$fN]['removeItems']) && $TCEFORM_TSconfig[$fN]['removeItems'] !== '') {
623  $removeItems[$fN] = array_flip(GeneralUtility::trimExplode(
624  ',',
625  $TCEFORM_TSconfig[$fN]['removeItems'],
626  true
627  ));
628  }
629  if (!isset($keepItems[$fN]) && isset($TCEFORM_TSconfig[$fN]['keepItems']) && $TCEFORM_TSconfig[$fN]['keepItems'] !== '') {
630  $keepItems[$fN] = array_flip(GeneralUtility::trimExplode(
631  ',',
632  $TCEFORM_TSconfig[$fN]['keepItems'],
633  true
634  ));
635  }
636  $isNotInKeepItems = !empty($keepItems[$fN]) && !isset($keepItems[$fN][$fV]);
637  if ($authModeDeny || ($fN === 'CType' && (isset($removeItems[$fN][$fV]) || $isNotInKeepItems))) {
638  // Remove element all together:
639  unset($wizardItems[$key]);
640  break;
641  }
642  // Add the parameter:
643  $wizardItems[$key]['params'] .= '&defVals[tt_content][' . $fN . ']=' . rawurlencode($this->‪getLanguageService()->sL($fV));
644  $tmp = explode('_', $key);
645  $headersUsed[$tmp[0]] = $tmp[0];
646  }
647  }
648  }
649  }
650  // remove headers without elements
651  foreach ($wizardItems as $key => $cfg) {
652  $tmp = explode('_', $key);
653  if ($tmp[0] && !$tmp[1] && !in_array($tmp[0], $headersUsed)) {
654  unset($wizardItems[$key]);
655  }
656  }
657  }
658 
665  protected function ‪prepareDependencyOrdering(&$wizardGroup, $key)
666  {
667  if (isset($wizardGroup[$key])) {
668  $wizardGroup[$key] = GeneralUtility::trimExplode(',', $wizardGroup[$key]);
669  $wizardGroup[$key] = array_map(function ($s) {
670  return $s . '.';
671  }, $wizardGroup[$key]);
672  }
673  }
674 
679  {
680  return ‪$GLOBALS['LANG'];
681  }
682 
686  protected function ‪getBackendUser(): ‪BackendUserAuthentication
687  {
688  return ‪$GLOBALS['BE_USER'];
689  }
690 
696  protected function ‪getFluidTemplateObject(string $filename = 'Main.html'): ‪StandaloneView
697  {
699  ‪$view = GeneralUtility::makeInstance(StandaloneView::class);
700  ‪$view->‪setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName('EXT:backend/Resources/Private/Templates/NewContentElement/' . $filename));
701  ‪$view->‪getRequest()->setControllerExtensionName('Backend');
702  return ‪$view;
703  }
704 
710  public function ‪getPageInfo(): array
711  {
713  }
714 
720  public function ‪getColPos(): ?int
721  {
723  }
724 
730  public function ‪getSysLanguage(): int
731  {
732  return ‪$this->sys_language;
733  }
734 
740  public function ‪getUidPid(): int
741  {
742  return ‪$this->uid_pid;
743  }
744 }
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:29
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$onClickEvent
‪string $onClickEvent
Definition: NewContentElementController.php:124
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$view
‪StandaloneView $view
Definition: NewContentElementController.php:132
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\wizard_getGroupHeader
‪array wizard_getGroupHeader($groupKey, $wizardGroup)
Definition: NewContentElementController.php:282
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getButtons
‪getButtons()
Definition: NewContentElementController.php:436
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\getPagePermsClause
‪string getPagePermsClause($perms)
Definition: BackendUserAuthentication.php:523
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:25
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$uid_pid
‪int $uid_pid
Definition: NewContentElementController.php:86
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getAppendWizards
‪array getAppendWizards(array $wizardElements)
Definition: NewContentElementController.php:509
‪TYPO3\CMS\Backend\Controller\ContentElement
Definition: ElementHistoryController.php:2
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$content
‪string $content
Definition: NewContentElementController.php:104
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController
Definition: NewContentElementController.php:43
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getWizardItem
‪array getWizardItem(string $groupKey, string $itemKey, array $itemConf)
Definition: NewContentElementController.php:540
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$access
‪bool $access
Definition: NewContentElementController.php:110
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\__construct
‪__construct()
Definition: NewContentElementController.php:147
‪TYPO3\CMS\Core\Utility\ArrayUtility\mergeRecursiveWithOverrule
‪static mergeRecursiveWithOverrule(array &$original, array $overrule, $addKeys=true, $includeEmptyValues=true, $enableUnsetFeature=true)
Definition: ArrayUtility.php:614
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getWizards
‪array getWizards()
Definition: NewContentElementController.php:459
‪TYPO3\CMS\Core\Localization\LanguageService\sL
‪string sL($input)
Definition: LanguageService.php:158
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$moduleTemplate
‪ModuleTemplate $moduleTemplate
Definition: NewContentElementController.php:142
‪TYPO3\CMS\Backend\Template\ModuleTemplate
Definition: ModuleTemplate.php:40
‪TYPO3\CMS\Backend\Tree\View\ContentCreationPagePositionMap
Definition: ContentCreationPagePositionMap.php:26
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:23
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getUidPid
‪int getUidPid()
Definition: NewContentElementController.php:722
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$sys_language
‪int $sys_language
Definition: NewContentElementController.php:70
‪TYPO3\CMS\Backend\Template\DocumentTemplate
Definition: DocumentTemplate.php:48
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$R_URI
‪string $R_URI
Definition: NewContentElementController.php:76
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getColPos
‪int null getColPos()
Definition: NewContentElementController.php:702
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\wizard_appendWizards
‪array wizard_appendWizards($wizardElements)
Definition: NewContentElementController.php:259
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\prepareContent
‪prepareContent(string $clientContext)
Definition: NewContentElementController.php:311
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$pageInfo
‪array $pageInfo
Definition: NewContentElementController.php:120
‪TYPO3\CMS\Core\Utility\HttpUtility\buildQueryString
‪static string buildQueryString(array $parameters, string $prependCharacter='', bool $skipEmptyParameters=false)
Definition: HttpUtility.php:160
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$config
‪array $config
Definition: NewContentElementController.php:116
‪TYPO3\CMS\Fluid\View\AbstractTemplateView\setTemplatePathAndFilename
‪setTemplatePathAndFilename($templatePathAndFilename)
Definition: AbstractTemplateView.php:100
‪TYPO3\CMS\Core\Service\DependencyOrderingService
Definition: DependencyOrderingService.php:31
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:45
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_SHOW
‪const PAGE_SHOW
Definition: Permission.php:32
‪TYPO3\CMS\Backend\Wizard\NewContentElementWizardHookInterface
Definition: NewContentElementWizardHookInterface.php:22
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\mainAction
‪ResponseInterface mainAction(ServerRequestInterface $request)
Definition: NewContentElementController.php:212
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\removeInvalidElements
‪removeInvalidElements(&$wizardItems)
Definition: NewContentElementController.php:296
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\main
‪main()
Definition: NewContentElementController.php:237
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\wizardArray
‪array wizardArray()
Definition: NewContentElementController.php:249
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:72
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\init
‪init(ServerRequestInterface $request=null)
Definition: NewContentElementController.php:165
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\removeInvalidWizardItems
‪removeInvalidWizardItems(array &$wizardItems)
Definition: NewContentElementController.php:568
‪TYPO3\CMS\Fluid\View\StandaloneView
Definition: StandaloneView.php:32
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\wizard_getItem
‪array wizard_getItem($groupKey, $itemKey, $itemConf)
Definition: NewContentElementController.php:271
‪TYPO3\CMS\Backend\Utility\BackendUtility\getPagesTSconfig
‪static array getPagesTSconfig($id, $rootLine=null, $returnPartArray=false)
Definition: BackendUtility.php:864
‪TYPO3\CMS\Backend\View\BackendLayoutView
Definition: BackendLayoutView.php:28
‪TYPO3\CMS\Core\Utility\ArrayUtility
Definition: ArrayUtility.php:23
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$colPos
‪int null $colPos
Definition: NewContentElementController.php:82
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$deprecatedPublicProperties
‪array $deprecatedPublicProperties
Definition: NewContentElementController.php:47
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\prepareDependencyOrdering
‪prepareDependencyOrdering(&$wizardGroup, $key)
Definition: NewContentElementController.php:647
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getWizardGroupHeader
‪array getWizardGroupHeader(array $wizardGroup)
Definition: NewContentElementController.php:553
‪TYPO3\CMS\Core\Utility\HttpUtility
Definition: HttpUtility.php:21
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:29
‪TYPO3\CMS\Core\Compatibility\PublicPropertyDeprecationTrait
Definition: PublicPropertyDeprecationTrait.php:66
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$doc
‪DocumentTemplate $doc
Definition: NewContentElementController.php:98
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: NewContentElementController.php:668
‪TYPO3\CMS\Fluid\View\StandaloneView\getRequest
‪WebRequest getRequest()
Definition: StandaloneView.php:109
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$id
‪int $id
Definition: NewContentElementController.php:64
‪TYPO3\CMS\Backend\Utility\BackendUtility\getTCEFORM_TSconfig
‪static array getTCEFORM_TSconfig($table, $row)
Definition: BackendUtility.php:3482
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getLanguageService
‪LanguageService getLanguageService()
Definition: NewContentElementController.php:660
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getSysLanguage
‪int getSysLanguage()
Definition: NewContentElementController.php:712
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$menuItemView
‪StandaloneView $menuItemView
Definition: NewContentElementController.php:136
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getPageInfo
‪array getPageInfo()
Definition: NewContentElementController.php:692
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$modTSconfig
‪array $modTSconfig
Definition: NewContentElementController.php:92
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\getFluidTemplateObject
‪StandaloneView getFluidTemplateObject(string $filename='Main.html')
Definition: NewContentElementController.php:678
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\$MCONF
‪array $MCONF
Definition: NewContentElementController.php:128
‪TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController\wizardAction
‪ResponseInterface wizardAction(ServerRequestInterface $request)
Definition: NewContentElementController.php:226
‪TYPO3\CMS\Core\Http\HtmlResponse
Definition: HtmlResponse.php:25
‪TYPO3\CMS\Backend\Utility\BackendUtility\readPageAccess
‪static array bool readPageAccess($id, $perms_clause)
Definition: BackendUtility.php:635