‪TYPO3CMS  11.5
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;
32 use TYPO3\CMS\Core\Page\PageRenderer;
37 use TYPO3Fluid\Fluid\View\ViewInterface;
38 
44 {
48  protected ‪$moduleTemplate;
49 
53  protected ‪$view;
54 
58  protected ‪$request;
59 
61  protected PageRenderer ‪$pageRenderer;
64 
65  public function ‪__construct(
67  PageRenderer ‪$pageRenderer,
70  ) {
71  $this->iconFactory = ‪$iconFactory;
72  $this->pageRenderer = ‪$pageRenderer;
73  $this->redirectRepository = ‪$redirectRepository;
74  $this->moduleTemplateFactory = ‪$moduleTemplateFactory;
75  }
76 
80  public function ‪handleRequest(ServerRequestInterface ‪$request): ResponseInterface
81  {
82  $this->request = ‪$request;
83  $this->moduleTemplate = $this->moduleTemplateFactory->create(‪$request);
84  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Modal');
85  $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Redirects/RedirectsModule');
86  $this->‪getLanguageService()->includeLLFile('EXT:redirects/Resources/Private/Language/locallang_module_redirect.xlf');
87  $this->‪initializeView('overview');
88  $this->‪overviewAction($request);
89  $this->moduleTemplate->setContent($this->view->render());
90  return new ‪HtmlResponse($this->moduleTemplate->renderContent());
91  }
92 
96  protected function ‪overviewAction(ServerRequestInterface ‪$request): void
97  {
98  $this->‪getButtons();
100  $this->view->assignMultiple([
101  'redirects' => $this->redirectRepository->findRedirectsByDemand($demand),
102  'hosts' => $this->redirectRepository->findHostsOfRedirects(),
103  'statusCodes' => $this->redirectRepository->findStatusCodesOfRedirects(),
104  'demand' => $demand,
105  'showHitCounter' => GeneralUtility::makeInstance(Features::class)->isFeatureEnabled('redirects.hitCount'),
106  'pagination' => $this->preparePagination($demand),
107  ]);
108  $this->moduleTemplate->setTitle(
109  $this->‪getLanguageService()->sL('LLL:EXT:redirects/Resources/Private/Language/locallang_module_redirect.xlf:mlang_tabs_tab')
110  );
111  }
112 
116  protected function ‪preparePagination(Demand $demand): array
117  {
118  $count = $this->redirectRepository->countRedirectsByByDemand($demand);
119  $numberOfPages = ceil($count / $demand->getLimit());
120  $endRecord = $demand->getOffset() + $demand->getLimit();
121  if ($endRecord > $count) {
122  $endRecord = $count;
123  }
124 
125  $pagination = [
126  'current' => $demand->getPage(),
127  'numberOfPages' => $numberOfPages,
128  'hasLessPages' => $demand->getPage() > 1,
129  'hasMorePages' => $demand->getPage() < $numberOfPages,
130  'startRecord' => $demand->getOffset() + 1,
131  'endRecord' => $endRecord,
132  ];
133  if ($pagination['current'] < $pagination['numberOfPages']) {
134  $pagination['nextPage'] = $pagination['current'] + 1;
135  }
136  if ($pagination['current'] > 1) {
137  $pagination['previousPage'] = $pagination['current'] - 1;
138  }
139  return $pagination;
140  }
141 
142  protected function ‪initializeView(string $templateName): void
143  {
144  $this->view = GeneralUtility::makeInstance(StandaloneView::class);
145  $this->view->setTemplate($templateName);
146  $this->view->setTemplateRootPaths(['EXT:redirects/Resources/Private/Templates/Management']);
147  $this->view->setPartialRootPaths(['EXT:redirects/Resources/Private/Partials']);
148  $this->view->setLayoutRootPaths(['EXT:redirects/Resources/Private/Layouts']);
149  }
150 
154  protected function ‪getButtons(): void
155  {
156  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
157 
158  $buttonBar = $this->moduleTemplate->getDocHeaderComponent()->getButtonBar();
159 
160  // Create new
161  $newRecordButton = $buttonBar->makeLinkButton()
162  ->setHref((string)$uriBuilder->buildUriFromRoute(
163  'record_edit',
164  [
165  'edit' => ['sys_redirect' => ['new'],
166  ],
167  'returnUrl' => (string)$uriBuilder->buildUriFromRoute('site_redirects'),
168  ]
169  ))
170  ->setTitle($this->‪getLanguageService()->getLL('redirect_add_text'))
171  ->setIcon($this->iconFactory->getIcon('actions-add', ‪Icon::SIZE_SMALL));
172  $buttonBar->addButton($newRecordButton, ‪ButtonBar::BUTTON_POSITION_LEFT, 10);
173 
174  // Reload
175  $reloadButton = $buttonBar->makeLinkButton()
176  ->setHref($this->request->getAttribute('normalizedParams')->getRequestUri())
177  ->setTitle($this->‪getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.reload'))
178  ->setIcon($this->iconFactory->getIcon('actions-refresh', ‪Icon::SIZE_SMALL));
179  $buttonBar->addButton($reloadButton, ‪ButtonBar::BUTTON_POSITION_RIGHT);
180 
181  // Shortcut
182  $shortcutButton = $buttonBar->makeShortcutButton()
183  ->setRouteIdentifier('site_redirects')
184  ->setDisplayName($this->‪getLanguageService()->sL('LLL:EXT:redirects/Resources/Private/Language/locallang_module_redirect.xlf:mlang_labels_tablabel'));
185  $buttonBar->addButton($shortcutButton, ‪ButtonBar::BUTTON_POSITION_RIGHT);
186  }
187 
188  protected function ‪getLanguageService(): ‪LanguageService
189  {
190  return ‪$GLOBALS['LANG'];
191  }
192 
194  {
195  return ‪$GLOBALS['BE_USER'];
196  }
197 }
‪TYPO3\CMS\Redirects\Repository\Demand
Definition: Demand.php:28
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:30
‪TYPO3\CMS\Redirects\Repository\Demand\getOffset
‪getOffset()
Definition: Demand.php:269
‪TYPO3\CMS\Redirects\Controller\ManagementController\preparePagination
‪preparePagination(Demand $demand)
Definition: ManagementController.php:113
‪TYPO3\CMS\Backend\Template\Components\ButtonBar\BUTTON_POSITION_LEFT
‪const BUTTON_POSITION_LEFT
Definition: ButtonBar.php:36
‪TYPO3\CMS\Backend\Template\Components\ButtonBar
Definition: ButtonBar.php:32
‪TYPO3\CMS\Redirects\Controller\ManagementController\$request
‪ServerRequestInterface $request
Definition: ManagementController.php:55
‪TYPO3\CMS\Redirects\Repository\Demand\fromRequest
‪static fromRequest(ServerRequestInterface $request)
Definition: Demand.php:108
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Backend\Template\ModuleTemplateFactory
Definition: ModuleTemplateFactory.php:29
‪TYPO3\CMS\Redirects\Controller\ManagementController\$redirectRepository
‪RedirectRepository $redirectRepository
Definition: ManagementController.php:59
‪TYPO3\CMS\Redirects\Controller\ManagementController\getLanguageService
‪getLanguageService()
Definition: ManagementController.php:185
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\Redirects\Controller\ManagementController\getButtons
‪getButtons()
Definition: ManagementController.php:151
‪TYPO3\CMS\Redirects\Controller\ManagementController\handleRequest
‪handleRequest(ServerRequestInterface $request)
Definition: ManagementController.php:77
‪TYPO3\CMS\Backend\Template\ModuleTemplate
Definition: ModuleTemplate.php:46
‪TYPO3\CMS\Redirects\Controller\ManagementController\initializeView
‪initializeView(string $templateName)
Definition: ManagementController.php:139
‪TYPO3\CMS\Redirects\Controller\ManagementController\$moduleTemplate
‪ModuleTemplate $moduleTemplate
Definition: ManagementController.php:47
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:40
‪TYPO3\CMS\Core\Configuration\Features
Definition: Features.php:56
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Redirects\Controller\ManagementController\$moduleTemplateFactory
‪ModuleTemplateFactory $moduleTemplateFactory
Definition: ManagementController.php:60
‪TYPO3\CMS\Redirects\Controller\ManagementController\getBackendUserAuthentication
‪getBackendUserAuthentication()
Definition: ManagementController.php:190
‪TYPO3\CMS\Redirects\Repository\Demand\getLimit
‪getLimit()
Definition: Demand.php:214
‪TYPO3\CMS\Redirects\Repository\RedirectRepository
Definition: RedirectRepository.php:31
‪TYPO3\CMS\Redirects\Controller\ManagementController\$iconFactory
‪IconFactory $iconFactory
Definition: ManagementController.php:57
‪TYPO3\CMS\Redirects\Controller\ManagementController\overviewAction
‪overviewAction(ServerRequestInterface $request)
Definition: ManagementController.php:93
‪TYPO3\CMS\Fluid\View\StandaloneView
Definition: StandaloneView.php:31
‪TYPO3\CMS\Redirects\Repository\Demand\getPage
‪getPage()
Definition: Demand.php:261
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Redirects\Controller\ManagementController\$view
‪ViewInterface $view
Definition: ManagementController.php:51
‪TYPO3\CMS\Redirects\Controller\ManagementController\__construct
‪__construct(IconFactory $iconFactory, PageRenderer $pageRenderer, RedirectRepository $redirectRepository, ModuleTemplateFactory $moduleTemplateFactory)
Definition: ManagementController.php:62
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Redirects\Controller\ManagementController
Definition: ManagementController.php:44
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Redirects\Controller\ManagementController\$pageRenderer
‪PageRenderer $pageRenderer
Definition: ManagementController.php:58
‪TYPO3\CMS\Redirects\Controller
Definition: ManagementController.php:18
‪TYPO3\CMS\Backend\Template\Components\ButtonBar\BUTTON_POSITION_RIGHT
‪const BUTTON_POSITION_RIGHT
Definition: ButtonBar.php:41
‪TYPO3\CMS\Core\Http\HtmlResponse
Definition: HtmlResponse.php:26