2 namespace TYPO3\CMS\Extensionmanager\Controller;
104 $this->pageRenderer->addInlineLanguageLabelFile(
'EXT:extensionmanager/Resources/Private/Language/locallang.xlf');
105 if ($this->configurationUtility->getCurrentConfiguration(
'extensionmanager')[
'offlineMode'][
'value']) {
106 $this->settings[
'offlineMode'] =
true;
120 parent::initializeView($view);
122 $this->registerDocheaderButtons();
134 'composerMode.message',
138 'composerMode.title',
154 $availableAndInstalledExtensions = $this->listUtility->getAvailableAndInstalledExtensionsWithAdditionalInformation();
155 ksort($availableAndInstalledExtensions);
156 $this->view->assign(
'extensions', $availableAndInstalledExtensions);
167 public function unresolvedDependenciesAction($extensionKey)
169 $availableExtensions = $this->listUtility->getAvailableExtensions();
170 if (isset($availableExtensions[$extensionKey])) {
171 $extensionArray = $this->listUtility->enrichExtensionsWithEmConfAndTerInformation(
173 $extensionKey => $availableExtensions[$extensionKey]
177 $extensionModelUtility = $this->objectManager->get(ExtensionModelUtility::class);
178 $extension = $extensionModelUtility->mapExtensionArrayToModel($extensionArray[$extensionKey]);
180 throw new ExtensionManagerException(
'Extension ' . $extensionKey .
' is not available', 1402421007);
182 $this->dependencyUtility->checkDependencies($extension);
183 $this->view->assign(
'extension', $extension);
184 $this->view->assign(
'unresolvedDependencies', $this->dependencyUtility->getDependencyErrors());
197 $search = trim($search);
198 if (!empty($search)) {
199 $extensions = $this->extensionRepository->findByTitleOrAuthorNameOrExtensionKey($search);
201 $extensions = $this->extensionRepository->findAll();
203 $availableAndInstalledExtensions = $this->listUtility->getAvailableAndInstalledExtensions($this->listUtility->getAvailableExtensions());
204 $this->view->assign(
'extensions', $extensions)
205 ->assign(
'search', $search)
206 ->assign(
'availableAndInstalled', $availableAndInstalledExtensions);
215 public function distributionsAction($showUnsuitableDistributions =
false)
219 if ($importExportInstalled) {
222 $repositoryHelper = $this->objectManager->get(Helper::class);
225 $isExtListUpdateNecessary = $repositoryHelper->isExtListUpdateNecessary();
226 if ($isExtListUpdateNecessary > 0 && ($isExtListUpdateNecessary & $repositoryHelper::PROBLEM_EXTENSION_HASH_CHANGED) === 0) {
227 $repositoryHelper->updateExtList();
229 }
catch (ExtensionManagerException $e) {
233 $officialDistributions = $this->extensionRepository->findAllOfficialDistributions();
234 $communityDistributions = $this->extensionRepository->findAllCommunityDistributions();
236 if (!$showUnsuitableDistributions) {
237 $suitableOfficialDistributions = $this->dependencyUtility->getExtensionsSuitableForTypo3Version($officialDistributions);
238 $this->view->assign(
'officialDistributions', $suitableOfficialDistributions);
239 $suitableCommunityDistributions = $this->dependencyUtility->getExtensionsSuitableForTypo3Version($communityDistributions);
240 $this->view->assign(
'communityDistributions', $suitableCommunityDistributions);
242 $this->view->assign(
'officialDistributions', $officialDistributions);
243 $this->view->assign(
'communityDistributions', $communityDistributions);
246 $this->view->assign(
'enableDistributionsView', $importExportInstalled);
247 $this->view->assign(
'showUnsuitableDistributions', $showUnsuitableDistributions);
258 $currentVersion = $this->extensionRepository->findOneByCurrentVersionByExtensionKey($extensionKey);
259 $extensions = $this->extensionRepository->findByExtensionKeyOrderedByVersion($extensionKey);
261 $this->view->assignMultiple(
263 'extensionKey' => $extensionKey,
264 'currentVersion' => $currentVersion,
265 'extensions' => $extensions
275 protected function registerDocheaderButtons()
281 if (!in_array($this->actionMethodName, [
'indexAction',
'terAction',
'showAllVersionsAction'],
true)) {
286 $buttonBar = $this->view->getModuleTemplate()->getDocHeaderComponent()->getButtonBar();
287 $uriBuilder = $this->controllerContext->getUriBuilder();
289 if ($this->actionMethodName ===
'showAllVersionsAction') {
290 $uri =
$uriBuilder->reset()->uriFor(
'ter', [],
'List');
291 $title = $this->
translate(
'extConfTemplate.backToList');
292 $icon = $this->view->getModuleTemplate()->getIconFactory()->getIcon(
'actions-view-go-back',
Icon::SIZE_SMALL);
295 $uri =
$uriBuilder->reset()->uriFor(
'form', [],
'UploadExtensionFile');
296 $title = $this->
translate(
'extensionList.uploadExtension');
297 $icon = $this->view->getModuleTemplate()->getIconFactory()->getIcon(
'actions-edit-upload',
Icon::SIZE_SMALL);
298 $classes =
't3js-upload';
300 $button = $buttonBar->makeLinkButton()
303 ->setClasses($classes)