2 namespace TYPO3\CMS\Extensionmanager\Controller;
65 parent::initializeView($view);
67 $this->registerDocheaderButtons();
79 public function showConfigurationFormAction(array $extension)
81 if (!isset($extension[
'key'])) {
82 throw new ExtensionManagerException(
'Extension key not found.', 1359206803);
84 $extKey = $extension[
'key'];
85 $configuration = $this->configurationItemRepository->findByExtensionKey($extKey);
88 ->assign(
'configuration', $configuration)
89 ->assign(
'extension', $extension);
92 $extension = $this->extensionRepository->findOneByCurrentVersionByExtensionKey($extKey);
95 $this->
redirect(
'welcome',
'Distribution', null, array(
'extension' => $extension->getUid()));
97 throw new ExtensionManagerException(
'The extension ' . $extKey .
' has no configuration.');
109 public function saveAction(array $config, $extensionKey)
111 $this->saveConfiguration($config, $extensionKey);
113 $extension = $this->extensionRepository->findOneByCurrentVersionByExtensionKey($extensionKey);
115 if ($extension instanceof Extension &&
118 $this->
redirect(
'welcome',
'Distribution', null, array(
'extension' => $extension->getUid()));
120 $this->
redirect(
'showConfigurationForm', null, null, array(
'extension' => array(
'key' => $extensionKey)));
133 $this->saveConfiguration($config, $extensionKey);
147 $this->signalSlotDispatcher->dispatch(__CLASS__,
'afterExtensionConfigurationWrite', array($extensionKey, $newConfiguration, $this));
157 protected function saveConfiguration(array $config, $extensionKey)
160 $configurationUtility = $this->objectManager->get(\TYPO3\CMS\Extensionmanager\Utility\ConfigurationUtility::class);
161 $newConfiguration = $configurationUtility->getCurrentConfiguration($extensionKey);
162 \TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($newConfiguration, $config);
163 $configurationUtility->writeConfiguration(
164 $configurationUtility->convertValuedToNestedConfiguration($newConfiguration),
176 protected function registerDocheaderButtons()
178 $moduleTemplate = $this->view->getModuleTemplate();
182 $buttonBar = $moduleTemplate->getDocHeaderComponent()->getButtonBar();
184 $uriBuilder = $this->controllerContext->getUriBuilder();
185 $uri =
$uriBuilder->reset()->uriFor(
'index', [],
'List');
187 $icon = $this->view->getModuleTemplate()->getIconFactory()->getIcon(
'actions-view-go-back',
Icon::SIZE_SMALL);
188 $goBackButton = $buttonBar->makeLinkButton()
190 ->setTitle($this->
translate(
'extConfTemplate.backToList'))
194 $saveSplitButton = $buttonBar->makeSplitButton();
196 $saveButton = $buttonBar->makeInputButton()
197 ->setName(
'_savedok')
199 ->setTitle(
$lang->sL(
'LLL:EXT:lang/locallang_core.xlf:rm.saveDoc',
true))
200 ->setForm(
'configurationform')
201 ->setIcon($moduleTemplate->getIconFactory()->getIcon(
'actions-document-save',
Icon::SIZE_SMALL));
202 $saveSplitButton->addItem($saveButton,
true);
205 $saveAndCloseButton = $buttonBar->makeInputButton()
206 ->setName(
'_saveandclosedok')
207 ->setClasses(
't3js-save-close')
209 ->setTitle(
$lang->sL(
'LLL:EXT:lang/locallang_core.xlf:rm.saveCloseDoc',
true))
210 ->setForm(
'configurationform')
211 ->setIcon($moduleTemplate->getIconFactory()->getIcon(
212 'actions-document-save-close',
215 $saveSplitButton->addItem($saveAndCloseButton);