‪TYPO3CMS  ‪main
AbstractController.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 
32 {
33  public const ‪TRIGGER_RefreshModuleMenu = 'refreshModuleMenu';
34  public const ‪TRIGGER_RefreshTopbar = 'refreshTopbar';
35 
37 
38  protected array ‪$triggerArguments = [
41  ];
42 
44  {
45  $this->moduleTemplateFactory = ‪$moduleTemplateFactory;
46  }
47 
51  protected function ‪translate(string $key, ?array ‪$arguments = null): string
52  {
53  return ‪LocalizationUtility::translate($key, 'extensionmanager', ‪$arguments) ?? '';
54  }
55 
62  {
63  $triggers = [];
64  foreach ($this->triggerArguments as $triggerArgument) {
65  if ($this->request->hasArgument($triggerArgument)) {
66  $triggers[$triggerArgument] = $this->request->getArgument($triggerArgument);
67  }
68  }
69  ‪$view->assign('triggers', $triggers);
70  }
71 
77  {
78  $menuItems = [
79  'installedExtensions' => [
80  'controller' => 'List',
81  'action' => 'index',
82  'label' => $this->‪translate('installedExtensions'),
83  ],
84  'extensionComposerStatus' => [
85  'controller' => 'ExtensionComposerStatus',
86  'action' => 'list',
87  'label' => $this->‪translate('extensionComposerStatus'),
88  ],
89  ];
90 
91  if (!(bool)($this->settings['offlineMode'] ?? false) && !‪Environment::isComposerMode()) {
92  $menuItems['getExtensions'] = [
93  'controller' => 'List',
94  'action' => 'ter',
95  'label' => $this->‪translate('getExtensions'),
96  ];
97  $menuItems['distributions'] = [
98  'controller' => 'List',
99  'action' => 'distributions',
100  'label' => $this->‪translate('distributions'),
101  ];
102 
103  if ($this->actionMethodName === 'showAllVersionsAction') {
104  $menuItems['showAllVersions'] = [
105  'controller' => 'List',
106  'action' => 'showAllVersions',
107  'label' => $this->‪translate('showAllVersions') . ' ' . $request->‪getArgument('extensionKey'),
108  ];
109  }
110  }
111 
112  ‪$view = $this->moduleTemplateFactory->create(‪$request);
113  // Assign some view vars we always need.
114  ‪$view->assignMultiple([
115  'extensionName' => ‪$request->‪getControllerExtensionName(),
116  'controllerName' => ‪$request->‪getControllerName(),
117  'actionName' => ‪$request->‪getControllerActionName(),
118  ]);
119  $menu = ‪$view->getDocHeaderComponent()->getMenuRegistry()->makeMenu();
120  $menu->setIdentifier('ExtensionManagerModuleMenu');
121  $menu->setLabel(
122  $this->‪translate(
123  'LLL:EXT:backend/Resources/Private/Language/locallang.xlf:moduleMenu.dropdown.label'
124  )
125  );
126 
127  foreach ($menuItems as $menuItemConfig) {
128  if (‪$request->‪getControllerName() === $menuItemConfig['controller']) {
129  $isActive = ‪$request->‪getControllerActionName() === $menuItemConfig['action'];
130  } else {
131  $isActive = false;
132  }
133  $menuItem = $menu->makeMenuItem()
134  ->setTitle($menuItemConfig['label'])
135  ->setHref($this->uriBuilder->reset()->uriFor($menuItemConfig['action'], [], $menuItemConfig['controller']))
136  ->setActive($isActive);
137  $menu->addMenuItem($menuItem);
138  if ($isActive) {
139  ‪$view->setTitle(
140  $this->‪translate('LLL:EXT:extensionmanager/Resources/Private/Language/locallang_mod.xlf:mlang_tabs_tab'),
141  $menuItemConfig['label']
142  );
143  }
144  }
145 
146  ‪$view->getDocHeaderComponent()->getMenuRegistry()->addMenu($menu);
147  ‪$view->setFlashMessageQueue($this->‪getFlashMessageQueue());
148 
149  return ‪$view;
150  }
151 }
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$request
‪RequestInterface $request
Definition: ActionController.php:106
‪TYPO3\CMS\Extbase\Utility\LocalizationUtility
Definition: LocalizationUtility.php:35
‪TYPO3\CMS\Backend\Template\ModuleTemplateFactory
Definition: ModuleTemplateFactory.php:33
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$view
‪ViewInterface $view
Definition: ActionController.php:82
‪TYPO3\CMS\Extensionmanager\Controller\AbstractController\$triggerArguments
‪array $triggerArguments
Definition: AbstractController.php:38
‪TYPO3\CMS\Extensionmanager\Controller\AbstractController\translate
‪translate(string $key, ?array $arguments=null)
Definition: AbstractController.php:51
‪TYPO3\CMS\Extbase\Mvc\RequestInterface\getControllerName
‪getControllerName()
‪TYPO3\CMS\Core\Core\Environment\isComposerMode
‪static isComposerMode()
Definition: Environment.php:137
‪TYPO3\CMS\Extensionmanager\Controller\AbstractController\injectModuleTemplateFactory
‪injectModuleTemplateFactory(ModuleTemplateFactory $moduleTemplateFactory)
Definition: AbstractController.php:43
‪TYPO3\CMS\Extbase\Mvc\RequestInterface\getArgument
‪getArgument(string $argumentName)
‪TYPO3\CMS\Extensionmanager\Controller
Definition: AbstractController.php:18
‪TYPO3\CMS\Backend\Template\ModuleTemplate
Definition: ModuleTemplate.php:46
‪TYPO3\CMS\Extensionmanager\Controller\AbstractController\initializeModuleTemplate
‪initializeModuleTemplate(RequestInterface $request)
Definition: AbstractController.php:76
‪TYPO3\CMS\Extensionmanager\Controller\AbstractController\TRIGGER_RefreshModuleMenu
‪const TRIGGER_RefreshModuleMenu
Definition: AbstractController.php:33
‪TYPO3\CMS\Extbase\Utility\LocalizationUtility\translate
‪static string null translate(string $key, ?string $extensionName=null, array $arguments=null, Locale|string $languageKey=null)
Definition: LocalizationUtility.php:47
‪TYPO3\CMS\Extensionmanager\Controller\AbstractController\TRIGGER_RefreshTopbar
‪const TRIGGER_RefreshTopbar
Definition: AbstractController.php:34
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\$arguments
‪Arguments $arguments
Definition: ActionController.php:119
‪TYPO3\CMS\Extensionmanager\Controller\AbstractController
Definition: AbstractController.php:32
‪TYPO3\CMS\Extensionmanager\Controller\AbstractController\$moduleTemplateFactory
‪ModuleTemplateFactory $moduleTemplateFactory
Definition: AbstractController.php:36
‪TYPO3\CMS\Extensionmanager\Controller\AbstractController\handleTriggerArguments
‪handleTriggerArguments(ModuleTemplate $view)
Definition: AbstractController.php:61
‪TYPO3\CMS\Extbase\Mvc\RequestInterface
Definition: RequestInterface.php:24
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:41
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController
Definition: ActionController.php:63
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController\getFlashMessageQueue
‪getFlashMessageQueue(string $identifier=null)
Definition: ActionController.php:658
‪TYPO3\CMS\Extbase\Mvc\RequestInterface\getControllerExtensionName
‪getControllerExtensionName()
‪TYPO3\CMS\Extbase\Mvc\RequestInterface\getControllerActionName
‪getControllerActionName()