‪TYPO3CMS  9.5
BackendController.php
Go to the documentation of this file.
1 <?php
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 Psr\Http\Message\ResponseInterface;
38 
43 {
45 
49  private ‪$deprecatedPublicMethods = [
50  'render' => 'Using BackendController::render() is deprecated and will not be possible anymore in TYPO3 v10.0.',
51  ];
52 
56  protected ‪$content = '';
57 
61  protected ‪$css = '';
62 
66  protected ‪$cssFiles = [];
67 
71  protected ‪$js = '';
72 
76  protected ‪$jsFiles = [];
77 
81  protected ‪$toolbarItems = [];
82 
86  protected ‪$debug;
87 
91  protected ‪$templatePath = 'EXT:backend/Resources/Private/Templates/';
92 
96  protected ‪$partialPath = 'EXT:backend/Resources/Private/Partials/';
97 
102 
106  protected ‪$moduleLoader;
107 
111  protected ‪$pageRenderer;
112 
116  protected ‪$iconFactory;
117 
121  public function ‪__construct()
122  {
123  $this->‪getLanguageService()->‪includeLLFile('EXT:core/Resources/Private/Language/locallang_misc.xlf');
124 
125  $this->backendModuleRepository = GeneralUtility::makeInstance(BackendModuleRepository::class);
126  $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
127  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
128  // Set debug flag for BE development only
129  $this->‪debug = (int)‪$GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] === 1;
130  // Initializes the backend modules structure for use later.
131  $this->moduleLoader = GeneralUtility::makeInstance(ModuleLoader::class);
132  $this->moduleLoader->load(‪$GLOBALS['TBE_MODULES']);
133  $this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
134  // Add default BE javascript
135  $this->jsFiles = [
136  'md5' => 'EXT:backend/Resources/Public/JavaScript/md5.js',
137  'evalfield' => 'EXT:backend/Resources/Public/JavaScript/jsfunc.evalfield.js',
138  'backend' => 'EXT:backend/Resources/Public/JavaScript/backend.js',
139  ];
140  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/LoginRefresh', 'function(LoginRefresh) {
141  LoginRefresh.setIntervalTime(' . ‪MathUtility::forceIntegerInRange((int)‪$GLOBALS['TYPO3_CONF_VARS']['BE']['sessionTimeout'] - 60, 60) . ');
142  LoginRefresh.setLoginFramesetUrl(' . GeneralUtility::quoteJSvalue((string)$uriBuilder->buildUriFromRoute('login_frameset')) . ');
143  LoginRefresh.setLogoutUrl(' . GeneralUtility::quoteJSvalue((string)$uriBuilder->buildUriFromRoute('logout')) . ');
144  LoginRefresh.initialize();
145  }');
146 
147  // load module menu
148  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ModuleMenu');
149 
150  // load Toolbar class
151  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Toolbar');
152 
153  // load Utility class
154  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Utility');
155 
156  // load Notification functionality
157  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Notification');
158 
159  // load Modals
160  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Modal');
161 
162  // load InfoWindow
163  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/InfoWindow');
164 
165  // load ContextMenu
166  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ContextMenu');
167 
168  // load the storage API and fill the UC into the PersistentStorage, so no additional AJAX call is needed
169  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Storage');
170  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Storage/Persistent', 'function(PersistentStorage) {
171  PersistentStorage.load(' . json_encode($this->‪getBackendUser()->uc) . ');
172  }');
173 
174  // load debug console
175  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/DebugConsole');
176 
177  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/locallang_core.xlf');
178  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/locallang_misc.xlf');
179  $this->pageRenderer->addInlineLanguageLabelFile('EXT:backend/Resources/Private/Language/locallang_layout.xlf');
180  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/locallang_mod_web_list.xlf');
181 
182  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/debugger.xlf');
183  $this->pageRenderer->addInlineLanguageLabelFile('EXT:core/Resources/Private/Language/wizard.xlf');
184 
185  $this->pageRenderer->addInlineSetting('ShowItem', 'moduleUrl', (string)$uriBuilder->buildUriFromRoute('show_item'));
186  $this->pageRenderer->addInlineSetting('RecordHistory', 'moduleUrl', (string)$uriBuilder->buildUriFromRoute('record_history'));
187  $this->pageRenderer->addInlineSetting('NewRecord', 'moduleUrl', (string)$uriBuilder->buildUriFromRoute('db_new'));
188  $this->pageRenderer->addInlineSetting('FormEngine', 'moduleUrl', (string)$uriBuilder->buildUriFromRoute('record_edit'));
189  $this->pageRenderer->addInlineSetting('RecordCommit', 'moduleUrl', (string)$uriBuilder->buildUriFromRoute('tce_db'));
190  $this->pageRenderer->addInlineSetting('WebLayout', 'moduleUrl', (string)$uriBuilder->buildUriFromRoute('web_layout'));
191 
192  $this->css = '';
193 
194  $this->‪initializeToolbarItems();
195  $this->‪executeHook('constructPostProcess');
196  }
197 
203  protected function ‪initializeToolbarItems()
204  {
205  $toolbarItemInstances = [];
206  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['BE']['toolbarItems'] ?? [] as $className) {
207  $toolbarItemInstance = GeneralUtility::makeInstance($className);
208  if (!$toolbarItemInstance instanceof ‪ToolbarItemInterface) {
209  throw new \RuntimeException(
210  'class ' . $className . ' is registered as toolbar item but does not implement'
211  . ToolbarItemInterface::class,
212  1415958218
213  );
214  }
215  $index = (int)$toolbarItemInstance->getIndex();
216  if ($index < 0 || $index > 100) {
217  throw new \RuntimeException(
218  'getIndex() must return an integer between 0 and 100',
219  1415968498
220  );
221  }
222  // Find next free position in array
223  while (array_key_exists($index, $toolbarItemInstances)) {
224  $index++;
225  }
226  $toolbarItemInstances[$index] = $toolbarItemInstance;
227  }
228  ksort($toolbarItemInstances);
229  $this->toolbarItems = $toolbarItemInstances;
230  }
231 
238  public function ‪mainAction(): ResponseInterface
239  {
240  $this->‪render();
241  return new HtmlResponse($this->content);
242  }
243 
247  protected function ‪render()
248  {
249  $this->‪executeHook('renderPreProcess');
250 
251  // Prepare the scaffolding, at this point extension may still add javascript and css
252  $view = $this->‪getFluidTemplateObject($this->templatePath . 'Backend/Main.html');
253 
254  $view->assign('moduleMenuCollapsed', $this->‪getCollapseStateOfMenu());
255  $view->assign('moduleMenu', $this->‪generateModuleMenu());
256  $view->assign('topbar', $this->‪renderTopbar());
257 
258  /******************************************************
259  * Now put the complete backend document together
260  ******************************************************/
261  foreach ($this->cssFiles as $cssFileName => $cssFile) {
262  $this->pageRenderer->addCssFile($cssFile);
263  // Load additional css files to overwrite existing core styles
264  if (!empty(‪$GLOBALS['TBE_STYLES']['stylesheets'][$cssFileName])) {
265  $this->pageRenderer->addCssFile(‪$GLOBALS['TBE_STYLES']['stylesheets'][$cssFileName]);
266  }
267  }
268  if (!empty($this->css)) {
269  $this->pageRenderer->addCssInlineBlock('BackendInlineCSS', $this->css);
270  }
271  foreach ($this->jsFiles as $jsFile) {
272  $this->pageRenderer->addJsFile($jsFile);
273  }
274  $this->‪generateJavascript();
275  $this->pageRenderer->addJsInlineCode('BackendInlineJavascript', $this->js, false);
276 
277  // Set document title:
278  $title = ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] ? ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] . ' [TYPO3 CMS ' . TYPO3_version . ']' : 'TYPO3 CMS ' . TYPO3_version;
279  // Renders the module page
280  $this->content = $this->‪getDocumentTemplate()->‪render($title, $view->render());
281  $hookConfiguration = ['content' => &‪$this->content];
282  $this->‪executeHook('renderPostProcess', $hookConfiguration);
283  }
284 
290  protected function ‪renderTopbar()
291  {
292  $view = $this->‪getFluidTemplateObject($this->partialPath . 'Backend/Topbar.html');
293 
294  // Extension Configuration to find the TYPO3 logo in the left corner
295  ‪$extConf = GeneralUtility::makeInstance(ExtensionConfiguration::class)->get('backend');
296  $logoPath = '';
297  if (!empty(‪$extConf['backendLogo'])) {
298  $customBackendLogo = GeneralUtility::getFileAbsFileName(ltrim(‪$extConf['backendLogo'], '/'));
299  if (!empty($customBackendLogo)) {
300  $logoPath = $customBackendLogo;
301  }
302  }
303  // if no custom logo was set or the path is invalid, use the original one
304  if (empty($logoPath) || !file_exists($logoPath)) {
305  $logoPath = GeneralUtility::getFileAbsFileName('EXT:backend/Resources/Public/Images/typo3_logo_orange.svg');
306  $logoWidth = 22;
307  $logoHeight = 22;
308  } else {
309  // set width/height for custom logo
310  $imageInfo = GeneralUtility::makeInstance(ImageInfo::class, $logoPath);
311  $logoWidth = $imageInfo->getWidth() ?? '22';
312  $logoHeight = $imageInfo->getHeight() ?? '22';
313 
314  // High-resolution?
315  if (strpos($logoPath, '@2x.') !== false) {
316  $logoWidth /= 2;
317  $logoHeight /= 2;
318  }
319  }
320 
321  $view->assign('logoUrl', ‪PathUtility::getAbsoluteWebPath($logoPath));
322  $view->assign('logoWidth', $logoWidth);
323  $view->assign('logoHeight', $logoHeight);
324  $view->assign('applicationVersion', TYPO3_version);
325  $view->assign('siteName', ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename']);
326  $view->assign('toolbar', $this->‪renderToolbar());
327 
328  return $view->render();
329  }
330 
336  protected function ‪renderToolbar()
337  {
338  $toolbar = [];
339  foreach ($this->toolbarItems as $toolbarItem) {
341  if ($toolbarItem->checkAccess()) {
342  $hasDropDown = (bool)$toolbarItem->hasDropDown();
343  $additionalAttributes = (array)$toolbarItem->getAdditionalAttributes();
344 
345  $liAttributes = [];
346 
347  // Merge class: Add dropdown class if hasDropDown, add classes from additional attributes
348  $classes = [];
349  $classes[] = 'toolbar-item';
350  $classes[] = 't3js-toolbar-item';
351  if (isset($additionalAttributes['class'])) {
352  $classes[] = $additionalAttributes['class'];
353  unset($additionalAttributes['class']);
354  }
355  $liAttributes['class'] = implode(' ', $classes);
356 
357  // Add further attributes
358  foreach ($additionalAttributes as $name => $value) {
359  $liAttributes[$name] = $value;
360  }
361 
362  // Create a unique id from class name
363  $fullyQualifiedClassName = \get_class($toolbarItem);
364  $className = GeneralUtility::underscoredToLowerCamelCase($fullyQualifiedClassName);
365  $className = GeneralUtility::camelCaseToLowerCaseUnderscored($className);
366  $className = str_replace(['_', '\\'], '-', $className);
367  $liAttributes['id'] = $className;
368 
369  // Create data attribute identifier
370  $shortName = substr($fullyQualifiedClassName, strrpos($fullyQualifiedClassName, '\\') + 1);
371  $dataToolbarIdentifier = GeneralUtility::camelCaseToLowerCaseUnderscored($shortName);
372  $dataToolbarIdentifier = str_replace('_', '-', $dataToolbarIdentifier);
373  $liAttributes['data-toolbar-identifier'] = $dataToolbarIdentifier;
374 
375  $toolbar[] = '<li ' . GeneralUtility::implodeAttributes($liAttributes, true) . '>';
376 
377  if ($hasDropDown) {
378  $toolbar[] = '<a href="#" class="toolbar-item-link dropdown-toggle" data-toggle="dropdown">';
379  $toolbar[] = $toolbarItem->getItem();
380  $toolbar[] = '</a>';
381  $toolbar[] = '<div class="dropdown-menu" role="menu">';
382  $toolbar[] = $toolbarItem->getDropDown();
383  $toolbar[] = '</div>';
384  } else {
385  $toolbar[] = $toolbarItem->getItem();
386  }
387  $toolbar[] = '</li>';
388  }
389  }
390  return implode(LF, $toolbar);
391  }
392 
396  protected function ‪generateJavascript()
397  {
398  $beUser = $this->‪getBackendUser();
399  // Needed for FormEngine manipulation (date picker)
400  $dateFormat = (‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['USdateFormat'] ? ['MM-DD-YYYY', 'HH:mm MM-DD-YYYY'] : ['DD-MM-YYYY', 'HH:mm DD-MM-YYYY']);
401  $this->pageRenderer->addInlineSetting('DateTimePicker', 'DateFormat', $dateFormat);
402 
403  // If another page module was specified, replace the default Page module with the new one
404  $newPageModule = trim($beUser->getTSConfig()['options.']['overridePageModule'] ?? '');
405  $pageModule = ‪BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout';
406  $pageModuleUrl = '';
407  if (!$beUser->check('modules', $pageModule)) {
408  $pageModule = '';
409  } else {
410  $pageModuleUrl = (string)GeneralUtility::makeInstance(UriBuilder::class)->buildUriFromRoute($pageModule);
411  }
412  $t3Configuration = [
413  'username' => htmlspecialchars($beUser->user['username']),
414  'pageModule' => $pageModule,
415  'pageModuleUrl' => $pageModuleUrl,
416  'inWorkspace' => $beUser->workspace !== 0,
417  'showRefreshLoginPopup' => (bool)(‪$GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup'] ?? false)
418  ];
419  $this->js .= '
420  TYPO3.configuration = ' . json_encode($t3Configuration) . ';
429  var fsMod = {
430  recentIds: [], // used by frameset modules to track the most recent used id for list frame.
431  navFrameHighlightedID: [], // used by navigation frames to track which row id was highlighted last time
432  currentBank: "0"
433  };
434 
435  top.goToModule = function(modName, cMR_flag, addGetVars) {
436  TYPO3.ModuleMenu.App.showModule(modName, addGetVars);
437  }
438  ' . $this->‪setStartupModule();
439  // Check editing of page:
440  $this->‪handlePageEditing();
441  }
442 
446  protected function ‪handlePageEditing()
447  {
448  $beUser = $this->‪getBackendUser();
449  $userTsConfig = $this->‪getBackendUser()->‪getTSConfig();
450  // EDIT page:
451  $editId = preg_replace('/[^[:alnum:]_]/', '', GeneralUtility::_GET('edit'));
452  if ($editId) {
453  // Looking up the page to edit, checking permissions:
454  $where = ' AND (' . $beUser->getPagePermsClause(‪Permission::PAGE_EDIT) . ' OR ' . $beUser->getPagePermsClause(‪Permission::CONTENT_EDIT) . ')';
456  $editRecord = ‪BackendUtility::getRecordWSOL('pages', $editId, '*', $where);
457  } else {
458  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
459  $queryBuilder->getRestrictions()
460  ->removeAll()
461  ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
462  ->add(GeneralUtility::makeInstance(BackendWorkspaceRestriction::class));
463 
464  $editRecord = $queryBuilder->select('*')
465  ->from('pages')
466  ->where(
467  $queryBuilder->expr()->eq(
468  'alias',
469  $queryBuilder->createNamedParameter($editId, \PDO::PARAM_STR)
470  ),
471  $queryBuilder->expr()->orX(
472  $beUser->getPagePermsClause(‪Permission::PAGE_EDIT),
473  $beUser->getPagePermsClause(‪Permission::CONTENT_EDIT)
474  )
475  )
476  ->setMaxResults(1)
477  ->execute()
478  ->fetch();
479 
480  if ($editRecord !== false) {
481  ‪BackendUtility::workspaceOL('pages', $editRecord);
482  }
483  }
484  // If the page was accessible, then let the user edit it.
485  if (is_array($editRecord) && $beUser->isInWebMount($editRecord)) {
486  // Setting JS code to open editing:
487  $this->js .= '
488  // Load page to edit:
489  window.setTimeout("top.loadEditId(' . (int)$editRecord['uid'] . ');", 500);
490  ';
491  // Checking page edit parameter:
492  if (!($userTsConfig['options.']['bookmark_onEditId_dontSetPageTree'] ?? false)) {
493  $bookmarkKeepExpanded = (bool)($userTsConfig['options.']['bookmark_onEditId_keepExistingExpanded'] ?? false);
494  // Expanding page tree:
495  ‪BackendUtility::openPageTree((int)$editRecord['pid'], !$bookmarkKeepExpanded);
496  }
497  } else {
498  $this->js .= '
499  // Warning about page editing:
500  require(["TYPO3/CMS/Backend/Modal", "TYPO3/CMS/Backend/Severity"], function(Modal, Severity) {
501  Modal.show("", ' . GeneralUtility::quoteJSvalue(sprintf($this->‪getLanguageService()->getLL('noEditPage'), $editId)) . ', Severity.notice, [{
502  text: ' . GeneralUtility::quoteJSvalue($this->‪getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:close')) . ',
503  active: true,
504  btnClass: "btn-info",
505  name: "cancel",
506  trigger: function () {
507  Modal.currentModal.trigger("modal-dismiss");
508  }
509  }])
510  });';
511  }
512  }
513  }
514 
520  protected function ‪setStartupModule()
521  {
522  $startModule = preg_replace('/[^[:alnum:]_]/', '', GeneralUtility::_GET('module'));
523  $startModuleParameters = '';
524  if (!$startModule) {
525  $beUser = $this->‪getBackendUser();
526  // start module on first login, will be removed once used the first time
527  if (isset($beUser->uc['startModuleOnFirstLogin'])) {
528  $startModule = $beUser->uc['startModuleOnFirstLogin'];
529  unset($beUser->uc['startModuleOnFirstLogin']);
530  $beUser->writeUC();
531  } elseif ($beUser->uc['startModule']) {
532  $startModule = $beUser->uc['startModule'];
533  }
534 
535  // check if the start module has additional parameters, so a redirect to a specific
536  // action is possible
537  if (strpos($startModule, '->') !== false) {
538  list($startModule, $startModuleParameters) = explode('->', $startModule, 2);
539  }
540  }
541 
542  $moduleParameters = GeneralUtility::_GET('modParams');
543  // if no GET parameters are set, check if there are parameters given from the UC
544  if (!$moduleParameters && $startModuleParameters) {
545  $moduleParameters = $startModuleParameters;
546  }
547 
548  if ($startModule) {
549  return '
550  // start in module:
551  top.startInModule = [' . GeneralUtility::quoteJSvalue($startModule) . ', ' . GeneralUtility::quoteJSvalue($moduleParameters) . '];
552  ';
553  }
554  return '';
555  }
556 
563  public function ‪addCss(‪$css)
564  {
565  if (!is_string(‪$css)) {
566  throw new \InvalidArgumentException('parameter $css must be of type string', 1195129642);
567  }
568  $this->css .= ‪$css;
569  }
570 
582  protected function ‪executeHook($identifier, array $hookConfiguration = [])
583  {
584  $options = &‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/backend.php'];
585  foreach ($options[$identifier] ?? [] as $hookFunction) {
586  GeneralUtility::callUserFunction($hookFunction, $hookConfiguration, $this);
587  }
588  }
589 
596  protected function ‪generateModuleMenu()
597  {
598  // get all modules except the user modules for the side menu
599  $moduleStorage = $this->backendModuleRepository->loadAllowedModules(['user', 'help']);
600 
601  $view = $this->‪getFluidTemplateObject($this->templatePath . 'ModuleMenu/Main.html');
602  $view->assign('modules', $moduleStorage);
603  return $view->render();
604  }
605 
606  protected function ‪getCollapseStateOfMenu(): bool
607  {
608  $uc = json_decode(json_encode($this->‪getBackendUser()->uc), true);
609  $collapseState = $uc['BackendComponents']['States']['typo3-module-menu']['collapsed'] ?? false;
610 
611  return $collapseState === true || $collapseState === 'true';
612  }
613 
619  public function ‪getModuleMenu(): ResponseInterface
620  {
621  return new JsonResponse(['menu' => $this->‪generateModuleMenu()]);
622  }
623 
629  public function ‪getTopbar(): ResponseInterface
630  {
631  return new JsonResponse(['topbar' => $this->‪renderTopbar()]);
632  }
633 
640  protected function ‪getFluidTemplateObject($templatePathAndFileName = null)
641  {
642  $view = GeneralUtility::makeInstance(StandaloneView::class);
643  $view->setPartialRootPaths([GeneralUtility::getFileAbsFileName('EXT:backend/Resources/Private/Partials')]);
644  if ($templatePathAndFileName) {
645  $view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName($templatePathAndFileName));
646  }
647  return $view;
648  }
649 
655  protected function ‪getLanguageService()
656  {
657  return ‪$GLOBALS['LANG'];
658  }
659 
665  protected function ‪getBackendUser()
666  {
667  return ‪$GLOBALS['BE_USER'];
668  }
669 
675  protected function ‪getDocumentTemplate()
676  {
677  return ‪$GLOBALS['TBE_TEMPLATE'];
678  }
679 }
‪TYPO3\CMS\Backend\Controller\BackendController\getModuleMenu
‪ResponseInterface getModuleMenu()
Definition: BackendController.php:604
‪TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface
Definition: ToolbarItemInterface.php:24
‪TYPO3\CMS\Backend\Controller\BackendController\mainAction
‪ResponseInterface mainAction()
Definition: BackendController.php:223
‪TYPO3\CMS\Core\Localization\LanguageService\includeLLFile
‪mixed includeLLFile($fileRef, $setGlobal=true, $mergeLocalOntoDefault=false)
Definition: LanguageService.php:260
‪TYPO3\CMS\Core\Utility\PathUtility
Definition: PathUtility.php:23
‪TYPO3\CMS\Backend\Utility\BackendUtility\isModuleSetInTBE_MODULES
‪static bool isModuleSetInTBE_MODULES($modName)
Definition: BackendUtility.php:3763
‪TYPO3\CMS\Backend\Controller\BackendController\$moduleLoader
‪TYPO3 CMS Backend Module ModuleLoader $moduleLoader
Definition: BackendController.php:93
‪TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger
‪static bool canBeInterpretedAsInteger($var)
Definition: MathUtility.php:73
‪TYPO3\CMS\Backend\Controller\BackendController\getLanguageService
‪TYPO3 CMS Core Localization LanguageService getLanguageService()
Definition: BackendController.php:640
‪TYPO3\CMS\Backend\Controller\BackendController\$css
‪string $css
Definition: BackendController.php:57
‪TYPO3\CMS\Backend\Controller\BackendController\$pageRenderer
‪PageRenderer $pageRenderer
Definition: BackendController.php:97
‪TYPO3\CMS\Backend\Controller\BackendController\renderToolbar
‪string renderToolbar()
Definition: BackendController.php:321
‪TYPO3\CMS\Backend\Controller\BackendController\getBackendUser
‪TYPO3 CMS Core Authentication BackendUserAuthentication getBackendUser()
Definition: BackendController.php:650
‪TYPO3\CMS\Core\Configuration\ExtensionConfiguration
Definition: ExtensionConfiguration.php:42
‪TYPO3\CMS\Backend\Controller\BackendController\getFluidTemplateObject
‪TYPO3 CMS Fluid View StandaloneView getFluidTemplateObject($templatePathAndFileName=null)
Definition: BackendController.php:625
‪TYPO3\CMS\Backend\Controller\BackendController\$templatePath
‪string $templatePath
Definition: BackendController.php:81
‪TYPO3\CMS\Backend\Controller\BackendController\setStartupModule
‪string setStartupModule()
Definition: BackendController.php:505
‪TYPO3\CMS\Core\Utility\MathUtility\forceIntegerInRange
‪static int forceIntegerInRange($theInt, $min, $max=2000000000, $defaultValue=0)
Definition: MathUtility.php:31
‪TYPO3\CMS\Backend\Controller\BackendController\$deprecatedPublicMethods
‪array $deprecatedPublicMethods
Definition: BackendController.php:47
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\getTSConfig
‪array getTSConfig($objectString=null, $config=null)
Definition: BackendUserAuthentication.php:1232
‪TYPO3\CMS\Backend\Controller\BackendController\generateJavascript
‪generateJavascript()
Definition: BackendController.php:381
‪TYPO3\CMS\Backend\Controller\BackendController\executeHook
‪executeHook($identifier, array $hookConfiguration=[])
Definition: BackendController.php:567
‪TYPO3\CMS\Core\Database\Query\Restriction\BackendWorkspaceRestriction
Definition: BackendWorkspaceRestriction.php:28
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:31
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:23
‪TYPO3\CMS\Backend\Controller\BackendController\$content
‪string $content
Definition: BackendController.php:53
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:35
‪TYPO3\CMS\Backend\Controller\BackendController\renderTopbar
‪string renderTopbar()
Definition: BackendController.php:275
‪TYPO3\CMS\Backend\Controller\BackendController\$toolbarItems
‪array $toolbarItems
Definition: BackendController.php:73
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:35
‪TYPO3\CMS\Backend\Module\ModuleLoader
Definition: ModuleLoader.php:32
‪TYPO3\CMS\Backend\Controller\BackendController\getDocumentTemplate
‪TYPO3 CMS Backend Template DocumentTemplate getDocumentTemplate()
Definition: BackendController.php:660
‪TYPO3\CMS\Backend\Controller\BackendController
Definition: BackendController.php:43
‪TYPO3\CMS\Backend\Controller\BackendController\addCss
‪addCss($css)
Definition: BackendController.php:548
‪TYPO3\CMS\Core\Compatibility\PublicMethodDeprecationTrait
Definition: PublicMethodDeprecationTrait.php:68
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:72
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordWSOL
‪static array getRecordWSOL( $table, $uid, $fields=' *', $where='', $useDeleteClause=true, $unsetMovePointers=false)
Definition: BackendUtility.php:174
‪TYPO3\CMS\Backend\Controller\BackendController\getCollapseStateOfMenu
‪getCollapseStateOfMenu()
Definition: BackendController.php:591
‪TYPO3\CMS\Core\Type\File\ImageInfo
Definition: ImageInfo.php:25
‪TYPO3\CMS\Backend\Domain\Repository\Module\BackendModuleRepository
Definition: BackendModuleRepository.php:30
‪debug
‪debug($variable='', $title=null, $group=null)
Definition: GlobalDebugFunctions.php:5
‪TYPO3\CMS\Backend\Controller\BackendController\$partialPath
‪string $partialPath
Definition: BackendController.php:85
‪TYPO3\CMS\Fluid\View\StandaloneView
Definition: StandaloneView.php:32
‪TYPO3\CMS\Core\Type\Bitmask\Permission\CONTENT_EDIT
‪const CONTENT_EDIT
Definition: Permission.php:52
‪TYPO3\CMS\Core\Http\JsonResponse
Definition: JsonResponse.php:25
‪TYPO3\CMS\Backend\Controller\BackendController\$cssFiles
‪array $cssFiles
Definition: BackendController.php:61
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Backend\Utility\BackendUtility\workspaceOL
‪static workspaceOL($table, &$row, $wsid=-99, $unsetMovePointers=false)
Definition: BackendUtility.php:4048
‪TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction
Definition: DeletedRestriction.php:26
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_EDIT
‪const PAGE_EDIT
Definition: Permission.php:37
‪TYPO3\CMS\Backend\Controller\BackendController\handlePageEditing
‪handlePageEditing()
Definition: BackendController.php:431
‪TYPO3\CMS\Backend\Template\DocumentTemplate\render
‪string render($title, $content)
Definition: DocumentTemplate.php:559
‪TYPO3\CMS\Backend\Controller\BackendController\$debug
‪bool $debug
Definition: BackendController.php:77
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:21
‪TYPO3\CMS\Backend\Controller\BackendController\render
‪render()
Definition: BackendController.php:232
‪TYPO3\CMS\Backend\Controller\BackendController\__construct
‪__construct()
Definition: BackendController.php:106
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:44
‪$extConf
‪$extConf
Definition: ext_localconf.php:50
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Backend\Controller\BackendController\initializeToolbarItems
‪initializeToolbarItems()
Definition: BackendController.php:188
‪TYPO3\CMS\Core\Utility\PathUtility\getAbsoluteWebPath
‪static string getAbsoluteWebPath($targetPath)
Definition: PathUtility.php:42
‪TYPO3\CMS\Backend\Controller\BackendController\$backendModuleRepository
‪TYPO3 CMS Backend Domain Repository Module BackendModuleRepository $backendModuleRepository
Definition: BackendController.php:89
‪TYPO3\CMS\Backend\Utility\BackendUtility\openPageTree
‪static openPageTree($pid, $clearExpansion)
Definition: BackendUtility.php:532
‪TYPO3\CMS\Backend\Controller\BackendController\generateModuleMenu
‪string generateModuleMenu()
Definition: BackendController.php:581
‪TYPO3\CMS\Backend\Controller
Definition: AbstractFormEngineAjaxController.php:3
‪TYPO3\CMS\Backend\Controller\BackendController\$jsFiles
‪array $jsFiles
Definition: BackendController.php:69
‪TYPO3\CMS\Backend\Controller\BackendController\$js
‪string $js
Definition: BackendController.php:65
‪TYPO3\CMS\Backend\Controller\BackendController\getTopbar
‪ResponseInterface getTopbar()
Definition: BackendController.php:614
‪TYPO3\CMS\Backend\Controller\BackendController\$iconFactory
‪IconFactory $iconFactory
Definition: BackendController.php:101
‪TYPO3\CMS\Core\Http\HtmlResponse
Definition: HtmlResponse.php:25