‪TYPO3CMS  ‪main
ManagementController.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;
29 use TYPO3\CMS\Core\Imaging\IconSize;
36 
42 #[AsController]
44 {
45  public function ‪__construct(
46  private readonly ‪UriBuilder $uriBuilder,
47  private readonly ‪IconFactory $iconFactory,
48  private readonly ‪ModuleTemplateFactory $moduleTemplateFactory,
49  private readonly ‪WebhookTypesRegistry $webhookTypesRegistry,
50  private readonly ‪WebhookRepository $webhookRepository
51  ) {}
52 
53  public function ‪overviewAction(ServerRequestInterface $request): ResponseInterface
54  {
55  $view = $this->moduleTemplateFactory->create($request);
56  $demand = ‪WebhookDemand::fromRequest($request);
57  $requestUri = $request->getAttribute('normalizedParams')->getRequestUri();
58  $languageService = $this->‪getLanguageService();
59 
60  $this->‪registerDocHeaderButtons($view, $requestUri, $demand);
61 
62  $webhookRecords = $this->webhookRepository->getWebhookRecords($demand);
63  $paginator = new ‪DemandedArrayPaginator($webhookRecords, $demand->getPage(), $demand->getLimit(), $this->webhookRepository->countAll());
64  $pagination = new ‪SimplePagination($paginator);
65 
66  return $view->assignMultiple([
67  'demand' => $demand,
68  'webhookTypes' => $this->webhookTypesRegistry->getAvailableWebhookTypes(),
69  'paginator' => $paginator,
70  'pagination' => $pagination,
71  'webhookRecords' => $webhookRecords,
72  'actions' => [
73  new ‪Action(
74  'edit',
75  [
76  'idField' => 'uid',
77  'tableName' => 'sys_webhook',
78  'returnUrl' => $requestUri,
79  ],
80  'actions-open',
81  'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.edit'
82  ),
83  new ‪Action(
84  'delete',
85  [
86  'idField' => 'uid',
87  'tableName' => 'sys_webhook',
88  'title' => $languageService->sL('LLL:EXT:webhooks/Resources/Private/Language/locallang_module_webhooks.xlf:labels.delete.title'),
89  'content' => $languageService->sL('LLL:EXT:webhooks/Resources/Private/Language/locallang_module_webhooks.xlf:labels.delete.message'),
90  'ok' => $languageService->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.delete'),
91  'cancel' => $languageService->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.cancel'),
92  'returnUrl' => $requestUri,
93  ],
94  'actions-edit-delete',
95  'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.delete'
96  ),
97  ],
98  ])->renderResponse('Management/Overview');
99  }
100 
101  protected function ‪registerDocHeaderButtons(‪ModuleTemplate $view, string $requestUri, ‪WebhookDemand $demand): void
102  {
103  $languageService = $this->‪getLanguageService();
104  $buttonBar = $view->‪getDocHeaderComponent()->getButtonBar();
105 
106  // Create new
107  $newRecordButton = $buttonBar->makeLinkButton()
108  ->setHref((string)$this->uriBuilder->buildUriFromRoute(
109  'record_edit',
110  [
111  'edit' => ['sys_webhook' => ['new']],
112  'returnUrl' => (string)$this->uriBuilder->buildUriFromRoute('webhooks_management'),
113  ]
114  ))
115  ->setShowLabelText(true)
116  ->setTitle($languageService->sL('LLL:EXT:webhooks/Resources/Private/Language/locallang_module_webhooks.xlf:webhook_create'))
117  ->setIcon($this->iconFactory->getIcon('actions-add', IconSize::SMALL));
118  $buttonBar->addButton($newRecordButton, ‪ButtonBar::BUTTON_POSITION_LEFT, 10);
119 
120  // Reload
121  $reloadButton = $buttonBar->makeLinkButton()
122  ->setHref($requestUri)
123  ->setTitle($languageService->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.reload'))
124  ->setIcon($this->iconFactory->getIcon('actions-refresh', IconSize::SMALL));
125  $buttonBar->addButton($reloadButton, ‪ButtonBar::BUTTON_POSITION_RIGHT);
126 
127  // Shortcut
128  $shortcutButton = $buttonBar->makeShortcutButton()
129  ->setRouteIdentifier('webhooks_management')
130  ->setDisplayName($languageService->sL('LLL:EXT:webhooks/Resources/Private/Language/locallang_module_webhooks.xlf:mlang_labels_tablabel'))
131  ->setArguments(array_filter([
132  'demand' => $demand->‪getParameters(),
133  'orderField' => $demand->‪getOrderField(),
134  'orderDirection' => $demand->‪getOrderDirection(),
135  ]));
136  $buttonBar->addButton($shortcutButton, ‪ButtonBar::BUTTON_POSITION_RIGHT);
137  }
138 
140  {
141  return ‪$GLOBALS['LANG'];
142  }
143 }
‪TYPO3\CMS\Backend\Template\Components\ButtonBar\BUTTON_POSITION_LEFT
‪const BUTTON_POSITION_LEFT
Definition: ButtonBar.php:37
‪TYPO3\CMS\Backend\Template\Components\ButtonBar
Definition: ButtonBar.php:33
‪TYPO3\CMS\Webhooks\WebhookTypesRegistry
Definition: WebhookTypesRegistry.php:29
‪TYPO3\CMS\Backend\Template\ModuleTemplateFactory
Definition: ModuleTemplateFactory.php:33
‪TYPO3\CMS\Webhooks\Controller\ManagementController\registerDocHeaderButtons
‪registerDocHeaderButtons(ModuleTemplate $view, string $requestUri, WebhookDemand $demand)
Definition: ManagementController.php:101
‪TYPO3\CMS\Webhooks\Controller
Definition: ManagementController.php:18
‪TYPO3\CMS\Webhooks\Controller\ManagementController\__construct
‪__construct(private readonly UriBuilder $uriBuilder, private readonly IconFactory $iconFactory, private readonly ModuleTemplateFactory $moduleTemplateFactory, private readonly WebhookTypesRegistry $webhookTypesRegistry, private readonly WebhookRepository $webhookRepository)
Definition: ManagementController.php:45
‪TYPO3\CMS\Webhooks\Repository\WebhookDemand
Definition: WebhookDemand.php:28
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\Webhooks\Repository\WebhookDemand\getOrderField
‪getOrderField()
Definition: WebhookDemand.php:67
‪TYPO3\CMS\Webhooks\Controller\ManagementController\getLanguageService
‪getLanguageService()
Definition: ManagementController.php:139
‪TYPO3\CMS\Backend\Template\ModuleTemplate
Definition: ModuleTemplate.php:46
‪TYPO3\CMS\Core\Pagination\SimplePagination
Definition: SimplePagination.php:21
‪TYPO3\CMS\Webhooks\Pagination\DemandedArrayPaginator
Definition: DemandedArrayPaginator.php:29
‪TYPO3\CMS\Webhooks\Repository\WebhookDemand\getOrderDirection
‪getOrderDirection()
Definition: WebhookDemand.php:72
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:44
‪TYPO3\CMS\Webhooks\Repository\WebhookDemand\fromRequest
‪static fromRequest(ServerRequestInterface $request)
Definition: WebhookDemand.php:53
‪TYPO3\CMS\Backend\Template\ModuleTemplate\getDocHeaderComponent
‪getDocHeaderComponent()
Definition: ModuleTemplate.php:181
‪TYPO3\CMS\Webhooks\Controller\ManagementController\overviewAction
‪overviewAction(ServerRequestInterface $request)
Definition: ManagementController.php:53
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Backend\Template\Components\MultiRecordSelection\Action
Definition: Action.php:29
‪TYPO3\CMS\Backend\Attribute\AsController
Definition: AsController.php:25
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:46
‪TYPO3\CMS\Webhooks\Controller\ManagementController
Definition: ManagementController.php:44
‪TYPO3\CMS\Backend\Template\Components\ButtonBar\BUTTON_POSITION_RIGHT
‪const BUTTON_POSITION_RIGHT
Definition: ButtonBar.php:42
‪TYPO3\CMS\Webhooks\Repository\WebhookRepository
Definition: WebhookRepository.php:35
‪TYPO3\CMS\Webhooks\Repository\WebhookDemand\getParameters
‪getParameters()
Definition: WebhookDemand.php:127