‪TYPO3CMS  ‪main
BackendController.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 
20 use Psr\Http\Message\ResponseInterface;
21 use Psr\Http\Message\ServerRequestInterface;
39 
45 #[AsController]
47 {
51  private array ‪$allowedActions = [
52  'index',
53  'typography',
54  'colors',
55  'trees',
56  'tab',
57  'tables',
58  'cards',
59  'avatar',
60  'buttons',
61  'infobox',
62  'flashMessages',
63  'notifications',
64  'icons',
65  'modal',
66  'accordion',
67  'pagination',
68  'filter',
69  ];
70 
74  private array ‪$allowedAjaxActions = [
75  'tcaCreate',
76  'tcaDelete',
77  'frontendCreate',
78  'frontendDelete',
79  ];
80 
81  public function ‪__construct(
82  private readonly ‪ModuleTemplateFactory $moduleTemplateFactory,
83  private readonly ‪PageRenderer $pageRenderer,
84  private readonly ‪FlashMessageService $flashMessageService,
85  ) {}
86 
90  public function ‪handleRequest(ServerRequestInterface $request): ResponseInterface
91  {
92  $currentAction = $request->getQueryParams()['action'] ?? 'index';
93  if (!in_array($currentAction, $this->allowedActions, true)
94  && !in_array($currentAction, $this->allowedAjaxActions, true)
95  ) {
96  throw new \RuntimeException('Action not allowed', 1672751508);
97  }
98  $actionMethodName = $currentAction . 'Action';
99  return $this->$actionMethodName($request);
100  }
101 
102  private function ‪indexAction(ServerRequestInterface $request): ResponseInterface
103  {
104  $moduleTemplate = $this->moduleTemplateFactory->create($request);
105  $this->‪addShortcutButton($moduleTemplate, 'index');
106  $this->pageRenderer->loadJavaScriptModule('@typo3/styleguide/processing-indicator.js');
107  ‪$finder = GeneralUtility::makeInstance(RecordFinder::class);
108  $demoExists = count(‪$finder->findUidsOfStyleguideEntryPages());
109  $demoFrontendExists = count(‪$finder->findUidsOfFrontendPages());
110  $moduleTemplate->assignMultiple([
111  'actions' => $this->allowedActions,
112  'currentAction' => 'index',
113  'demoExists' => $demoExists,
114  'demoFrontendExists' => $demoFrontendExists,
115  ]);
116  return $moduleTemplate->renderResponse('Backend/Index');
117  }
118 
119  private function ‪tcaCreateAction(): ResponseInterface
120  {
121  ‪$finder = GeneralUtility::makeInstance(RecordFinder::class);
122  if (count(‪$finder->findUidsOfStyleguideEntryPages())) {
123  // Tell something was done here
124  $json = [
125  'title' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:tcaCreateActionFailedTitle'),
126  'body' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:tcaCreateActionFailedBody'),
127  'status' => ContextualFeedbackSeverity::ERROR,
128  ];
129  } else {
130  $generator = GeneralUtility::makeInstance(Generator::class);
131  $generator->create();
132  // Tell something was done here
133  $json = [
134  'title' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:tcaCreateActionOkTitle'),
135  'body' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:tcaCreateActionOkBody'),
136  'status' => ContextualFeedbackSeverity::OK,
137  ];
138  }
139  // And redirect to display action
140  return new ‪JsonResponse($json);
141  }
142 
143  private function ‪tcaDeleteAction(): ResponseInterface
144  {
145  $generator = GeneralUtility::makeInstance(Generator::class);
146  $generator->delete();
147  $json = [
148  'title' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:tcaDeleteActionOkTitle'),
149  'body' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:tcaDeleteActionOkBody'),
150  'status' => ContextualFeedbackSeverity::OK,
151  ];
152  return new ‪JsonResponse($json);
153  }
154 
155  private function ‪buttonsAction(ServerRequestInterface $request): ResponseInterface
156  {
157  $moduleTemplate = $this->moduleTemplateFactory->create($request);
158  $this->‪addShortcutButton($moduleTemplate, 'buttons');
159  $moduleTemplate->assignMultiple([
160  'actions' => $this->allowedActions,
161  'currentAction' => 'buttons',
162  ]);
163  return $moduleTemplate->renderResponse('Backend/Buttons');
164  }
165 
166  private function ‪typographyAction(ServerRequestInterface $request): ResponseInterface
167  {
168  $moduleTemplate = $this->moduleTemplateFactory->create($request);
169  $this->‪addShortcutButton($moduleTemplate, 'typography');
170  $moduleTemplate->assignMultiple([
171  'actions' => $this->allowedActions,
172  'currentAction' => 'typography',
173  ]);
174  return $moduleTemplate->renderResponse('Backend/Typography');
175  }
176 
177  private function ‪colorsAction(ServerRequestInterface $request): ResponseInterface
178  {
179  $moduleTemplate = $this->moduleTemplateFactory->create($request);
180  $this->‪addShortcutButton($moduleTemplate, 'colors');
181  $moduleTemplate->assignMultiple([
182  'actions' => $this->allowedActions,
183  'currentAction' => 'colors',
184  ]);
185  return $moduleTemplate->renderResponse('Backend/Colors');
186  }
187 
188  private function ‪treesAction(ServerRequestInterface $request): ResponseInterface
189  {
190  $moduleTemplate = $this->moduleTemplateFactory->create($request);
191  $this->‪addShortcutButton($moduleTemplate, 'trees');
192  $moduleTemplate->assignMultiple([
193  'actions' => $this->allowedActions,
194  'currentAction' => 'trees',
195  ]);
196  return $moduleTemplate->renderResponse('Backend/Trees');
197  }
198 
199  private function ‪tablesAction(ServerRequestInterface $request): ResponseInterface
200  {
201  $moduleTemplate = $this->moduleTemplateFactory->create($request);
202  $this->‪addShortcutButton($moduleTemplate, 'tables');
203  $moduleTemplate->assignMultiple([
204  'actions' => $this->allowedActions,
205  'currentAction' => 'tables',
206  ]);
207  return $moduleTemplate->renderResponse('Backend/Tables');
208  }
209 
210  private function ‪cardsAction(ServerRequestInterface $request): ResponseInterface
211  {
212  $moduleTemplate = $this->moduleTemplateFactory->create($request);
213  $this->‪addShortcutButton($moduleTemplate, 'cards');
214  $moduleTemplate->assignMultiple([
215  'actions' => $this->allowedActions,
216  'currentAction' => 'cards',
217  ]);
218  return $moduleTemplate->renderResponse('Backend/Cards');
219  }
220 
221  private function ‪frontendCreateAction(): ResponseInterface
222  {
223  $recordFinder = GeneralUtility::makeInstance(RecordFinder::class);
224  if (count($recordFinder->findUidsOfFrontendPages())) {
225  $json = [
226  'title' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:frontendCreateActionFailedTitle'),
227  'body' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:frontendCreateActionFailedBody'),
228  'status' => ContextualFeedbackSeverity::ERROR,
229  ];
230  } else {
231  $frontend = GeneralUtility::makeInstance(GeneratorFrontend::class);
232  $frontend->create();
233  $json = [
234  'title' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:frontendCreateActionOkTitle'),
235  'body' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:frontendCreateActionOkBody'),
236  'status' => ContextualFeedbackSeverity::OK,
237  ];
238  }
239  return new ‪JsonResponse($json);
240  }
241 
242  private function ‪frontendDeleteAction(): ResponseInterface
243  {
244  $frontend = GeneralUtility::makeInstance(GeneratorFrontend::class);
245  $frontend->delete();
246  $json = [
247  'title' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:frontendDeleteActionOkTitle'),
248  'body' => $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:frontendDeleteActionOkBody'),
249  'status' => ContextualFeedbackSeverity::OK,
250  ];
251  return new ‪JsonResponse($json);
252  }
253 
254  private function ‪iconsAction(ServerRequestInterface $request): ResponseInterface
255  {
256  $this->pageRenderer->loadJavaScriptModule('@typo3/styleguide/find-icons.js');
257  $moduleTemplate = $this->moduleTemplateFactory->create($request);
258  $this->‪addShortcutButton($moduleTemplate, 'icons');
259  $iconRegistry = GeneralUtility::makeInstance(IconRegistry::class);
260  $allIcons = $iconRegistry->getAllRegisteredIconIdentifiers();
261  $overlays = array_filter(
262  $allIcons,
263  function ($key) {
264  return str_starts_with($key, 'overlay');
265  }
266  );
267  $moduleTemplate->assignMultiple([
268  'actions' => $this->allowedActions,
269  'currentAction' => 'icons',
270  'allIcons' => $allIcons,
271  'deprecatedIcons' => $iconRegistry->getDeprecatedIcons(),
272  'overlays' => $overlays,
273  ]);
274  return $moduleTemplate->renderResponse('Backend/Icons');
275  }
276 
277  private function ‪infoboxAction(ServerRequestInterface $request): ResponseInterface
278  {
279  $moduleTemplate = $this->moduleTemplateFactory->create($request);
280  $this->‪addShortcutButton($moduleTemplate, 'infobox');
281  $moduleTemplate->assignMultiple([
282  'actions' => $this->allowedActions,
283  'currentAction' => 'infobox',
284  ]);
285  return $moduleTemplate->renderResponse('Backend/Infobox');
286  }
287 
288  private function ‪flashMessagesAction(ServerRequestInterface $request): ResponseInterface
289  {
290  $moduleTemplate = $this->moduleTemplateFactory->create($request);
291  $this->‪addShortcutButton($moduleTemplate, 'flashMessages');
292  $moduleTemplate->assignMultiple([
293  'actions' => $this->allowedActions,
294  'currentAction' => 'flashMessages',
295  ]);
296  $loremIpsum = GeneralUtility::makeInstance(KauderwelschService::class)->getLoremIpsum();
297  // We're writing to an own queue here to position the messages within the body.
298  // Normal modules wouldn't usually do this and would let ModuleTemplate layout take care of rendering
299  // at some appropriate position.
300  $flashMessageQueue = $this->flashMessageService->getMessageQueueByIdentifier('styleguide.demo');
301  $flashMessageQueue->enqueue(GeneralUtility::makeInstance(FlashMessage::class, $loremIpsum, 'Info - Title for Info message', ContextualFeedbackSeverity::INFO, true));
302  $flashMessageQueue->enqueue(GeneralUtility::makeInstance(FlashMessage::class, $loremIpsum, 'Notice - Title for Notice message', ContextualFeedbackSeverity::NOTICE, true));
303  $flashMessageQueue->enqueue(GeneralUtility::makeInstance(FlashMessage::class, $loremIpsum, 'Error - Title for Error message', ContextualFeedbackSeverity::ERROR, true));
304  $flashMessageQueue->enqueue(GeneralUtility::makeInstance(FlashMessage::class, $loremIpsum, 'Ok - Title for OK message', ContextualFeedbackSeverity::OK, true));
305  $flashMessageQueue->enqueue(GeneralUtility::makeInstance(FlashMessage::class, $loremIpsum, 'Warning - Title for Warning message', ContextualFeedbackSeverity::WARNING, true));
306  return $moduleTemplate->renderResponse('Backend/FlashMessages');
307  }
308 
309  private function ‪notificationsAction(ServerRequestInterface $request): ResponseInterface
310  {
311  $this->pageRenderer->loadJavaScriptModule('@typo3/styleguide/render-notifications.js');
312  $moduleTemplate = $this->moduleTemplateFactory->create($request);
313  $this->‪addShortcutButton($moduleTemplate, 'notifications');
314  $moduleTemplate->assignMultiple([
315  'actions' => $this->allowedActions,
316  'currentAction' => 'notifications',
317  ]);
318  return $moduleTemplate->renderResponse('Backend/Notifications');
319  }
320 
321  private function ‪avatarAction(ServerRequestInterface $request): ResponseInterface
322  {
323  $moduleTemplate = $this->moduleTemplateFactory->create($request);
324  $this->‪addShortcutButton($moduleTemplate, 'avatar');
325  $moduleTemplate->assignMultiple([
326  'actions' => $this->allowedActions,
327  'currentAction' => 'avatar',
328  'backendUser' => ‪$GLOBALS['BE_USER']->user,
329  ]);
330  return $moduleTemplate->renderResponse('Backend/Avatar');
331  }
332 
333  private function ‪tabAction(ServerRequestInterface $request): ResponseInterface
334  {
335  $moduleTemplate = $this->moduleTemplateFactory->create($request);
336  $this->‪addShortcutButton($moduleTemplate, 'tab');
337  $moduleTemplate->assignMultiple([
338  'actions' => $this->allowedActions,
339  'currentAction' => 'tab',
340  ]);
341  return $moduleTemplate->renderResponse('Backend/Tab');
342  }
343 
344  private function ‪modalAction(ServerRequestInterface $request): ResponseInterface
345  {
346  $moduleTemplate = $this->moduleTemplateFactory->create($request);
347  $this->‪addShortcutButton($moduleTemplate, 'modal');
348  $moduleTemplate->assignMultiple([
349  'actions' => $this->allowedActions,
350  'currentAction' => 'modal',
351  ]);
352  return $moduleTemplate->renderResponse('Backend/Modal');
353  }
354 
355  private function ‪accordionAction(ServerRequestInterface $request): ResponseInterface
356  {
357  $moduleTemplate = $this->moduleTemplateFactory->create($request);
358  $this->‪addShortcutButton($moduleTemplate, 'accordion');
359  $moduleTemplate->assignMultiple([
360  'actions' => $this->allowedActions,
361  'currentAction' => 'accordion',
362  ]);
363  return $moduleTemplate->renderResponse('Backend/Accordion');
364  }
365 
366  private function ‪paginationAction(ServerRequestInterface $request): ResponseInterface
367  {
368  $moduleTemplate = $this->moduleTemplateFactory->create($request);
369  $this->‪addShortcutButton($moduleTemplate, 'pagination');
370  $page = (int)($request->getQueryParams()['page'] ?? 1);
371  // Prepare example data for pagination list
372  $itemsToBePaginated = [
373  'Warty Warthog',
374  'Hoary Hedgehog',
375  'Breezy Badger',
376  'Dapper Drake',
377  'Edgy Eft',
378  'Feisty Fawn',
379  'Gutsy Gibbon',
380  'Hardy Heron',
381  'Intrepid Ibex',
382  'Jaunty Jackalope',
383  'Karmic Koala',
384  'Lucid Lynx',
385  'Maverick Meerkat',
386  'Natty Narwhal',
387  'Oneiric Ocelot',
388  'Precise Pangolin',
389  'Quantal Quetzal',
390  'Raring Ringtail',
391  'Saucy Salamander',
392  'Trusty Tahr',
393  'Utopic Unicorn',
394  'Vivid Vervet',
395  'Wily Werewolf',
396  'Xenial Xerus',
397  'Yakkety Yak',
398  'Zesty Zapus',
399  'Artful Aardvark',
400  'Bionic Beaver',
401  'Cosmic Cuttlefish',
402  'Disco Dingo',
403  'Eoan Ermine',
404  'Focal Fossa',
405  'Groovy Gorilla',
406  ];
407  $itemsPerPage = 10;
408  $paginator = new ‪ArrayPaginator($itemsToBePaginated, $page, $itemsPerPage);
409  $moduleTemplate->assignMultiple([
410  'actions' => $this->allowedActions,
411  'currentAction' => 'pagination',
412  'paginator' => $paginator,
413  'pagination' => new ‪SimplePagination($paginator),
414  ]);
415  return $moduleTemplate->renderResponse('Backend/Pagination');
416  }
417 
418  private function ‪filterAction(ServerRequestInterface $request): ResponseInterface
419  {
420  $this->pageRenderer->loadJavaScriptModule('@typo3/styleguide/filter.js');
421  $moduleTemplate = $this->moduleTemplateFactory->create($request);
422  $this->‪addShortcutButton($moduleTemplate, 'filter');
423  // Prepare example data for dropdown
424  $userGroupArray = [
425  0 => '[All users]',
426  -1 => 'Self',
427  'gr-7' => 'Group styleguide demo group 1',
428  'gr-8' => 'Group styleguide demo group 2',
429  'us-9' => 'User _cli_',
430  'us-1' => 'User admin',
431  'us-10' => 'User styleguide demo user 1',
432  'us-11' => 'User styleguide demo user 2',
433  ];
434  $moduleTemplate->assignMultiple([
435  'actions' => $this->allowedActions,
436  'currentAction' => 'filter',
437  'userGroups' => $userGroupArray,
438  'dateTimeFormat' => 'h:m d-m-Y',
439  ]);
440  return $moduleTemplate->renderResponse('Backend/Filter');
441  }
442 
443  private function ‪addShortcutButton(‪ModuleTemplate $moduleTemplate, string $action): void
444  {
445  $buttonBar = $moduleTemplate->‪getDocHeaderComponent()->getButtonBar();
446  $shortcutButton = $buttonBar->makeShortcutButton()
447  ->setDisplayName(sprintf(
448  '%s - %s',
449  $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:styleguide'),
450  $this->‪getLanguageService()->sL('LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:' . $action)
451  ))
452  ->setRouteIdentifier('help_styleguide')
453  ->setArguments(['action' => $action]);
454  $buttonBar->addButton($shortcutButton);
455  }
456 
458  {
459  return ‪$GLOBALS['LANG'];
460  }
461 }
‪TYPO3\CMS\Styleguide\Controller\BackendController\flashMessagesAction
‪flashMessagesAction(ServerRequestInterface $request)
Definition: BackendController.php:288
‪TYPO3\CMS\Styleguide\Controller\BackendController\frontendDeleteAction
‪frontendDeleteAction()
Definition: BackendController.php:242
‪TYPO3\CMS\Styleguide\Controller\BackendController\indexAction
‪indexAction(ServerRequestInterface $request)
Definition: BackendController.php:102
‪TYPO3\CMS\Styleguide\Controller\BackendController\notificationsAction
‪notificationsAction(ServerRequestInterface $request)
Definition: BackendController.php:309
‪$finder
‪if(PHP_SAPI !=='cli') $finder
Definition: header-comment.php:22
‪TYPO3\CMS\Styleguide\Controller\BackendController\avatarAction
‪avatarAction(ServerRequestInterface $request)
Definition: BackendController.php:321
‪TYPO3\CMS\Styleguide\Service\KauderwelschService
Definition: KauderwelschService.php:26
‪TYPO3\CMS\Backend\Template\ModuleTemplateFactory
Definition: ModuleTemplateFactory.php:33
‪TYPO3\CMS\Styleguide\Controller\BackendController\infoboxAction
‪infoboxAction(ServerRequestInterface $request)
Definition: BackendController.php:277
‪TYPO3\CMS\Styleguide\Controller\BackendController\tablesAction
‪tablesAction(ServerRequestInterface $request)
Definition: BackendController.php:199
‪TYPO3\CMS\Styleguide\Controller\BackendController\iconsAction
‪iconsAction(ServerRequestInterface $request)
Definition: BackendController.php:254
‪TYPO3\CMS\Styleguide\Controller\BackendController\typographyAction
‪typographyAction(ServerRequestInterface $request)
Definition: BackendController.php:166
‪TYPO3\CMS\Styleguide\Controller\BackendController\handleRequest
‪handleRequest(ServerRequestInterface $request)
Definition: BackendController.php:90
‪TYPO3\CMS\Styleguide\Controller\BackendController\treesAction
‪treesAction(ServerRequestInterface $request)
Definition: BackendController.php:188
‪TYPO3\CMS\Styleguide\Controller\BackendController\accordionAction
‪accordionAction(ServerRequestInterface $request)
Definition: BackendController.php:355
‪TYPO3\CMS\Styleguide\Controller\BackendController\__construct
‪__construct(private readonly ModuleTemplateFactory $moduleTemplateFactory, private readonly PageRenderer $pageRenderer, private readonly FlashMessageService $flashMessageService,)
Definition: BackendController.php:81
‪TYPO3\CMS\Backend\Template\ModuleTemplate
Definition: ModuleTemplate.php:46
‪TYPO3\CMS\Core\Pagination\SimplePagination
Definition: SimplePagination.php:21
‪TYPO3\CMS\Styleguide\Controller\BackendController\modalAction
‪modalAction(ServerRequestInterface $request)
Definition: BackendController.php:344
‪TYPO3\CMS\Core\Type\ContextualFeedbackSeverity
‪ContextualFeedbackSeverity
Definition: ContextualFeedbackSeverity.php:25
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:44
‪TYPO3\CMS\Styleguide\Controller\BackendController\$allowedActions
‪array $allowedActions
Definition: BackendController.php:51
‪TYPO3\CMS\Styleguide\Controller\BackendController
Definition: BackendController.php:47
‪TYPO3\CMS\Styleguide\Controller
Definition: BackendController.php:18
‪TYPO3\CMS\Core\Imaging\IconRegistry
Definition: IconRegistry.php:32
‪TYPO3\CMS\Styleguide\Controller\BackendController\tcaDeleteAction
‪tcaDeleteAction()
Definition: BackendController.php:143
‪TYPO3\CMS\Styleguide\Controller\BackendController\colorsAction
‪colorsAction(ServerRequestInterface $request)
Definition: BackendController.php:177
‪TYPO3\CMS\Styleguide\Controller\BackendController\paginationAction
‪paginationAction(ServerRequestInterface $request)
Definition: BackendController.php:366
‪TYPO3\CMS\Core\Pagination\ArrayPaginator
Definition: ArrayPaginator.php:21
‪TYPO3\CMS\Styleguide\Controller\BackendController\tabAction
‪tabAction(ServerRequestInterface $request)
Definition: BackendController.php:333
‪TYPO3\CMS\Styleguide\TcaDataGenerator\Generator
Definition: Generator.php:34
‪TYPO3\CMS\Backend\Template\ModuleTemplate\getDocHeaderComponent
‪getDocHeaderComponent()
Definition: ModuleTemplate.php:181
‪TYPO3\CMS\Core\Messaging\FlashMessage
Definition: FlashMessage.php:27
‪TYPO3\CMS\Styleguide\Controller\BackendController\frontendCreateAction
‪frontendCreateAction()
Definition: BackendController.php:221
‪TYPO3\CMS\Core\Http\JsonResponse
Definition: JsonResponse.php:28
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Styleguide\Controller\BackendController\$allowedAjaxActions
‪array $allowedAjaxActions
Definition: BackendController.php:74
‪TYPO3\CMS\Styleguide\Controller\BackendController\filterAction
‪filterAction(ServerRequestInterface $request)
Definition: BackendController.php:418
‪TYPO3\CMS\Styleguide\Controller\BackendController\cardsAction
‪cardsAction(ServerRequestInterface $request)
Definition: BackendController.php:210
‪TYPO3\CMS\Backend\Attribute\AsController
Definition: AsController.php:25
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:46
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Styleguide\TcaDataGenerator\GeneratorFrontend
Definition: GeneratorFrontend.php:33
‪TYPO3\CMS\Styleguide\Controller\BackendController\tcaCreateAction
‪tcaCreateAction()
Definition: BackendController.php:119
‪TYPO3\CMS\Styleguide\TcaDataGenerator\RecordFinder
Definition: RecordFinder.php:38
‪TYPO3\CMS\Core\Messaging\FlashMessageService
Definition: FlashMessageService.php:27
‪TYPO3\CMS\Styleguide\Controller\BackendController\getLanguageService
‪getLanguageService()
Definition: BackendController.php:457
‪TYPO3\CMS\Styleguide\Controller\BackendController\buttonsAction
‪buttonsAction(ServerRequestInterface $request)
Definition: BackendController.php:155
‪TYPO3\CMS\Styleguide\Controller\BackendController\addShortcutButton
‪addShortcutButton(ModuleTemplate $moduleTemplate, string $action)
Definition: BackendController.php:443