‪TYPO3CMS  10.4
BackendController.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
18 use Psr\Http\Message\ResponseInterface;
19 use Psr\Http\Message\ServerRequestInterface;
40 
45 {
49  protected ‪$css = '';
50 
54  protected ‪$toolbarItems = [];
55 
59  protected ‪$templatePath = 'EXT:backend/Resources/Private/Templates/';
60 
64  protected ‪$partialPath = 'EXT:backend/Resources/Private/Partials/';
65 
70 
74  protected ‪$pageRenderer;
75 
79  protected ‪$iconFactory;
80 
84  protected ‪$typo3Version;
85 
89  protected ‪$uriBuilder;
90 
94  protected ‪$moduleStorage;
95 
99  protected ‪$moduleLoader;
100 
104  public function ‪__construct()
105  {
106  $this->‪getLanguageService()->‪includeLLFile('EXT:core/Resources/Private/Language/locallang_misc.xlf');
107  $this->backendModuleRepository = GeneralUtility::makeInstance(BackendModuleRepository::class);
108  $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
109  $this->uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
110  $this->typo3Version = GeneralUtility::makeInstance(Typo3Version::class);
111  $this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
112  $this->moduleLoader = GeneralUtility::makeInstance(ModuleLoader::class);
113  $this->moduleLoader->observeWorkspaces = true;
114  $this->moduleLoader->load(‪$GLOBALS['TBE_MODULES']);
115 
116  // Add default BE javascript
117  $this->pageRenderer->addJsFile('EXT:backend/Resources/Public/JavaScript/md5.js');
118  $this->pageRenderer->addJsFile('EXT:backend/Resources/Public/JavaScript/backend.js');
119  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/LoginRefresh', 'function(LoginRefresh) {
120  LoginRefresh.setIntervalTime(' . ‪MathUtility::forceIntegerInRange((int)‪$GLOBALS['TYPO3_CONF_VARS']['BE']['sessionTimeout'] - 60, 60) . ');
121  LoginRefresh.setLoginFramesetUrl(' . GeneralUtility::quoteJSvalue((string)$this->uriBuilder->buildUriFromRoute('login_frameset')) . ');
122  LoginRefresh.setLogoutUrl(' . GeneralUtility::quoteJSvalue((string)$this->uriBuilder->buildUriFromRoute('logout')) . ');
123  LoginRefresh.initialize();
124  }');
125 
126  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/BroadcastService', 'function(service) { service.listen(); }');
127  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ModuleMenu');
128  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Toolbar');
129  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Notification');
130  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Modal');
131  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/InfoWindow');
132  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ContextMenu');
133 
134  // load the storage API and fill the UC into the PersistentStorage, so no additional AJAX call is needed
135  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Storage/Persistent', 'function(PersistentStorage) {
136  PersistentStorage.load(' . json_encode($this->‪getBackendUser()->uc) . ');
137  }');
138 
139  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/DebugConsole');
140 
141  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/locallang_core.xlf');
142  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/locallang_misc.xlf');
143  $this->pageRenderer->addInlineLanguageLabelFile('EXT:backend/Resources/Private/Language/locallang_layout.xlf');
144  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/locallang_mod_web_list.xlf');
145  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/debugger.xlf');
146  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/wizard.xlf');
147 
148  $this->pageRenderer->addInlineSetting('ContextHelp', 'moduleUrl', (string)$this->uriBuilder->buildUriFromRoute('help_cshmanual'));
149  $this->pageRenderer->addInlineSetting('ShowItem', 'moduleUrl', (string)$this->uriBuilder->buildUriFromRoute('show_item'));
150  $this->pageRenderer->addInlineSetting('RecordHistory', 'moduleUrl', (string)$this->uriBuilder->buildUriFromRoute('record_history'));
151  $this->pageRenderer->addInlineSetting('NewRecord', 'moduleUrl', (string)$this->uriBuilder->buildUriFromRoute('db_new'));
152  $this->pageRenderer->addInlineSetting('FormEngine', 'moduleUrl', (string)$this->uriBuilder->buildUriFromRoute('record_edit'));
153  $this->pageRenderer->addInlineSetting('RecordCommit', 'moduleUrl', (string)$this->uriBuilder->buildUriFromRoute('tce_db'));
154  $this->pageRenderer->addInlineSetting('FileCommit', 'moduleUrl', (string)$this->uriBuilder->buildUriFromRoute('tce_file'));
155  $this->pageRenderer->addInlineSetting('WebLayout', 'moduleUrl', (string)$this->uriBuilder->buildUriFromRoute('web_layout'));
156 
158  $this->‪executeHook('constructPostProcess');
159 
160  $this->moduleStorage = $this->backendModuleRepository->loadAllowedModules(['user', 'help']);
161  }
162 
168  protected function ‪initializeToolbarItems()
169  {
170  $toolbarItemInstances = [];
171  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['BE']['toolbarItems'] ?? [] as $className) {
172  $toolbarItemInstance = GeneralUtility::makeInstance($className);
173  if (!$toolbarItemInstance instanceof ‪ToolbarItemInterface) {
174  throw new \RuntimeException(
175  'class ' . $className . ' is registered as toolbar item but does not implement'
176  . ToolbarItemInterface::class,
177  1415958218
178  );
179  }
180  $index = (int)$toolbarItemInstance->getIndex();
181  if ($index < 0 || $index > 100) {
182  throw new \RuntimeException(
183  'getIndex() must return an integer between 0 and 100',
184  1415968498
185  );
186  }
187  // Find next free position in array
188  while (array_key_exists($index, $toolbarItemInstances)) {
189  $index++;
190  }
191  $toolbarItemInstances[$index] = $toolbarItemInstance;
192  }
193  ksort($toolbarItemInstances);
194  $this->toolbarItems = $toolbarItemInstances;
195  }
196 
203  public function ‪mainAction(ServerRequestInterface $request): ResponseInterface
204  {
205  $this->‪executeHook('renderPreProcess');
206 
207  // Prepare the scaffolding, at this point extension may still add javascript and css
208  $moduleTemplate = GeneralUtility::makeInstance(ModuleTemplate::class);
209  $view = $moduleTemplate->getView();
210  $view->setPartialRootPaths([GeneralUtility::getFileAbsFileName('EXT:backend/Resources/Private/Partials')]);
211  $view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName($this->templatePath . 'Backend/Main.html'));
212  $view->assign('moduleMenuCollapsed', $this->‪getCollapseStateOfMenu());
213  $view->assign('moduleMenu', $this->‪generateModuleMenu());
214  $view->assign('topbar', $this->‪renderTopbar());
215  $view->assign('hasModules', count($this->moduleStorage) > 0);
216 
217  if (!empty($this->css)) {
218  $this->pageRenderer->addCssInlineBlock('BackendInlineCSS', $this->css);
219  }
220  $this->‪generateJavascript($request);
221 
222  // Set document title
223  ‪$typo3Version = 'TYPO3 CMS ' . $this->typo3Version->‪getVersion();
224  $title = ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] ? ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] . ' [' . ‪$typo3Version . ']' : ‪$typo3Version;
225  $moduleTemplate->setTitle($title);
226 
227  // Renders the backend scaffolding
228  $content = $moduleTemplate->renderContent();
229  $this->‪executeHook('renderPostProcess', ['content' => &$content]);
230  return new ‪HtmlResponse($content);
231  }
232 
238  protected function ‪renderTopbar()
239  {
240  $view = $this->‪getFluidTemplateObject($this->partialPath . 'Backend/Topbar.html');
241 
242  // Extension Configuration to find the TYPO3 logo in the left corner
243  ‪$extConf = GeneralUtility::makeInstance(ExtensionConfiguration::class)->get('backend');
244  $logoPath = '';
245  if (!empty(‪$extConf['backendLogo'])) {
246  $customBackendLogo = GeneralUtility::getFileAbsFileName(ltrim(‪$extConf['backendLogo'], '/'));
247  if (!empty($customBackendLogo)) {
248  $logoPath = $customBackendLogo;
249  }
250  }
251  // if no custom logo was set or the path is invalid, use the original one
252  if (empty($logoPath) || !file_exists($logoPath)) {
253  $logoPath = GeneralUtility::getFileAbsFileName('EXT:backend/Resources/Public/Images/typo3_logo_orange.svg');
254  $logoWidth = 22;
255  $logoHeight = 22;
256  } else {
257  // set width/height for custom logo
258  $imageInfo = GeneralUtility::makeInstance(ImageInfo::class, $logoPath);
259  $logoWidth = $imageInfo->getWidth() ?? '22';
260  $logoHeight = $imageInfo->getHeight() ?? '22';
261 
262  // High-resolution?
263  if (strpos($logoPath, '@2x.') !== false) {
264  $logoWidth /= 2;
265  $logoHeight /= 2;
266  }
267  }
268 
269  $view->assign('hasModules', count($this->moduleStorage) > 0);
270  $view->assign('modulesHaveNavigationComponent', $this->backendModuleRepository->modulesHaveNavigationComponent());
271  $view->assign('logoUrl', ‪PathUtility::getAbsoluteWebPath($logoPath));
272  $view->assign('logoWidth', $logoWidth);
273  $view->assign('logoHeight', $logoHeight);
274  $view->assign('applicationVersion', $this->typo3Version->getVersion());
275  $view->assign('siteName', ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename']);
276  $view->assign('toolbar', $this->‪renderToolbar());
277 
278  return $view->render();
279  }
280 
286  protected function ‪renderToolbar()
287  {
288  $toolbar = [];
289  foreach ($this->toolbarItems as $toolbarItem) {
291  if ($toolbarItem->checkAccess()) {
292  $hasDropDown = (bool)$toolbarItem->hasDropDown();
293  $additionalAttributes = (array)$toolbarItem->getAdditionalAttributes();
294 
295  $liAttributes = [];
296 
297  // Merge class: Add dropdown class if hasDropDown, add classes from additional attributes
298  $classes = [];
299  $classes[] = 'toolbar-item';
300  $classes[] = 't3js-toolbar-item';
301  if (isset($additionalAttributes['class'])) {
302  $classes[] = $additionalAttributes['class'];
303  unset($additionalAttributes['class']);
304  }
305  $liAttributes['class'] = implode(' ', $classes);
306 
307  // Add further attributes
308  foreach ($additionalAttributes as $name => $value) {
309  $liAttributes[(string)$name] = (string)$value;
310  }
311 
312  // Create a unique id from class name
313  $fullyQualifiedClassName = \get_class($toolbarItem);
314  $className = ‪GeneralUtility::underscoredToLowerCamelCase($fullyQualifiedClassName);
316  $className = str_replace(['_', '\\'], '-', $className);
317  $liAttributes['id'] = $className;
318 
319  // Create data attribute identifier
320  $shortName = substr($fullyQualifiedClassName, (int)strrpos($fullyQualifiedClassName, '\\') + 1);
321  $dataToolbarIdentifier = ‪GeneralUtility::camelCaseToLowerCaseUnderscored($shortName);
322  $dataToolbarIdentifier = str_replace('_', '-', $dataToolbarIdentifier);
323  $liAttributes['data-toolbar-identifier'] = $dataToolbarIdentifier;
324 
325  $toolbar[] = '<li ' . GeneralUtility::implodeAttributes($liAttributes, true) . '>';
326 
327  if ($hasDropDown) {
328  $toolbar[] = '<a href="#" class="toolbar-item-link dropdown-toggle" data-toggle="dropdown">';
329  $toolbar[] = $toolbarItem->getItem();
330  $toolbar[] = '</a>';
331  $toolbar[] = '<div class="dropdown-menu" role="menu">';
332  $toolbar[] = $toolbarItem->getDropDown();
333  $toolbar[] = '</div>';
334  } else {
335  $toolbar[] = $toolbarItem->getItem();
336  }
337  $toolbar[] = '</li>';
338  }
339  }
340  return implode(LF, $toolbar);
341  }
342 
348  protected function ‪generateJavascript(ServerRequestInterface $request)
349  {
350  $beUser = $this->‪getBackendUser();
351  // Needed for FormEngine manipulation (date picker)
352  $dateFormat = (‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['USdateFormat'] ? ['MM-DD-YYYY', 'HH:mm MM-DD-YYYY'] : ['DD-MM-YYYY', 'HH:mm DD-MM-YYYY']);
353  $this->pageRenderer->addInlineSetting('DateTimePicker', 'DateFormat', $dateFormat);
354 
355  // If another page module was specified, replace the default Page module with the new one
356  $newPageModule = trim($beUser->getTSConfig()['options.']['overridePageModule'] ?? '');
357  $pageModule = ‪BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout';
358  $pageModuleUrl = '';
359  if (!$beUser->check('modules', $pageModule)) {
360  $pageModule = '';
361  } else {
362  $pageModuleUrl = (string)$this->uriBuilder->buildUriFromRoute($pageModule);
363  }
364  $t3Configuration = [
365  'username' => htmlspecialchars($beUser->user['username']),
366  'pageModule' => $pageModule,
367  'pageModuleUrl' => $pageModuleUrl,
368  'inWorkspace' => $beUser->workspace !== 0,
369  'showRefreshLoginPopup' => (bool)(‪$GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup'] ?? false)
370  ];
371 
372  $this->pageRenderer->addJsInlineCode(
373  'BackendConfiguration',
374  '
375  TYPO3.configuration = ' . json_encode($t3Configuration) . ';
384  var fsMod = {
385  recentIds: [], // used by frameset modules to track the most recent used id for list frame.
386  navFrameHighlightedID: [], // used by navigation frames to track which row id was highlighted last time
387  currentBank: "0"
388  };
389 
390  top.goToModule = function(modName, cMR_flag, addGetVars) {
391  TYPO3.ModuleMenu.App.showModule(modName, addGetVars);
392  }
393  ' . $this->‪setStartupModule($request)
394  . $this->‪handlePageEditing($request),
395  false
396  );
397  }
398 
402  protected function ‪handlePageEditing(ServerRequestInterface $request): string
403  {
404  $beUser = $this->‪getBackendUser();
405  $userTsConfig = $this->‪getBackendUser()->‪getTSConfig();
406  // EDIT page
407  $editId = preg_replace('/[^[:alnum:]_]/', '', $request->getQueryParams()['edit'] ?? '') ?? '';
408  if ($editId) {
409  // Looking up the page to edit, checking permissions:
410  $where = ' AND (' . $beUser->getPagePermsClause(‪Permission::PAGE_EDIT) . ' OR ' . $beUser->getPagePermsClause(‪Permission::CONTENT_EDIT) . ')';
411  $editRecord = null;
413  $editRecord = ‪BackendUtility::getRecordWSOL('pages', (int)$editId, '*', $where);
414  }
415  // If the page was accessible, then let the user edit it.
416  if (is_array($editRecord) && $beUser->isInWebMount($editRecord)) {
417  // Checking page edit parameter:
418  if (!($userTsConfig['options.']['bookmark_onEditId_dontSetPageTree'] ?? false)) {
419  $bookmarkKeepExpanded = (bool)($userTsConfig['options.']['bookmark_onEditId_keepExistingExpanded'] ?? false);
420  // Expanding page tree:
421  ‪BackendUtility::openPageTree((int)$editRecord['pid'], !$bookmarkKeepExpanded);
422  }
423  // Setting JS code to open editing:
424  return '
425  // Load page to edit:
426  window.setTimeout("top.loadEditId(' . (int)$editRecord['uid'] . ');", 500);
427  ';
428  }
429  return '
430  // Warning about page editing:
431  require(["TYPO3/CMS/Backend/Modal", "TYPO3/CMS/Backend/Severity"], function(Modal, Severity) {
432  Modal.show("", ' . GeneralUtility::quoteJSvalue(sprintf($this->‪getLanguageService()->getLL('noEditPage'), (string)$editId)) . ', Severity.notice, [{
433  text: ' . GeneralUtility::quoteJSvalue($this->‪getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:close')) . ',
434  active: true,
435  btnClass: "btn-info",
436  name: "cancel",
437  trigger: function () {
438  Modal.currentModal.trigger("modal-dismiss");
439  }
440  }])
441  });';
442  }
443  return '';
444  }
445 
452  protected function ‪setStartupModule(ServerRequestInterface $request)
453  {
454  $startModule = preg_replace('/[^[:alnum:]_]/', '', $request->getQueryParams()['module'] ?? '');
455  $startModuleParameters = '';
456  if (!$startModule) {
457  $beUser = $this->‪getBackendUser();
458  // start module on first login, will be removed once used the first time
459  if (isset($beUser->uc['startModuleOnFirstLogin'])) {
460  $startModule = $beUser->uc['startModuleOnFirstLogin'];
461  unset($beUser->uc['startModuleOnFirstLogin']);
462  $beUser->writeUC();
463  } elseif ($this->moduleLoader->checkMod($beUser->uc['startModule']) !== 'notFound') {
464  $startModule = $beUser->uc['startModule'];
465  } else {
466  $startModule = $this->‪determineFirstAvailableBackendModule();
467  }
468 
469  // check if the start module has additional parameters, so a redirect to a specific
470  // action is possible
471  if (strpos($startModule, '->') !== false) {
472  [$startModule, $startModuleParameters] = explode('->', $startModule, 2);
473  }
474  }
475 
476  $moduleParameters = $request->getQueryParams()['modParams'] ?? '';
477  // if no GET parameters are set, check if there are parameters given from the UC
478  if (!$moduleParameters && $startModuleParameters) {
479  $moduleParameters = $startModuleParameters;
480  }
481 
482  if ($startModule) {
483  return '
484  // start in module:
485  top.startInModule = [' . GeneralUtility::quoteJSvalue($startModule) . ', ' . GeneralUtility::quoteJSvalue($moduleParameters) . '];
486  ';
487  }
488  return '';
489  }
490 
491  protected function ‪determineFirstAvailableBackendModule(): string
492  {
493  foreach ($this->moduleLoader->modules as $mainMod => $modData) {
494  $hasSubmodules = !empty($modData['sub']) && is_array($modData['sub']);
495  $isStandalone = $modData['standalone'] ?? false;
496  if ($isStandalone) {
497  return $modData['name'];
498  }
499 
500  if ($hasSubmodules) {
501  $firstSubmodule = reset($modData['sub']);
502  return $firstSubmodule['name'];
503  }
504  }
505 
506  return '';
507  }
508 
515  public function ‪addCss(‪$css)
516  {
517  if (!is_string(‪$css)) {
518  throw new \InvalidArgumentException('parameter $css must be of type string', 1195129642);
519  }
520  $this->css .= ‪$css;
521  }
522 
534  protected function ‪executeHook($identifier, array $hookConfiguration = [])
535  {
536  $options = &‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/backend.php'];
537  foreach ($options[$identifier] ?? [] as $hookFunction) {
538  GeneralUtility::callUserFunction($hookFunction, $hookConfiguration, $this);
539  }
540  }
541 
548  protected function ‪generateModuleMenu()
549  {
550  $view = $this->‪getFluidTemplateObject($this->templatePath . 'ModuleMenu/Main.html');
551  $view->assign('modules', $this->moduleStorage);
552  return $view->render();
553  }
554 
555  protected function ‪getCollapseStateOfMenu(): bool
556  {
557  $uc = json_decode((string)json_encode($this->‪getBackendUser()->uc), true);
558  $collapseState = $uc['BackendComponents']['States']['typo3-module-menu']['collapsed'] ?? false;
559 
560  return $collapseState === true || $collapseState === 'true';
561  }
562 
568  public function ‪getModuleMenu(): ResponseInterface
569  {
570  return new ‪JsonResponse(['menu' => $this->‪generateModuleMenu()]);
571  }
572 
578  public function ‪getTopbar(): ResponseInterface
579  {
580  return new ‪JsonResponse(['topbar' => $this->‪renderTopbar()]);
581  }
582 
589  protected function ‪getFluidTemplateObject($templatePathAndFileName = null)
590  {
591  $view = GeneralUtility::makeInstance(StandaloneView::class);
592  $view->setPartialRootPaths([GeneralUtility::getFileAbsFileName('EXT:backend/Resources/Private/Partials')]);
593  if ($templatePathAndFileName) {
594  $view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName($templatePathAndFileName));
595  }
596  return $view;
597  }
598 
604  protected function ‪getLanguageService()
605  {
606  return ‪$GLOBALS['LANG'];
607  }
608 
614  protected function ‪getBackendUser()
615  {
616  return ‪$GLOBALS['BE_USER'];
617  }
618 }
‪TYPO3\CMS\Core\Utility\GeneralUtility\underscoredToLowerCamelCase
‪static string underscoredToLowerCamelCase($string)
Definition: GeneralUtility.php:902
‪TYPO3\CMS\Backend\Controller\BackendController\getModuleMenu
‪ResponseInterface getModuleMenu()
Definition: BackendController.php:557
‪TYPO3\CMS\Backend\Controller\BackendController\$moduleStorage
‪SplObjectStorage $moduleStorage
Definition: BackendController.php:84
‪TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface
Definition: ToolbarItemInterface.php:25
‪TYPO3\CMS\Core\Utility\PathUtility
Definition: PathUtility.php:24
‪TYPO3\CMS\Core\Localization\LanguageService\includeLLFile
‪array includeLLFile($fileRef, $setGlobal=null, $mergeLocalOntoDefault=null)
Definition: LanguageService.php:297
‪TYPO3\CMS\Backend\Utility\BackendUtility\isModuleSetInTBE_MODULES
‪static bool isModuleSetInTBE_MODULES($modName)
Definition: BackendUtility.php:3287
‪TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger
‪static bool canBeInterpretedAsInteger($var)
Definition: MathUtility.php:74
‪TYPO3\CMS\Backend\Controller\BackendController\$css
‪string $css
Definition: BackendController.php:48
‪TYPO3\CMS\Backend\Controller\BackendController\$pageRenderer
‪PageRenderer $pageRenderer
Definition: BackendController.php:68
‪TYPO3\CMS\Core\Information\Typo3Version
Definition: Typo3Version.php:21
‪TYPO3\CMS\Backend\Controller\BackendController\renderToolbar
‪string renderToolbar()
Definition: BackendController.php:275
‪TYPO3\CMS\Core\Configuration\ExtensionConfiguration
Definition: ExtensionConfiguration.php:45
‪TYPO3\CMS\Backend\Controller\BackendController\getFluidTemplateObject
‪TYPO3 CMS Fluid View StandaloneView getFluidTemplateObject($templatePathAndFileName=null)
Definition: BackendController.php:578
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\getTSConfig
‪array getTSConfig()
Definition: BackendUserAuthentication.php:1217
‪TYPO3\CMS\Backend\Controller\BackendController\$templatePath
‪string $templatePath
Definition: BackendController.php:56
‪TYPO3\CMS\Core\Utility\MathUtility\forceIntegerInRange
‪static int forceIntegerInRange($theInt, $min, $max=2000000000, $defaultValue=0)
Definition: MathUtility.php:32
‪TYPO3\CMS\Backend\Controller\BackendController\executeHook
‪executeHook($identifier, array $hookConfiguration=[])
Definition: BackendController.php:523
‪TYPO3\CMS\Backend\Controller\BackendController\determineFirstAvailableBackendModule
‪determineFirstAvailableBackendModule()
Definition: BackendController.php:480
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:33
‪TYPO3\CMS\Core\Utility\GeneralUtility\camelCaseToLowerCaseUnderscored
‪static string camelCaseToLowerCaseUnderscored($string)
Definition: GeneralUtility.php:914
‪TYPO3\CMS\Backend\Controller\BackendController\$moduleLoader
‪ModuleLoader $moduleLoader
Definition: BackendController.php:88
‪TYPO3\CMS\Backend\Controller\BackendController\generateJavascript
‪generateJavascript(ServerRequestInterface $request)
Definition: BackendController.php:337
‪TYPO3\CMS\Backend\Template\ModuleTemplate
Definition: ModuleTemplate.php:43
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:24
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:42
‪TYPO3\CMS\Backend\Controller\BackendController\renderTopbar
‪string renderTopbar()
Definition: BackendController.php:227
‪TYPO3\CMS\Backend\Controller\BackendController\$toolbarItems
‪array $toolbarItems
Definition: BackendController.php:52
‪TYPO3\CMS\Core\Information\Typo3Version\getVersion
‪getVersion()
Definition: Typo3Version.php:38
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:38
‪TYPO3\CMS\Backend\Controller\BackendController\mainAction
‪ResponseInterface mainAction(ServerRequestInterface $request)
Definition: BackendController.php:192
‪TYPO3\CMS\Backend\Module\ModuleLoader
Definition: ModuleLoader.php:34
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Backend\Controller\BackendController
Definition: BackendController.php:45
‪TYPO3\CMS\Backend\Controller\BackendController\addCss
‪addCss($css)
Definition: BackendController.php:504
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:75
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordWSOL
‪static array getRecordWSOL( $table, $uid, $fields=' *', $where='', $useDeleteClause=true, $unsetMovePointers=false)
Definition: BackendUtility.php:139
‪TYPO3\CMS\Backend\Controller\BackendController\getCollapseStateOfMenu
‪getCollapseStateOfMenu()
Definition: BackendController.php:544
‪TYPO3\CMS\Backend\Controller\BackendController\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: BackendController.php:603
‪TYPO3\CMS\Core\Type\File\ImageInfo
Definition: ImageInfo.php:27
‪TYPO3\CMS\Backend\Domain\Repository\Module\BackendModuleRepository
Definition: BackendModuleRepository.php:34
‪TYPO3\CMS\Backend\Controller\BackendController\$typo3Version
‪Typo3Version $typo3Version
Definition: BackendController.php:76
‪TYPO3\CMS\Backend\Controller\BackendController\$partialPath
‪string $partialPath
Definition: BackendController.php:60
‪TYPO3\CMS\Backend\Controller\BackendController\$backendModuleRepository
‪BackendModuleRepository $backendModuleRepository
Definition: BackendController.php:64
‪TYPO3\CMS\Fluid\View\StandaloneView
Definition: StandaloneView.php:34
‪TYPO3\CMS\Core\Type\Bitmask\Permission\CONTENT_EDIT
‪const CONTENT_EDIT
Definition: Permission.php:53
‪TYPO3\CMS\Core\Http\JsonResponse
Definition: JsonResponse.php:26
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_EDIT
‪const PAGE_EDIT
Definition: Permission.php:38
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:22
‪TYPO3\CMS\Backend\Controller\BackendController\handlePageEditing
‪handlePageEditing(ServerRequestInterface $request)
Definition: BackendController.php:391
‪TYPO3\CMS\Backend\Controller\BackendController\__construct
‪__construct()
Definition: BackendController.php:93
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪$extConf
‪$extConf
Definition: ext_localconf.php:56
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Backend\Controller\BackendController\initializeToolbarItems
‪initializeToolbarItems()
Definition: BackendController.php:157
‪TYPO3\CMS\Core\Utility\PathUtility\getAbsoluteWebPath
‪static string getAbsoluteWebPath($targetPath)
Definition: PathUtility.php:43
‪TYPO3\CMS\Backend\Controller\BackendController\getLanguageService
‪LanguageService getLanguageService()
Definition: BackendController.php:593
‪TYPO3\CMS\Backend\Utility\BackendUtility\openPageTree
‪static openPageTree($pid, $clearExpansion)
Definition: BackendUtility.php:505
‪TYPO3\CMS\Backend\Controller\BackendController\setStartupModule
‪string setStartupModule(ServerRequestInterface $request)
Definition: BackendController.php:441
‪TYPO3\CMS\Backend\Controller\BackendController\generateModuleMenu
‪string generateModuleMenu()
Definition: BackendController.php:537
‪TYPO3\CMS\Backend\Controller
Definition: AbstractFormEngineAjaxController.php:18
‪TYPO3\CMS\Backend\Controller\BackendController\getTopbar
‪ResponseInterface getTopbar()
Definition: BackendController.php:567
‪TYPO3\CMS\Backend\Controller\BackendController\$iconFactory
‪IconFactory $iconFactory
Definition: BackendController.php:72
‪TYPO3\CMS\Core\Http\HtmlResponse
Definition: HtmlResponse.php:26
‪TYPO3\CMS\Backend\Controller\BackendController\$uriBuilder
‪UriBuilder $uriBuilder
Definition: BackendController.php:80