‪TYPO3CMS  ‪main
PageProvider.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
25 
30 {
34  protected ‪$table = 'pages';
35 
39  protected ‪$itemsConfiguration = [
40  'view' => [
41  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.view',
42  'iconIdentifier' => 'actions-view-page',
43  'callbackAction' => 'viewRecord',
44  ],
45  'edit' => [
46  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.edit',
47  'iconIdentifier' => 'actions-page-open',
48  'callbackAction' => 'editRecord',
49  ],
50  'new' => [
51  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.newSubpage',
52  'iconIdentifier' => 'actions-page-new',
53  'callbackAction' => 'newRecord',
54  ],
55  'info' => [
56  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.info',
57  'iconIdentifier' => 'actions-document-info',
58  'callbackAction' => 'openInfoPopUp',
59  ],
60  'divider1' => [
61  'type' => 'divider',
62  ],
63  'copy' => [
64  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.copy',
65  'iconIdentifier' => 'actions-edit-copy',
66  'callbackAction' => 'copy',
67  ],
68  'copyRelease' => [
69  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.copy',
70  'iconIdentifier' => 'actions-edit-copy-release',
71  'callbackAction' => 'clipboardRelease',
72  ],
73  'cut' => [
74  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.cut',
75  'iconIdentifier' => 'actions-edit-cut',
76  'callbackAction' => 'cut',
77  ],
78  'cutRelease' => [
79  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.cutrelease',
80  'iconIdentifier' => 'actions-edit-cut-release',
81  'callbackAction' => 'clipboardRelease',
82  ],
83  'pasteAfter' => [
84  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.pasteafter',
85  'iconIdentifier' => 'actions-document-paste-after',
86  'callbackAction' => 'pasteAfter',
87  ],
88  'pasteInto' => [
89  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.pasteinto',
90  'iconIdentifier' => 'actions-document-paste-into',
91  'callbackAction' => 'pasteInto',
92  ],
93  'divider2' => [
94  'type' => 'divider',
95  ],
96  'more' => [
97  'type' => 'submenu',
98  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.more',
99  'iconIdentifier' => '',
100  'callbackAction' => 'openSubmenu',
101  'childItems' => [
102  'newWizard' => [
103  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_misc.xlf:CM_newWizard',
104  'iconIdentifier' => 'actions-page-new',
105  'callbackAction' => 'newPageWizard',
106  ],
107  'pagesSort' => [
108  'label' => 'LLL:EXT:backend/Resources/Private/Language/locallang_pages_sort.xlf:title',
109  'iconIdentifier' => 'actions-page-move',
110  'callbackAction' => 'pagesSort',
111  ],
112  'pagesNewMultiple' => [
113  'label' => 'LLL:EXT:backend/Resources/Private/Language/locallang_pages_new.xlf:title',
114  'iconIdentifier' => 'apps-pagetree-drag-move-between',
115  'callbackAction' => 'pagesNewMultiple',
116  ],
117  'mountAsTreeRoot' => [
118  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.tempMountPoint',
119  'iconIdentifier' => 'actions-pagetree-mountroot',
120  'callbackAction' => 'mountAsTreeRoot',
121  ],
122  'showInMenus' => [
123  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_misc.xlf:CM_showInMenus',
124  'iconIdentifier' => 'actions-view',
125  'callbackAction' => 'showInMenus',
126  ],
127  'hideInMenus' => [
128  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_misc.xlf:CM_hideInMenus',
129  'iconIdentifier' => 'actions-ban',
130  'callbackAction' => 'hideInMenus',
131  ],
132  ],
133  ],
134  'divider3' => [
135  'type' => 'divider',
136  ],
137  'enable' => [
138  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:enable',
139  'iconIdentifier' => 'actions-edit-unhide',
140  'callbackAction' => 'enableRecord',
141  ],
142  'disable' => [
143  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:disable',
144  'iconIdentifier' => 'actions-edit-hide',
145  'callbackAction' => 'disableRecord',
146  ],
147  'delete' => [
148  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.delete',
149  'iconIdentifier' => 'actions-edit-delete',
150  'callbackAction' => 'deleteRecord',
151  ],
152  'history' => [
153  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_misc.xlf:CM_history',
154  'iconIdentifier' => 'actions-document-history-open',
155  'callbackAction' => 'openHistoryPopUp',
156  ],
157  'clearCache' => [
158  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.clear_cache',
159  'iconIdentifier' => 'actions-system-cache-clear',
160  'callbackAction' => 'clearCache',
161  ],
162  ];
163 
167  protected ‪$languageAccess = false;
168 
172  public function ‪canHandle(): bool
173  {
174  return $this->table === 'pages';
175  }
176 
177  public function ‪getPriority(): int
178  {
179  return 100;
180  }
181 
182  protected function ‪canRender(string $itemName, string $type): bool
183  {
184  if (in_array($type, ['divider', 'submenu'], true)) {
185  return true;
186  }
187  if (in_array($itemName, $this->disabledItems, true)) {
188  return false;
189  }
190  $canRender = false;
191  switch ($itemName) {
192  case 'view':
193  $canRender = $this->‪canBeViewed();
194  break;
195  case 'edit':
196  $canRender = $this->‪canBeEdited();
197  break;
198  case 'new':
199  case 'newWizard':
200  case 'pagesNewMultiple':
201  $canRender = $this->‪canBeCreated();
202  break;
203  case 'info':
204  $canRender = $this->‪canShowInfo();
205  break;
206  case 'enable':
207  $canRender = $this->‪canBeEnabled();
208  break;
209  case 'disable':
210  $canRender = $this->‪canBeDisabled();
211  break;
212  case 'showInMenus':
213  $canRender = $this->‪canBeToggled('nav_hide', 1);
214  break;
215  case 'hideInMenus':
216  $canRender = $this->‪canBeToggled('nav_hide', 0);
217  break;
218  case 'delete':
219  $canRender = $this->‪canBeDeleted();
220  break;
221  case 'history':
222  $canRender = $this->‪canShowHistory();
223  break;
224  case 'pagesSort':
225  $canRender = $this->‪canBeSorted();
226  break;
227  case 'mountAsTreeRoot':
228  $canRender = !$this->‪isRoot();
229  break;
230  case 'copy':
231  $canRender = $this->‪canBeCopied();
232  break;
233  case 'copyRelease':
234  $canRender = $this->‪isRecordInClipboard('copy');
235  break;
236  case 'cut':
237  $canRender = $this->‪canBeCut() && !$this->‪isRecordInClipboard('cut');
238  break;
239  case 'cutRelease':
240  $canRender = $this->‪isRecordInClipboard('cut');
241  break;
242  case 'pasteAfter':
243  $canRender = $this->‪canBePastedAfter();
244  break;
245  case 'pasteInto':
246  $canRender = $this->‪canBePastedInto();
247  break;
248  case 'clearCache':
249  $canRender = $this->‪canClearCache();
250  break;
251  }
252  return $canRender;
253  }
254 
258  protected function ‪initPermissions()
259  {
260  $this->pagePermissions = new Permission($this->backendUser->calcPerms($this->record));
261  $this->languageAccess = $this->‪hasLanguageAccess();
262  }
263 
267  protected function ‪canBeCreated(): bool
268  {
269  if (!$this->backendUser->checkLanguageAccess(0)) {
270  return false;
271  }
272  if (isset(‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField'])
273  && !in_array($this->record[‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField']] ?? false, [0, -1])
274  ) {
275  return false;
276  }
277  if (!$this->backendUser->check('tables_modify', $this->table)) {
278  return false;
279  }
281  }
282 
286  protected function ‪canBeEdited(): bool
287  {
288  if (!$this->languageAccess) {
289  return false;
290  }
291  if ($this->‪isRoot()) {
292  return false;
293  }
294  if (isset(‪$GLOBALS['TCA'][$this->table]['ctrl']['readOnly']) && ‪$GLOBALS['TCA'][$this->table]['ctrl']['readOnly']) {
295  return false;
296  }
297  if ($this->backendUser->isAdmin()) {
298  return true;
299  }
300  if (isset(‪$GLOBALS['TCA'][$this->table]['ctrl']['adminOnly']) && ‪$GLOBALS['TCA'][$this->table]['ctrl']['adminOnly']) {
301  return false;
302  }
303  if (!$this->backendUser->check('tables_modify', $this->table)) {
304  return false;
305  }
307  }
308 
312  protected function ‪isRecordLocked(): bool
313  {
314  return (bool)$this->record['editlock'];
315  }
316 
320  protected function ‪canBeCut(): bool
321  {
322  if (!$this->languageAccess) {
323  return false;
324  }
325  if (isset(‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField'])
326  && !in_array($this->record[‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField']] ?? false, [0, -1])
327  ) {
328  return false;
329  }
330  if (!$this->backendUser->check('tables_modify', $this->table)) {
331  return false;
332  }
333  return !$this->‪isWebMount()
334  && $this->‪canBeEdited()
335  && !$this->‪isDeletePlaceholder();
336  }
337 
341  protected function ‪canBeCopied(): bool
342  {
343  if (!$this->languageAccess) {
344  return false;
345  }
346  if (isset(‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField'])
347  && !in_array($this->record[‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField']] ?? false, [0, -1])
348  ) {
349  return false;
350  }
351  if (!$this->backendUser->check('tables_select', $this->table)) {
352  return false;
353  }
354  return !$this->‪isRoot()
355  && !$this->‪isWebMount()
356  && !$this->‪isRecordInClipboard('copy')
358  && !$this->‪isDeletePlaceholder();
359  }
360 
364  protected function ‪canBePastedInto(): bool
365  {
366  if (!$this->languageAccess) {
367  return false;
368  }
369  $clipboardElementCount = count($this->clipboard->elFromTable($this->table));
370 
371  return $clipboardElementCount
372  && $this->‪canBeCreated()
373  && !$this->‪isDeletePlaceholder();
374  }
375 
379  protected function ‪canBePastedAfter(): bool
380  {
381  if (!$this->languageAccess) {
382  return false;
383  }
384  $clipboardElementCount = count($this->clipboard->elFromTable($this->table));
385  return $clipboardElementCount
386  && $this->‪canBeCreated()
387  && !$this->‪isDeletePlaceholder();
388  }
389 
393  protected function ‪canBeSorted(): bool
394  {
395  if (!$this->languageAccess) {
396  return false;
397  }
398  return $this->backendUser->check('tables_modify', $this->table)
400  && !$this->‪isDeletePlaceholder()
401  && $this->backendUser->workspace === 0;
402  }
403 
407  protected function ‪canBeDeleted(): bool
408  {
409  if (!$this->languageAccess) {
410  return false;
411  }
412  return !$this->‪isRoot()
413  && !$this->‪isDeletePlaceholder()
414  && !$this->‪isRecordLocked()
415  && !$this->‪isDeletionDisabledInTS()
417  }
418 
422  protected function ‪canBeViewed(): bool
423  {
424  return !$this->‪isRoot()
425  && !$this->‪isDeleted()
426  && !$this->‪isExcludedDoktype()
427  && $this->‪previewLinkCanBeBuild();
428  }
429 
433  protected function ‪canShowInfo(): bool
434  {
435  return !$this->‪isRoot();
436  }
437 
441  protected function ‪canClearCache(): bool
442  {
443  return !$this->‪isRoot()
444  && ($this->backendUser->isAdmin() || ($this->backendUser->getTSConfig()['options.']['clearCache.']['pages'] ?? false));
445  }
446 
450  protected function ‪isDeleted(): bool
451  {
452  return !empty($this->record['deleted']) || $this->‪isDeletePlaceholder();
453  }
454 
460  protected function ‪isRoot()
461  {
462  return (int)$this->identifier === 0;
463  }
464 
470  protected function ‪isWebMount()
471  {
472  return in_array($this->identifier, $this->backendUser->returnWebmounts());
473  }
474 
475  protected function ‪getAdditionalAttributes(string $itemName): array
476  {
477  $attributes = [];
478  if ($itemName === 'view') {
479  $attributes += $this->‪getViewAdditionalAttributes();
480  }
481  if ($itemName === 'enable' || $itemName === 'disable') {
482  $attributes += $this->‪getEnableDisableAdditionalAttributes();
483  }
484  if ($itemName === 'delete') {
485  $attributes += $this->‪getDeleteAdditionalAttributes();
486  }
487  if ($itemName === 'pasteInto') {
488  $attributes += $this->‪getPasteAdditionalAttributes('into');
489  }
490  if ($itemName === 'pasteAfter') {
491  $attributes += $this->‪getPasteAdditionalAttributes('after');
492  }
493  if ($itemName === 'pagesSort') {
494  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
495  $attributes += [
496  'data-pages-sort-url' => (string)$uriBuilder->buildUriFromRoute('pages_sort', ['id' => $this->record['uid'] ?? null]),
497  ];
498  }
499  if ($itemName === 'newWizard') {
500  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
501  $attributes += [
502  'data-pages-new-wizard-url' => (string)$uriBuilder->buildUriFromRoute('db_new_pages', ['id' => $this->record['uid'] ?? 0]),
503  ];
504  }
505  if ($itemName === 'pagesNewMultiple') {
506  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
507  $attributes += [
508  'data-pages-new-multiple-url' => (string)$uriBuilder->buildUriFromRoute('pages_new', ['id' => $this->record['uid'] ?? 0]),
509  ];
510  }
511  if ($itemName === 'edit') {
512  $attributes = [
513  'data-pages-language-uid' => $this->record[$this->‪getLanguageField()] ?? null,
514  ];
515  }
516  return $attributes;
517  }
518 
519  protected function ‪getPreviewPid(): int
520  {
521  return (int)($this->record[$this->‪getLanguageField()] ?? 0) === 0 ? (int)$this->record['uid'] : (int)$this->record['l10n_parent'];
522  }
523 
527  protected function ‪getViewLink(): string
528  {
529  return (string)‪PreviewUriBuilder::create($this->‪getPreviewPid())
530  ->withLanguage((int)($this->record[$this->‪getLanguageField()] ?? 0))
531  ->buildUri();
532  }
533 
538  protected function ‪canBeToggled(string $fieldName, int $value): bool
539  {
540  if (!$this->languageAccess || $this->‪isRoot()) {
541  return false;
542  }
543  if (!empty(‪$GLOBALS['TCA'][$this->table]['columns'][$fieldName]['exclude'])
544  && !$this->‪isExcludedDoktype()
545  && $this->backendUser->check('non_exclude_fields', $this->table . ':' . $fieldName)
546  && $this->backendUser->check('tables_modify', $this->table)
547  ) {
548  return (int)$this->record[$fieldName] === $value;
549  }
550  return false;
551  }
552 
558  protected function ‪hasLanguageAccess(): bool
559  {
560  if ($this->backendUser->isAdmin()) {
561  return true;
562  }
563  if (($languageField = $this->‪getLanguageField()) !== '' && isset($this->record[$languageField])) {
564  return $this->backendUser->checkLanguageAccess((int)$this->record[$languageField]);
565  }
566  return true;
567  }
568 
572  protected function ‪isExcludedDoktype(): bool
573  {
574  $excludeDoktypes = [
577  ];
578 
579  return in_array((int)($this->record['doktype'] ?? 0), $excludeDoktypes, true);
580  }
581 }
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\hasPagePermission
‪hasPagePermission(int $permission)
Definition: RecordProvider.php:258
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeEdited
‪canBeEdited()
Definition: PageProvider.php:283
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canRender
‪canRender(string $itemName, string $type)
Definition: PageProvider.php:179
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_NEW
‪const PAGE_NEW
Definition: Permission.php:50
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\canBeDisabled
‪canBeDisabled()
Definition: RecordProvider.php:509
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeCopied
‪canBeCopied()
Definition: PageProvider.php:338
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\getLanguageField
‪getLanguageField()
Definition: RecordProvider.php:651
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\isRecordInClipboard
‪isRecordInClipboard(string $mode='')
Definition: RecordProvider.php:593
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\isDeletionDisabledInTS
‪isDeletionDisabledInTS()
Definition: RecordProvider.php:479
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider
Definition: PageProvider.php:30
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\getEnableDisableAdditionalAttributes
‪getEnableDisableAdditionalAttributes()
Definition: RecordProvider.php:316
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\canShowHistory
‪canShowHistory()
Definition: RecordProvider.php:430
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\$table
‪string $table
Definition: PageProvider.php:33
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeCut
‪canBeCut()
Definition: PageProvider.php:317
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeViewed
‪canBeViewed()
Definition: PageProvider.php:419
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\isExcludedDoktype
‪isExcludedDoktype()
Definition: PageProvider.php:569
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBePastedInto
‪canBePastedInto()
Definition: PageProvider.php:361
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\hasLanguageAccess
‪hasLanguageAccess()
Definition: PageProvider.php:555
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBePastedAfter
‪canBePastedAfter()
Definition: PageProvider.php:376
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\isRecordLocked
‪isRecordLocked()
Definition: PageProvider.php:309
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeSorted
‪canBeSorted()
Definition: PageProvider.php:390
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeCreated
‪canBeCreated()
Definition: PageProvider.php:264
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeToggled
‪canBeToggled(string $fieldName, int $value)
Definition: PageProvider.php:535
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:26
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\getViewLink
‪getViewLink()
Definition: PageProvider.php:524
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\getPriority
‪getPriority()
Definition: PageProvider.php:174
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\$languageAccess
‪bool $languageAccess
Definition: PageProvider.php:164
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeDeleted
‪canBeDeleted()
Definition: PageProvider.php:404
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\isWebMount
‪bool isWebMount()
Definition: PageProvider.php:467
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\isDeletePlaceholder
‪isDeletePlaceholder()
Definition: RecordProvider.php:583
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:44
‪TYPO3\CMS\Backend\Routing\PreviewUriBuilder\create
‪static static create(int $pageId)
Definition: PreviewUriBuilder.php:65
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canClearCache
‪canClearCache()
Definition: PageProvider.php:438
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\getDeleteAdditionalAttributes
‪getDeleteAdditionalAttributes()
Definition: RecordProvider.php:356
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_SPACER
‪const DOKTYPE_SPACER
Definition: PageRepository.php:103
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\isRoot
‪bool isRoot()
Definition: PageProvider.php:457
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\previewLinkCanBeBuild
‪previewLinkCanBeBuild()
Definition: RecordProvider.php:643
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\$itemsConfiguration
‪array $itemsConfiguration
Definition: PageProvider.php:37
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_SHOW
‪const PAGE_SHOW
Definition: Permission.php:35
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_SYSFOLDER
‪const DOKTYPE_SYSFOLDER
Definition: PageRepository.php:104
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\getPreviewPid
‪getPreviewPid()
Definition: PageProvider.php:516
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\getAdditionalAttributes
‪getAdditionalAttributes(string $itemName)
Definition: PageProvider.php:472
‪TYPO3\CMS\Core\Type\Bitmask\Permission\CONTENT_EDIT
‪const CONTENT_EDIT
Definition: Permission.php:55
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider
Definition: RecordProvider.php:33
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Backend\Routing\PreviewUriBuilder
Definition: PreviewUriBuilder.php:44
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_EDIT
‪const PAGE_EDIT
Definition: Permission.php:40
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_DELETE
‪const PAGE_DELETE
Definition: Permission.php:45
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canHandle
‪canHandle()
Definition: PageProvider.php:169
‪TYPO3\CMS\Core\Domain\Repository\PageRepository
Definition: PageRepository.php:69
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\getViewAdditionalAttributes
‪getViewAdditionalAttributes()
Definition: RecordProvider.php:301
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders
Definition: AbstractProvider.php:18
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\initPermissions
‪initPermissions()
Definition: PageProvider.php:255
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\isDeleted
‪isDeleted()
Definition: PageProvider.php:447
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\getPasteAdditionalAttributes
‪getPasteAdditionalAttributes(string $type)
Definition: RecordProvider.php:328
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\canBeEnabled
‪canBeEnabled()
Definition: RecordProvider.php:501
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canShowInfo
‪canShowInfo()
Definition: PageProvider.php:430