‪TYPO3CMS  9.5
TreeController.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;
39 
45 {
51  protected ‪$useNavTitle = false;
52 
58  protected ‪$addIdAsPrefix = false;
59 
65  protected ‪$addDomainName = false;
66 
72  protected ‪$showMountPathAboveMounts = false;
73 
79  protected ‪$backgroundColors = [];
80 
86  protected ‪$hiddenRecords = [];
87 
93  protected ‪$expandedState = [];
94 
100  protected ‪$iconFactory;
101 
107  protected ‪$levelsToFetch = 2;
108 
113  protected ‪$expandAllNodes = false;
114 
118  public function ‪__construct()
119  {
120  $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
121  }
122 
123  protected function ‪initializeConfiguration()
124  {
125  $userTsConfig = $this->‪getBackendUser()->‪getTSConfig();
126  $this->hiddenRecords = GeneralUtility::intExplode(
127  ',',
128  $userTsConfig['options.']['hideRecords.']['pages'] ?? '',
129  true
130  );
131  $this->backgroundColors = $userTsConfig['options.']['pageTree.']['backgroundColor.'] ?? [];
132  $this->addIdAsPrefix = (bool)($userTsConfig['options.']['pageTree.']['showPageIdWithTitle'] ?? false);
133  $this->addDomainName = (bool)($userTsConfig['options.']['pageTree.']['showDomainNameWithTitle'] ?? false);
134  $this->useNavTitle = (bool)($userTsConfig['options.']['pageTree.']['showNavTitle'] ?? false);
135  $this->showMountPathAboveMounts = (bool)($userTsConfig['options.']['pageTree.']['showPathAboveMounts'] ?? false);
136  $backendUserConfiguration = GeneralUtility::makeInstance(BackendUserConfiguration::class);
137  $this->expandedState = $backendUserConfiguration->get('BackendComponents.States.Pagetree');
138  if (is_object($this->expandedState) && is_object($this->expandedState->stateHash)) {
139  $this->expandedState = (array)$this->expandedState->stateHash;
140  } else {
141  $this->expandedState = $this->expandedState['stateHash'] ?: [];
142  }
143  }
144 
150  public function ‪fetchConfigurationAction(): ResponseInterface
151  {
152  $configuration = [
153  'allowRecursiveDelete' => !empty($this->‪getBackendUser()->uc['recursiveDelete']),
154  'allowDragMove' => $this->‪isDragMoveAllowed(),
155  'doktypes' => $this->‪getDokTypes(),
156  'displayDeleteConfirmation' => $this->‪getBackendUser()->‪jsConfirmation(‪JsConfirmation::DELETE),
157  'temporaryMountPoint' => $this->‪getMountPointPath((int)($this->‪getBackendUser()->uc['pageTree_temporaryMountPoint'] ?? 0)),
158  ];
159 
160  return new JsonResponse($configuration);
161  }
162 
171  protected function ‪getDokTypes(): array
172  {
173  $backendUser = $this->‪getBackendUser();
174  $doktypeLabelMap = [];
175  foreach (‪$GLOBALS['TCA']['pages']['columns']['doktype']['config']['items'] as $doktypeItemConfig) {
176  if ($doktypeItemConfig[1] === '--div--') {
177  continue;
178  }
179  $doktypeLabelMap[$doktypeItemConfig[1]] = $doktypeItemConfig[0];
180  }
181  $doktypes = GeneralUtility::intExplode(',', $backendUser->getTSConfig()['options.']['pageTree.']['doktypesToShowInNewPageDragArea'] ?? '', true);
182  ‪$output = [];
183  $allowedDoktypes = GeneralUtility::intExplode(',', $backendUser->groupData['pagetypes_select'], true);
184  $isAdmin = $backendUser->isAdmin();
185  // Early return if backend user may not create any doktype
186  if (!$isAdmin && empty($allowedDoktypes)) {
187  return ‪$output;
188  }
189  foreach ($doktypes as $doktype) {
190  if (!$isAdmin && !in_array($doktype, $allowedDoktypes, true)) {
191  continue;
192  }
193  $label = htmlspecialchars($this->‪getLanguageService()->sL($doktypeLabelMap[$doktype]));
194  ‪$output[] = [
195  'nodeType' => $doktype,
196  'icon' => ‪$GLOBALS['TCA']['pages']['ctrl']['typeicon_classes'][$doktype] ?? '',
197  'title' => $label,
198  'tooltip' => $label
199  ];
200  }
201  return ‪$output;
202  }
203 
210  public function ‪fetchDataAction(ServerRequestInterface $request): ResponseInterface
211  {
213 
214  $items = [];
215  if (!empty($request->getQueryParams()['pid'])) {
216  // Fetching a part of a page tree
217  $entryPoints = $this->‪getAllEntryPointPageTrees((int)$request->getQueryParams()['pid']);
218  $mountPid = (int)($request->getQueryParams()['mount'] ?? 0);
219  $parentDepth = (int)($request->getQueryParams()['pidDepth'] ?? 0);
220  $this->levelsToFetch = $parentDepth + ‪$this->levelsToFetch;
221  foreach ($entryPoints as $page) {
222  $items = array_merge($items, $this->‪pagesToFlatArray($page, $mountPid, $parentDepth));
223  }
224  } else {
225  $entryPoints = $this->‪getAllEntryPointPageTrees();
226  foreach ($entryPoints as $page) {
227  $items = array_merge($items, $this->‪pagesToFlatArray($page, (int)$page['uid']));
228  }
229  }
230 
231  return new ‪JsonResponse($items);
232  }
233 
240  public function ‪filterDataAction(ServerRequestInterface $request): ResponseInterface
241  {
242  $searchQuery = $request->getQueryParams()['q'] ?? '';
243  if (trim($searchQuery) === '') {
244  return new ‪JsonResponse([]);
245  }
246 
248  $this->expandAllNodes = true;
249 
250  $items = [];
251  $entryPoints = $this->‪getAllEntryPointPageTrees(0, $searchQuery);
252 
253  foreach ($entryPoints as $page) {
254  if (!empty($page)) {
255  $items = array_merge($items, $this->‪pagesToFlatArray($page, (int)$page['uid']));
256  }
257  }
258 
259  return new ‪JsonResponse($items);
260  }
261 
269  public function ‪setTemporaryMountPointAction(ServerRequestInterface $request): ResponseInterface
270  {
271  if (empty($request->getParsedBody()['pid'])) {
272  throw new \RuntimeException(
273  'Required "pid" parameter is missing.',
274  1511792197
275  );
276  }
277  $pid = (int)$request->getParsedBody()['pid'];
278 
279  $this->‪getBackendUser()->uc['pageTree_temporaryMountPoint'] = $pid;
280  $this->‪getBackendUser()->‪writeUC();
281  $response = [
282  'mountPointPath' => $this->‪getMountPointPath($pid)
283  ];
284  return new ‪JsonResponse($response);
285  }
286 
297  protected function ‪pagesToFlatArray(array $page, int $entryPoint, int $depth = 0, array $inheritedData = []): array
298  {
299  $backendUser = $this->‪getBackendUser();
300  $pageId = (int)$page['uid'];
301  if (in_array($pageId, $this->hiddenRecords, true)) {
302  return [];
303  }
304  if ($pageId === 0 && !$backendUser->isAdmin()) {
305  return [];
306  }
307 
308  $stopPageTree = !empty($page['php_tree_stop']) && $depth > 0;
309  $identifier = $entryPoint . '_' . $pageId;
310  $expanded = !empty($page['expanded'])
311  || (isset($this->expandedState[$identifier]) && $this->expandedState[$identifier])
312  || $this->expandAllNodes;
313 
314  $backgroundColor = !empty($this->backgroundColors[$pageId]) ? $this->backgroundColors[$pageId] : ($inheritedData['backgroundColor'] ?? '');
315 
316  $suffix = '';
317  $prefix = '';
318  $nameSourceField = 'title';
319  $visibleText = $page['title'];
320  $tooltip = ‪BackendUtility::titleAttribForPages($page, '', false);
321  if ($pageId !== 0) {
322  $icon = $this->iconFactory->getIconForRecord('pages', $page, ‪Icon::SIZE_SMALL);
323  } else {
324  $icon = $this->iconFactory->getIcon('apps-pagetree-root', ‪Icon::SIZE_SMALL);
325  }
326 
327  if ($this->useNavTitle && trim($page['nav_title'] ?? '') !== '') {
328  $nameSourceField = 'nav_title';
329  $visibleText = $page['nav_title'];
330  }
331  if (trim($visibleText) === '') {
332  $visibleText = htmlspecialchars('[' . $this->‪getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.no_title') . ']');
333  }
334 
335  if ($this->addDomainName && $page['is_siteroot']) {
336  $domain = $this->‪getDomainNameForPage($pageId);
337  $suffix = $domain !== '' ? ' [' . $domain . ']' : '';
338  }
339 
340  $lockInfo = ‪BackendUtility::isRecordLocked('pages', $pageId);
341  if (is_array($lockInfo)) {
342  $tooltip .= ' - ' . $lockInfo['msg'];
343  }
344  if ($this->addIdAsPrefix) {
345  $prefix = htmlspecialchars('[' . $pageId . '] ');
346  }
347 
348  $items = [];
349  $item = [
350  // Used to track if the tree item is collapsed or not
351  'stateIdentifier' => $identifier,
352  'identifier' => $pageId,
353  'depth' => $depth,
354  'tip' => htmlspecialchars($tooltip),
355  'icon' => $icon->getIdentifier(),
356  'name' => $visibleText,
357  'nameSourceField' => $nameSourceField,
358  'alias' => htmlspecialchars($page['alias'] ?? ''),
359  'selectable' => true,
360  'checked' => false,
361  'mountPoint' => $entryPoint,
362  'workspaceId' => !empty($page['t3ver_oid']) ? $page['t3ver_oid'] : $pageId,
363  'allowDelete' => $backendUser->doesUserHaveAccess($page, ‪Permission::PAGE_DELETE),
364  'allowEdit' => $backendUser->doesUserHaveAccess($page, ‪Permission::PAGE_EDIT)
365  && $backendUser->check('tables_modify', 'pages')
366  && $backendUser->checkLanguageAccess(0)
367  ];
368 
369  if (!empty($page['_children']) || $this->‪getPageTreeRepository()->hasChildren($pageId)) {
370  $item['hasChildren'] = true;
371  if ($depth >= $this->levelsToFetch) {
372  $page = $this->‪getPageTreeRepository()->getTreeLevels($page, 1);
373  }
374  }
375  if (!empty($prefix)) {
376  $item['prefix'] = htmlspecialchars($prefix);
377  }
378  if (!empty($suffix)) {
379  $item['suffix'] = htmlspecialchars($suffix);
380  }
381  if (is_array($lockInfo)) {
382  $item['locked'] = true;
383  }
384  if ($icon->getOverlayIcon()) {
385  $item['overlayIcon'] = $icon->getOverlayIcon()->getIdentifier();
386  }
387  if ($expanded && is_array($page['_children']) && !empty($page['_children'])) {
388  $item['expanded'] = $expanded;
389  }
390  if ($backgroundColor) {
391  $item['backgroundColor'] = htmlspecialchars($backgroundColor);
392  }
393  if ($stopPageTree) {
394  $item['stopPageTree'] = $stopPageTree;
395  }
396  $class = $this->‪resolvePageCssClassNames($page);
397  if (!empty($class)) {
398  $item['class'] = $class;
399  }
400  if ($depth === 0) {
401  $item['isMountPoint'] = true;
402 
403  if ($this->showMountPathAboveMounts) {
404  $item['readableRootline'] = $this->‪getMountPointPath($pageId);
405  }
406  }
407 
408  $items[] = $item;
409  if (!$stopPageTree && is_array($page['_children']) && !empty($page['_children']) && ($depth < $this->levelsToFetch || $expanded)) {
410  $items[key($items)]['loaded'] = true;
411  foreach ($page['_children'] as $child) {
412  $items = array_merge($items, $this->‪pagesToFlatArray($child, $entryPoint, $depth + 1, ['backgroundColor' => $backgroundColor]));
413  }
414  }
415  return $items;
416  }
417 
418  protected function ‪getPageTreeRepository(): PageTreeRepository
419  {
420  $backendUser = $this->‪getBackendUser();
421  $userTsConfig = $backendUser->getTSConfig();
422  $excludedDocumentTypes = GeneralUtility::intExplode(',', $userTsConfig['options.']['pageTree.']['excludeDoktypes'] ?? '', true);
423 
424  $additionalQueryRestrictions = [];
425  if (!empty($excludedDocumentTypes)) {
426  $additionalQueryRestrictions[] = GeneralUtility::makeInstance(DocumentTypeExclusionRestriction::class, $excludedDocumentTypes);
427  }
428 
429  return GeneralUtility::makeInstance(
430  PageTreeRepository::class,
431  (int)$backendUser->workspace,
432  [],
433  $additionalQueryRestrictions
434  );
435  }
436 
444  protected function ‪getAllEntryPointPageTrees(int $startPid = 0, string $query = ''): array
445  {
446  $backendUser = $this->‪getBackendUser();
447  $entryPointId = $startPid > 0 ? $startPid : (int)($backendUser->uc['pageTree_temporaryMountPoint'] ?? 0);
448  if ($entryPointId > 0) {
449  $entryPointIds = [$entryPointId];
450  } else {
451  //watch out for deleted pages returned as webmount
452  $entryPointIds = array_map('intval', $backendUser->returnWebmounts());
453  $entryPointIds = array_unique($entryPointIds);
454  if (empty($entryPointIds)) {
455  // use a virtual root
456  // the real mount points will be fetched in getNodes() then
457  // since those will be the "sub pages" of the virtual root
458  $entryPointIds = [0];
459  }
460  }
461  if (empty($entryPointIds)) {
462  return [];
463  }
464  $repository = $this->‪getPageTreeRepository();
465 
467  if ($query !== '') {
468  $this->levelsToFetch = 999;
469  $repository->fetchFilteredTree(
470  $query,
471  $this->‪getAllowedMountPoints(),
472  $permClause
473  );
474  }
475 
476  $entryPointRecords = [];
477  foreach ($entryPointIds as $k => $entryPointId) {
478  if (in_array($entryPointId, $this->hiddenRecords, true)) {
479  continue;
480  }
481 
482  if (!empty($this->backgroundColors) && is_array($this->backgroundColors)) {
483  try {
484  $entryPointRootLine = GeneralUtility::makeInstance(RootlineUtility::class, $entryPointId)->get();
485  } catch (RootLineException $e) {
486  $entryPointRootLine = [];
487  }
488  foreach ($entryPointRootLine as $rootLineEntry) {
489  $parentUid = $rootLineEntry['uid'];
490  if (!empty($this->backgroundColors[$parentUid]) && empty($this->backgroundColors[$entryPointId])) {
491  $this->backgroundColors[$entryPointId] = $this->backgroundColors[$parentUid];
492  }
493  }
494  }
495  if ($entryPointId === 0) {
496  $entryPointRecord = [
497  'uid' => 0,
498  'title' => ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] ?: 'TYPO3'
499  ];
500  } else {
501  $entryPointRecord = ‪BackendUtility::getRecordWSOL('pages', $entryPointId, '*', $permClause);
502 
503  if ($entryPointRecord !== null && !$this->‪getBackendUser()->isInWebMount($entryPointId)) {
504  $entryPointRecord = null;
505  }
506  }
507  if ($entryPointRecord) {
508  $entryPointRecord['uid'] = (int)$entryPointRecord['uid'];
509  if ($query === '') {
510  $entryPointRecord = $repository->getTreeLevels($entryPointRecord, $this->levelsToFetch);
511  } else {
512  $entryPointRecord = $repository->getTree((int)$entryPointRecord['uid'], null, $entryPointIds, true);
513  }
514  }
515 
516  if (is_array($entryPointRecord) && !empty($entryPointRecord)) {
517  $entryPointRecords[$k] = $entryPointRecord;
518  }
519  }
520 
521  return $entryPointRecords;
522  }
523 
530  protected function ‪getDomainNameForPage(int $pageId): string
531  {
532  $domain = '';
533  $siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
534  try {
535  $site = $siteFinder->getSiteByRootPageId($pageId);
536  $domain = (string)$site->getBase();
537  } catch (‪SiteNotFoundException $e) {
538  // No site found, let's see if it is a legacy-pseudo-site
539  $pseudoSiteFinder = GeneralUtility::makeInstance(PseudoSiteFinder::class);
540  try {
541  $site = $pseudoSiteFinder->getSiteByRootPageId($pageId);
542  $domain = trim((string)$site->getBase(), '/');
543  } catch (SiteNotFoundException $e) {
544  // No pseudo-site found either
545  }
546  }
547 
548  return $domain;
549  }
550 
557  protected function ‪getMountPointPath(int $uid): string
558  {
559  if ($uid <= 0) {
560  return '';
561  }
562  $rootline = array_reverse(‪BackendUtility::BEgetRootLine($uid));
563  array_shift($rootline);
564  $path = [];
565  foreach ($rootline as $rootlineElement) {
566  $record = ‪BackendUtility::getRecordWSOL('pages', $rootlineElement['uid'], 'title, nav_title', '', true, true);
567  $text = $record['title'];
568  if ($this->useNavTitle && trim($record['nav_title'] ?? '') !== '') {
569  $text = $record['nav_title'];
570  }
571  $path[] = htmlspecialchars($text);
572  }
573  return '/' . implode('/', $path);
574  }
575 
582  protected function ‪resolvePageCssClassNames(array $page): string
583  {
584  $classes = [];
585 
586  if ($page['uid'] === 0) {
587  return '';
588  }
589  $workspaceId = (int)$this->‪getBackendUser()->workspace;
590  if ($workspaceId > 0 && ‪ExtensionManagementUtility::isLoaded('workspaces')) {
591  if ($page['t3ver_oid'] > 0 && (int)$page['t3ver_wsid'] === $workspaceId) {
592  $classes[] = 'ver-element';
593  $classes[] = 'ver-versions';
594  } elseif (
595  $this->‪getWorkspaceService()->hasPageRecordVersions(
596  $workspaceId,
597  $page['t3ver_oid'] ?: $page['uid']
598  )
599  ) {
600  $classes[] = 'ver-versions';
601  }
602  }
603 
604  return implode(' ', $classes);
605  }
606 
612  protected function ‪isDragMoveAllowed(): bool
613  {
614  $backendUser = $this->‪getBackendUser();
615  return $backendUser->isAdmin()
616  || ($backendUser->check('tables_modify', 'pages') && $backendUser->checkLanguageAccess(0));
617  }
618 
624  protected function ‪getAllowedMountPoints(): array
625  {
626  $mountPoints = (int)($this->‪getBackendUser()->uc['pageTree_temporaryMountPoint'] ?? 0);
627  if (!$mountPoints) {
628  $mountPoints = array_map('intval', $this->‪getBackendUser()->returnWebmounts());
629  return array_unique($mountPoints);
630  }
631  return [$mountPoints];
632  }
633 
637  protected function ‪getWorkspaceService(): WorkspaceService
638  {
639  return GeneralUtility::makeInstance(WorkspaceService::class);
640  }
641 
645  protected function ‪getBackendUser(): ‪BackendUserAuthentication
646  {
647  return ‪$GLOBALS['BE_USER'];
648  }
649 
653  protected function ‪getLanguageService(): ?LanguageService
654  {
655  return ‪$GLOBALS['LANG'] ?? null;
656  }
657 }
‪TYPO3\CMS\Backend\Controller\Page\TreeController\$iconFactory
‪IconFactory $iconFactory
Definition: TreeController.php:92
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:29
‪TYPO3\CMS\Core\Database\Query\Restriction\DocumentTypeExclusionRestriction
Definition: DocumentTypeExclusionRestriction.php:25
‪TYPO3\CMS\Backend\Controller\Page\TreeController\getAllowedMountPoints
‪int[] getAllowedMountPoints()
Definition: TreeController.php:614
‪TYPO3\CMS\Backend\Controller\Page\TreeController\getDomainNameForPage
‪string getDomainNameForPage(int $pageId)
Definition: TreeController.php:520
‪TYPO3\CMS\Core\Authentication\AbstractUserAuthentication\writeUC
‪writeUC($variable='')
Definition: AbstractUserAuthentication.php:1172
‪TYPO3\CMS\Backend\Controller\Page\TreeController\pagesToFlatArray
‪array pagesToFlatArray(array $page, int $entryPoint, int $depth=0, array $inheritedData=[])
Definition: TreeController.php:287
‪TYPO3\CMS\Backend\Controller\Page\TreeController\initializeConfiguration
‪initializeConfiguration()
Definition: TreeController.php:113
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\getPagePermsClause
‪string getPagePermsClause($perms)
Definition: BackendUserAuthentication.php:523
‪TYPO3\CMS\Backend\Controller\Page\TreeController\$addDomainName
‪bool $addDomainName
Definition: TreeController.php:62
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:25
‪TYPO3\CMS\Backend\Controller\Page\TreeController\getWorkspaceService
‪WorkspaceService getWorkspaceService()
Definition: TreeController.php:627
‪TYPO3\CMS\Backend\Controller\Page\TreeController\getMountPointPath
‪string getMountPointPath(int $uid)
Definition: TreeController.php:547
‪TYPO3\CMS\Backend\Controller\Page\TreeController\getPageTreeRepository
‪getPageTreeRepository()
Definition: TreeController.php:408
‪TYPO3\CMS\Backend\Controller\Page\TreeController\getLanguageService
‪LanguageService null getLanguageService()
Definition: TreeController.php:643
‪TYPO3\CMS\Core\Utility\RootlineUtility
Definition: RootlineUtility.php:36
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\getTSConfig
‪array getTSConfig($objectString=null, $config=null)
Definition: BackendUserAuthentication.php:1232
‪TYPO3\CMS\Core\Exception\SiteNotFoundException
Definition: SiteNotFoundException.php:25
‪TYPO3\CMS\Core\Site\SiteFinder
Definition: SiteFinder.php:31
‪TYPO3\CMS\Backend\Controller\Page\TreeController
Definition: TreeController.php:45
‪TYPO3\CMS\Backend\Controller\Page\TreeController\$expandedState
‪array $expandedState
Definition: TreeController.php:86
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:31
‪TYPO3\CMS\Backend\Controller\Page\TreeController\filterDataAction
‪ResponseInterface filterDataAction(ServerRequestInterface $request)
Definition: TreeController.php:230
‪TYPO3\CMS\Backend\Controller\Page\TreeController\resolvePageCssClassNames
‪string resolvePageCssClassNames(array $page)
Definition: TreeController.php:572
‪TYPO3\CMS\Backend\Utility\BackendUtility\BEgetRootLine
‪static array BEgetRootLine($uid, $clause='', $workspaceOL=false, array $additionalFields=[])
Definition: BackendUtility.php:374
‪TYPO3\CMS\Backend\Controller\Page
Definition: LocalizationController.php:4
‪TYPO3\CMS\Backend\Controller\Page\TreeController\$levelsToFetch
‪int $levelsToFetch
Definition: TreeController.php:98
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:23
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility
Definition: ExtensionManagementUtility.php:36
‪TYPO3\CMS\Core\Type\Bitmask\JsConfirmation\DELETE
‪const DELETE
Definition: JsConfirmation.php:38
‪TYPO3\CMS\Backend\Controller\Page\TreeController\$backgroundColors
‪array $backgroundColors
Definition: TreeController.php:74
‪TYPO3\CMS\Core\Site\PseudoSiteFinder
Definition: PseudoSiteFinder.php:39
‪TYPO3\CMS\Backend\Controller\Page\TreeController\isDragMoveAllowed
‪bool isDragMoveAllowed()
Definition: TreeController.php:602
‪TYPO3\CMS\Backend\Configuration\BackendUserConfiguration
Definition: BackendUserConfiguration.php:28
‪TYPO3\CMS\Backend\Controller\Page\TreeController\fetchConfigurationAction
‪ResponseInterface fetchConfigurationAction()
Definition: TreeController.php:140
‪TYPO3\CMS\Backend\Utility\BackendUtility\titleAttribForPages
‪static string titleAttribForPages($row, $perms_clause='', $includeAttrib=true)
Definition: BackendUtility.php:1502
‪TYPO3\CMS\Backend\Controller\Page\TreeController\fetchDataAction
‪ResponseInterface fetchDataAction(ServerRequestInterface $request)
Definition: TreeController.php:200
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\isLoaded
‪static bool isLoaded($key, $exitOnError=null)
Definition: ExtensionManagementUtility.php:115
‪TYPO3\CMS\Backend\Controller\Page\TreeController\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: TreeController.php:635
‪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\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\Workspaces\Service\WorkspaceService
Definition: WorkspaceService.php:34
‪$output
‪$output
Definition: annotationChecker.php:113
‪TYPO3\CMS\Backend\Controller\Page\TreeController\__construct
‪__construct()
Definition: TreeController.php:108
‪TYPO3\CMS\Backend\Controller\Page\TreeController\getDokTypes
‪array getDokTypes()
Definition: TreeController.php:161
‪TYPO3\CMS\Backend\Controller\Page\TreeController\$expandAllNodes
‪bool $expandAllNodes
Definition: TreeController.php:103
‪TYPO3\CMS\Core\Http\JsonResponse
Definition: JsonResponse.php:25
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Backend\Tree\Repository\PageTreeRepository
Definition: PageTreeRepository.php:39
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_EDIT
‪const PAGE_EDIT
Definition: Permission.php:37
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_DELETE
‪const PAGE_DELETE
Definition: Permission.php:42
‪TYPO3\CMS\Backend\Controller\Page\TreeController\$addIdAsPrefix
‪bool $addIdAsPrefix
Definition: TreeController.php:56
‪TYPO3\CMS\Core\Exception\Page\RootLineException
Definition: RootLineException.php:24
‪TYPO3\CMS\Backend\Controller\Page\TreeController\$hiddenRecords
‪array $hiddenRecords
Definition: TreeController.php:80
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:29
‪TYPO3\CMS\Backend\Controller\Page\TreeController\getAllEntryPointPageTrees
‪array getAllEntryPointPageTrees(int $startPid=0, string $query='')
Definition: TreeController.php:434
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Backend\Controller\Page\TreeController\setTemporaryMountPointAction
‪ResponseInterface setTemporaryMountPointAction(ServerRequestInterface $request)
Definition: TreeController.php:259
‪TYPO3\CMS\Backend\Controller\Page\TreeController\$showMountPathAboveMounts
‪bool $showMountPathAboveMounts
Definition: TreeController.php:68
‪TYPO3\CMS\Core\Type\Bitmask\JsConfirmation
Definition: JsConfirmation.php:24
‪TYPO3\CMS\Backend\Controller\Page\TreeController\$useNavTitle
‪bool $useNavTitle
Definition: TreeController.php:50
‪TYPO3\CMS\Backend\Utility\BackendUtility\isRecordLocked
‪static array bool isRecordLocked($table, $uid)
Definition: BackendUtility.php:3397
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\jsConfirmation
‪bool jsConfirmation($bitmask)
Definition: BackendUserAuthentication.php:1357