‪TYPO3CMS  10.4
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 
26 
31 {
32 
36  protected ‪$table = 'pages';
37 
41  protected ‪$itemsConfiguration = [
42  'view' => [
43  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.view',
44  'iconIdentifier' => 'actions-view-page',
45  'callbackAction' => 'viewRecord'
46  ],
47  'edit' => [
48  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.edit',
49  'iconIdentifier' => 'actions-page-open',
50  'callbackAction' => 'editRecord'
51  ],
52  'new' => [
53  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.newSubpage',
54  'iconIdentifier' => 'actions-page-new',
55  'callbackAction' => 'newRecord'
56  ],
57  'info' => [
58  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.info',
59  'iconIdentifier' => 'actions-document-info',
60  'callbackAction' => 'openInfoPopUp'
61  ],
62  'divider1' => [
63  'type' => 'divider'
64  ],
65  'copy' => [
66  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.copy',
67  'iconIdentifier' => 'actions-edit-copy',
68  'callbackAction' => 'copy'
69  ],
70  'copyRelease' => [
71  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.copy',
72  'iconIdentifier' => 'actions-edit-copy-release',
73  'callbackAction' => 'clipboardRelease'
74  ],
75  'cut' => [
76  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.cut',
77  'iconIdentifier' => 'actions-edit-cut',
78  'callbackAction' => 'cut'
79  ],
80  'cutRelease' => [
81  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.cutrelease',
82  'iconIdentifier' => 'actions-edit-cut-release',
83  'callbackAction' => 'clipboardRelease'
84  ],
85  'pasteAfter' => [
86  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.pasteafter',
87  'iconIdentifier' => 'actions-document-paste-after',
88  'callbackAction' => 'pasteAfter'
89  ],
90  'pasteInto' => [
91  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.pasteinto',
92  'iconIdentifier' => 'actions-document-paste-into',
93  'callbackAction' => 'pasteInto'
94  ],
95  'divider2' => [
96  'type' => 'divider'
97  ],
98  'more' => [
99  'type' => 'submenu',
100  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.more',
101  'iconIdentifier' => '',
102  'callbackAction' => 'openSubmenu',
103  'childItems' => [
104  'newWizard' => [
105  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_misc.xlf:CM_newWizard',
106  'iconIdentifier' => 'actions-page-new',
107  'callbackAction' => 'newPageWizard',
108  ],
109  'pagesSort' => [
110  'label' => 'LLL:EXT:backend/Resources/Private/Language/locallang_pages_sort.xlf:title',
111  'iconIdentifier' => 'actions-page-move',
112  'callbackAction' => 'pagesSort',
113  ],
114  'pagesNewMultiple' => [
115  'label' => 'LLL:EXT:backend/Resources/Private/Language/locallang_pages_new.xlf:title',
116  'iconIdentifier' => 'apps-pagetree-drag-move-between',
117  'callbackAction' => 'pagesNewMultiple',
118  ],
119  'openListModule' => [
120  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_misc.xlf:CM_db_list',
121  'iconIdentifier' => 'actions-system-list-open',
122  'callbackAction' => 'openListModule',
123  ],
124  'mountAsTreeRoot' => [
125  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.tempMountPoint',
126  'iconIdentifier' => 'actions-pagetree-mountroot',
127  'callbackAction' => 'mountAsTreeRoot',
128  ],
129  'showInMenus' => [
130  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_misc.xlf:CM_showInMenus',
131  'iconIdentifier' => 'actions-view',
132  'callbackAction' => 'showInMenus',
133  ],
134  'hideInMenus' => [
135  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_misc.xlf:CM_hideInMenus',
136  'iconIdentifier' => 'actions-ban',
137  'callbackAction' => 'hideInMenus',
138  ],
139  ],
140  ],
141  'divider3' => [
142  'type' => 'divider'
143  ],
144  'enable' => [
145  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:enable',
146  'iconIdentifier' => 'actions-edit-unhide',
147  'callbackAction' => 'enableRecord',
148  ],
149  'disable' => [
150  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:disable',
151  'iconIdentifier' => 'actions-edit-hide',
152  'callbackAction' => 'disableRecord',
153  ],
154  'delete' => [
155  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.delete',
156  'iconIdentifier' => 'actions-edit-delete',
157  'callbackAction' => 'deleteRecord',
158  ],
159  'history' => [
160  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_misc.xlf:CM_history',
161  'iconIdentifier' => 'actions-document-history-open',
162  'callbackAction' => 'openHistoryPopUp',
163  ],
164  'clearCache' => [
165  'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.clear_cache',
166  'iconIdentifier' => 'actions-system-cache-clear',
167  'callbackAction' => 'clearCache',
168  ],
169  ];
170 
174  protected ‪$languageAccess = false;
175 
181  public function ‪canHandle(): bool
182  {
183  return $this->table === 'pages';
184  }
185 
189  public function ‪getPriority(): int
190  {
191  return 100;
192  }
193 
199  protected function ‪canRender(string $itemName, string $type): bool
200  {
201  if (in_array($type, ['divider', 'submenu'], true)) {
202  return true;
203  }
204  if (in_array($itemName, $this->disabledItems, true)) {
205  return false;
206  }
207  $canRender = false;
208  switch ($itemName) {
209  case 'view':
210  $canRender = $this->‪canBeViewed();
211  break;
212  case 'edit':
213  $canRender = $this->‪canBeEdited();
214  break;
215  case 'new':
216  case 'newWizard':
217  case 'pagesNewMultiple':
218  $canRender = $this->‪canBeCreated();
219  break;
220  case 'info':
221  $canRender = $this->‪canShowInfo();
222  break;
223  case 'enable':
224  $canRender = $this->‪canBeEnabled();
225  break;
226  case 'disable':
227  $canRender = $this->‪canBeDisabled();
228  break;
229  case 'showInMenus':
230  $canRender = $this->‪canBeToggled('nav_hide', 1);
231  break;
232  case 'hideInMenus':
233  $canRender = $this->‪canBeToggled('nav_hide', 0);
234  break;
235  case 'delete':
236  $canRender = $this->‪canBeDeleted();
237  break;
238  case 'history':
239  $canRender = $this->‪canShowHistory();
240  break;
241  case 'openListModule':
242  $canRender = $this->‪canOpenListModule();
243  break;
244  case 'pagesSort':
245  $canRender = $this->‪canBeSorted();
246  break;
247  case 'mountAsTreeRoot':
248  $canRender = !$this->‪isRoot();
249  break;
250  case 'copy':
251  $canRender = $this->‪canBeCopied();
252  break;
253  case 'copyRelease':
254  $canRender = $this->‪isRecordInClipboard('copy');
255  break;
256  case 'cut':
257  $canRender = $this->‪canBeCut() && !$this->‪isRecordInClipboard('cut');
258  break;
259  case 'cutRelease':
260  $canRender = $this->‪isRecordInClipboard('cut');
261  break;
262  case 'pasteAfter':
263  $canRender = $this->‪canBePastedAfter();
264  break;
265  case 'pasteInto':
266  $canRender = $this->‪canBePastedInto();
267  break;
268  case 'clearCache':
269  $canRender = $this->‪canClearCache();
270  break;
271  }
272  return $canRender;
273  }
274 
278  protected function ‪initPermissions()
279  {
280  $this->pagePermissions = $this->backendUser->calcPerms($this->record);
281  $this->languageAccess = $this->‪hasLanguageAccess();
282  }
283 
289  protected function ‪canBeCreated(): bool
290  {
291  if (!$this->backendUser->checkLanguageAccess(0)) {
292  return false;
293  }
294  if (isset(‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField'])
295  && !in_array($this->record[‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField']], [0, -1])
296  ) {
297  return false;
298  }
300  }
301 
307  protected function ‪canBeEdited(): bool
308  {
309  if (!$this->languageAccess) {
310  return false;
311  }
312  if ($this->‪isRoot()) {
313  return false;
314  }
315  if (isset(‪$GLOBALS['TCA'][$this->table]['ctrl']['readOnly']) && ‪$GLOBALS['TCA'][$this->table]['ctrl']['readOnly']) {
316  return false;
317  }
318  if ($this->backendUser->isAdmin()) {
319  return true;
320  }
321  if (isset(‪$GLOBALS['TCA'][$this->table]['ctrl']['adminOnly']) && ‪$GLOBALS['TCA'][$this->table]['ctrl']['adminOnly']) {
322  return false;
323  }
325  }
326 
332  protected function ‪isRecordLocked(): bool
333  {
334  return (bool)$this->record['editlock'];
335  }
336 
342  protected function ‪canBeCut(): bool
343  {
344  if (!$this->languageAccess) {
345  return false;
346  }
347  if (isset(‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField'])
348  && !in_array($this->record[‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField']], [0, -1])
349  ) {
350  return false;
351  }
352  return !$this->‪isWebMount()
353  && $this->‪canBeEdited()
354  && !$this->‪isDeletePlaceholder();
355  }
356 
362  protected function ‪canBeCopied(): bool
363  {
364  if (!$this->languageAccess) {
365  return false;
366  }
367  if (isset(‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField'])
368  && !in_array($this->record[‪$GLOBALS['TCA'][$this->table]['ctrl']['languageField']], [0, -1])
369  ) {
370  return false;
371  }
372  return !$this->‪isRoot()
373  && !$this->‪isWebMount()
374  && !$this->‪isRecordInClipboard('copy')
376  && !$this->‪isDeletePlaceholder();
377  }
378 
384  protected function ‪canBePastedInto(): bool
385  {
386  if (!$this->languageAccess) {
387  return false;
388  }
389  $clipboardElementCount = count($this->clipboard->elFromTable($this->table));
390 
391  return $clipboardElementCount
392  && $this->‪canBeCreated()
393  && !$this->‪isDeletePlaceholder();
394  }
395 
401  protected function ‪canBePastedAfter(): bool
402  {
403  if (!$this->languageAccess) {
404  return false;
405  }
406  $clipboardElementCount = count($this->clipboard->elFromTable($this->table));
407  return $clipboardElementCount
408  && $this->‪canBeCreated()
409  && !$this->‪isDeletePlaceholder();
410  }
411 
417  protected function ‪canBeSorted(): bool
418  {
419  if (!$this->languageAccess) {
420  return false;
421  }
422  return $this->backendUser->check('tables_modify', $this->table)
424  && !$this->‪isDeletePlaceholder()
425  && $this->backendUser->workspace === 0;
426  }
427 
433  protected function ‪canBeDeleted(): bool
434  {
435  if (!$this->languageAccess) {
436  return false;
437  }
438  return !$this->‪isRoot()
439  && !$this->‪isDeletePlaceholder()
440  && !$this->‪isRecordLocked()
441  && !$this->‪isDeletionDisabledInTS()
443  }
444 
450  protected function ‪canBeViewed(): bool
451  {
452  return !$this->‪isRoot()
453  && !$this->‪isDeleted()
454  && !$this->‪isExcludedDoktype();
455  }
456 
462  protected function ‪canShowInfo(): bool
463  {
464  return !$this->‪isRoot();
465  }
466 
472  protected function ‪canClearCache(): bool
473  {
474  return !$this->‪isRoot()
475  && ($this->backendUser->isAdmin() || $this->backendUser->getTSConfig()['options.']['clearCache.']['pages'] ?? false);
476  }
477 
483  protected function ‪isDeleted(): bool
484  {
485  return !empty($this->record['deleted']) || $this->‪isDeletePlaceholder();
486  }
487 
493  protected function ‪isRoot()
494  {
495  return (int)$this->identifier === 0;
496  }
497 
503  protected function ‪isWebMount()
504  {
505  return in_array($this->identifier, $this->backendUser->returnWebmounts());
506  }
507 
512  protected function ‪getAdditionalAttributes(string $itemName): array
513  {
514  $attributes = [];
515  if ($itemName === 'view') {
516  $attributes += $this->‪getViewAdditionalAttributes();
517  }
518  if ($itemName === 'enable' || $itemName === 'disable') {
519  $attributes += $this->‪getEnableDisableAdditionalAttributes();
520  }
521  if ($itemName === 'delete') {
522  $attributes += $this->‪getDeleteAdditionalAttributes();
523  }
524  if ($itemName === 'pasteInto') {
525  $attributes += $this->‪getPasteAdditionalAttributes('into');
526  }
527  if ($itemName === 'pasteAfter') {
528  $attributes += $this->‪getPasteAdditionalAttributes('after');
529  }
530  if ($itemName === 'pagesSort') {
531  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
532  $attributes += [
533  'data-pages-sort-url' => (string)$uriBuilder->buildUriFromRoute('pages_sort', ['id' => $this->record['uid']]),
534  ];
535  }
536  if ($itemName === 'pagesNewMultiple') {
537  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
538  $attributes += [
539  'data-pages-new-multiple-url' => (string)$uriBuilder->buildUriFromRoute('pages_new', ['id' => $this->record['uid']]),
540  ];
541  }
542  if ($itemName === 'edit') {
543  $attributes = [
544  'data-pages-language-uid' => $this->record['sys_language_uid']
545  ];
546  }
547  return $attributes;
548  }
549 
553  protected function ‪getPreviewPid(): int
554  {
555  return (int)$this->record['sys_language_uid'] === 0 ? (int)$this->record['uid'] : (int)$this->record['l10n_parent'];
556  }
557 
563  protected function ‪getViewLink(): string
564  {
565  $language = (int)$this->record['sys_language_uid'];
566  $additionalParams = ($language > 0) ? '&L=' . $language : '';
567 
568  try {
570  $this->‪getPreviewPid(),
571  '',
572  null,
573  '',
574  '',
575  $additionalParams
576  );
577  } catch (‪UnableToLinkToPageException $e) {
578  return '';
579  }
580  }
581 
591  protected function ‪canBeToggled(string $fieldName, int $value): bool
592  {
593  if (!$this->languageAccess || $this->‪isRoot()) {
594  return false;
595  }
596  if (!empty(‪$GLOBALS['TCA'][$this->table]['columns'][$fieldName]['exclude'])
597  && $this->record['doktype'] <= ‪PageRepository::DOKTYPE_SPACER
598  && $this->backendUser->check('non_exclude_fields', $this->table . ':' . $fieldName)
599  ) {
600  return (int)$this->record[$fieldName] === $value;
601  }
602  return false;
603  }
604 
611  protected function ‪hasLanguageAccess(): bool
612  {
613  if ($this->backendUser->isAdmin()) {
614  return true;
615  }
616  $languageField = ‪$GLOBALS['TCA'][‪$this->table]['ctrl']['languageField'] ?? '';
617  if ($languageField !== '' && isset($this->record[$languageField])) {
618  return $this->backendUser->checkLanguageAccess((int)$this->record[$languageField]);
619  }
620  return true;
621  }
622 
628  protected function ‪isExcludedDoktype(): bool
629  {
630  $excludeDoktypes = [
634  ];
635 
636  return in_array((int)($this->record['doktype'] ?? 0), $excludeDoktypes, true);
637  }
638 }
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\getEnableDisableAdditionalAttributes
‪array getEnableDisableAdditionalAttributes()
Definition: RecordProvider.php:352
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeDeleted
‪bool canBeDeleted()
Definition: PageProvider.php:430
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeSorted
‪bool canBeSorted()
Definition: PageProvider.php:414
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_NEW
‪const PAGE_NEW
Definition: Permission.php:48
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\hasLanguageAccess
‪bool hasLanguageAccess()
Definition: PageProvider.php:608
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\canShowHistory
‪bool canShowHistory()
Definition: RecordProvider.php:484
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canShowInfo
‪bool canShowInfo()
Definition: PageProvider.php:459
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\canBeDisabled
‪bool canBeDisabled()
Definition: RecordProvider.php:575
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\isRecordInClipboard
‪bool isRecordInClipboard(string $mode='')
Definition: RecordProvider.php:690
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canRender
‪bool canRender(string $itemName, string $type)
Definition: PageProvider.php:196
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider
Definition: PageProvider.php:31
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canHandle
‪bool canHandle()
Definition: PageProvider.php:178
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\getViewLink
‪string getViewLink()
Definition: PageProvider.php:560
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\$table
‪string $table
Definition: PageProvider.php:35
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\isExcludedDoktype
‪bool isExcludedDoktype()
Definition: PageProvider.php:625
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeViewed
‪bool canBeViewed()
Definition: PageProvider.php:447
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\getViewAdditionalAttributes
‪array getViewAdditionalAttributes()
Definition: RecordProvider.php:335
‪TYPO3\CMS\Backend\Utility\BackendUtility\getPreviewUrl
‪static string getPreviewUrl( $pageUid, $backPath='', $rootLine=null, $anchorSection='', $alternativeUrl='', $additionalGetVars='', &$switchFocus=true)
Definition: BackendUtility.php:2403
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:24
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\isDeletePlaceholder
‪bool isDeletePlaceholder()
Definition: RecordProvider.php:676
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBePastedAfter
‪bool canBePastedAfter()
Definition: PageProvider.php:398
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\isRecordLocked
‪bool isRecordLocked()
Definition: PageProvider.php:329
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeEdited
‪bool canBeEdited()
Definition: PageProvider.php:304
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\getAdditionalAttributes
‪array getAdditionalAttributes(string $itemName)
Definition: PageProvider.php:509
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeCut
‪bool canBeCut()
Definition: PageProvider.php:339
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\$languageAccess
‪bool $languageAccess
Definition: PageProvider.php:171
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\isWebMount
‪bool isWebMount()
Definition: PageProvider.php:500
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\getPasteAdditionalAttributes
‪array getPasteAdditionalAttributes(string $type)
Definition: RecordProvider.php:365
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:38
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_SPACER
‪const DOKTYPE_SPACER
Definition: PageRepository.php:108
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\isRoot
‪bool isRoot()
Definition: PageProvider.php:490
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\isDeletionDisabledInTS
‪bool isDeletionDisabledInTS()
Definition: RecordProvider.php:539
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\$itemsConfiguration
‪array $itemsConfiguration
Definition: PageProvider.php:39
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_SHOW
‪const PAGE_SHOW
Definition: Permission.php:33
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_SYSFOLDER
‪const DOKTYPE_SYSFOLDER
Definition: PageRepository.php:109
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeCopied
‪bool canBeCopied()
Definition: PageProvider.php:359
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\isDeleted
‪bool isDeleted()
Definition: PageProvider.php:480
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:75
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\getPreviewPid
‪int getPreviewPid()
Definition: PageProvider.php:550
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\getPriority
‪int getPriority()
Definition: PageProvider.php:186
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeCreated
‪bool canBeCreated()
Definition: PageProvider.php:286
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\canOpenListModule
‪bool canOpenListModule()
Definition: RecordProvider.php:597
‪TYPO3\CMS\Core\Type\Bitmask\Permission\CONTENT_EDIT
‪const CONTENT_EDIT
Definition: Permission.php:53
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider
Definition: RecordProvider.php:33
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\getDeleteAdditionalAttributes
‪array getDeleteAdditionalAttributes()
Definition: RecordProvider.php:395
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_EDIT
‪const PAGE_EDIT
Definition: Permission.php:38
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_DELETE
‪const PAGE_DELETE
Definition: Permission.php:43
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\hasPagePermission
‪bool hasPagePermission(int $permission)
Definition: RecordProvider.php:280
‪TYPO3\CMS\Core\Domain\Repository\PageRepository
Definition: PageRepository.php:52
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canClearCache
‪bool canClearCache()
Definition: PageProvider.php:469
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBeToggled
‪bool canBeToggled(string $fieldName, int $value)
Definition: PageProvider.php:588
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders
Definition: AbstractProvider.php:18
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\initPermissions
‪initPermissions()
Definition: PageProvider.php:275
‪TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_RECYCLER
‪const DOKTYPE_RECYCLER
Definition: PageRepository.php:110
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\PageProvider\canBePastedInto
‪bool canBePastedInto()
Definition: PageProvider.php:381
‪TYPO3\CMS\Backend\ContextMenu\ItemProviders\RecordProvider\canBeEnabled
‪bool canBeEnabled()
Definition: RecordProvider.php:565