From 63511fbf181f4a3747be572210631cde97667330 Mon Sep 17 00:00:00 2001 From: Christian Kuhn <lolli@schwarzbu.ch> Date: Wed, 15 Dec 2021 18:57:23 +0100 Subject: [PATCH] [TASK] Avoid extending view helpers in ext:extensionmanager MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ext:extensionmanager has a couple of view helpers that extend ActionViewHelper for no apparent reason. Change those to extend AbstractTagBasedViewHelper instead. Resolves: #96361 Releases: main, 11.5 Change-Id: Iedab908a30df0418a7c86d073d97a47548a87ab4 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/72665 Tested-by: Stefan Bürk <stefan@buerk.tech> Tested-by: Benni Mack <benni@typo3.org> Tested-by: core-ci <typo3@b13.com> Tested-by: Oliver Bartsch <bo@cedev.de> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by: Stefan Bürk <stefan@buerk.tech> Reviewed-by: Benni Mack <benni@typo3.org> Reviewed-by: Oliver Bartsch <bo@cedev.de> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> --- .../ViewHelpers/ReloadSqlDataViewHelper.php | 15 ++++++++---- .../ViewHelpers/RemoveExtensionViewHelper.php | 23 ++++++++++--------- ...leExtensionInstallationStateViewHelper.php | 15 ++++++------ .../Private/Templates/List/Index.html | 2 +- 4 files changed, 32 insertions(+), 23 deletions(-) diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ReloadSqlDataViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ReloadSqlDataViewHelper.php index 452452045d83..7745e3a4a301 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ReloadSqlDataViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ReloadSqlDataViewHelper.php @@ -22,22 +22,25 @@ use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\PathUtility; use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder; use TYPO3\CMS\Extbase\Utility\LocalizationUtility; -use TYPO3\CMS\Fluid\ViewHelpers\Link\ActionViewHelper; +use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper; /** * ViewHelper for update script link * @internal */ -class ReloadSqlDataViewHelper extends ActionViewHelper +class ReloadSqlDataViewHelper extends AbstractTagBasedViewHelper { /** * @var string */ - protected static $registryNamespace = 'extensionDataImport'; + protected $tagName = 'a'; + + protected static string $registryNamespace = 'extensionDataImport'; public function initializeArguments() { parent::initializeArguments(); + $this->registerUniversalTagAttributes(); $this->registerArgument('extension', 'array', 'Extension key', true); } @@ -79,7 +82,11 @@ class ReloadSqlDataViewHelper extends ActionViewHelper $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class); $uriBuilder->setRequest($this->renderingContext->getRequest()); $uriBuilder->reset(); - $uri = $uriBuilder->uriFor('reloadExtensionData', ['extension' => $extension['key']], 'Action'); + $uri = $uriBuilder->uriFor( + 'reloadExtensionData', + ['extension' => $extension['key']], + 'Action' + ); $this->tag->addAttribute('href', $uri); $this->tag->addAttribute('title', LocalizationUtility::translate($languageKey, 'extensionmanager')); $this->tag->setContent($iconFactory->getIcon($iconIdentifier, Icon::SIZE_SMALL)->render()); diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/RemoveExtensionViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/RemoveExtensionViewHelper.php index c2172bad211b..2d9543f6173c 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/RemoveExtensionViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/RemoveExtensionViewHelper.php @@ -22,22 +22,23 @@ use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder; use TYPO3\CMS\Extbase\Utility\LocalizationUtility; use TYPO3\CMS\Extensionmanager\Domain\Model\Extension; -use TYPO3\CMS\Fluid\ViewHelpers\Link\ActionViewHelper; +use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper; /** * ViewHelper for displaying a remove extension link * @internal */ -class RemoveExtensionViewHelper extends ActionViewHelper +class RemoveExtensionViewHelper extends AbstractTagBasedViewHelper { /** - * Initialize arguments - * - * @throws \TYPO3Fluid\Fluid\Core\ViewHelper\Exception + * @var string */ + protected $tagName = 'a'; + public function initializeArguments() { parent::initializeArguments(); + $this->registerUniversalTagAttributes(); $this->registerArgument('extension', 'array', '', true); } @@ -62,15 +63,15 @@ class RemoveExtensionViewHelper extends ActionViewHelper /** @var UriBuilder $uriBuilder */ $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class); $uriBuilder->setRequest($this->renderingContext->getRequest()); - $action = 'removeExtension'; $uriBuilder->reset(); $uriBuilder->setFormat('json'); - $uri = $uriBuilder->uriFor($action, [ - 'extension' => $extension['key'], - ], 'Action'); + $uri = $uriBuilder->uriFor( + 'removeExtension', + ['extension' => $extension['key']], + 'Action' + ); $this->tag->addAttribute('href', $uri); - $cssClass = 'removeExtension btn btn-default'; - $this->tag->addAttribute('class', $cssClass); + $this->tag->addAttribute('class', $this->arguments['class']); $this->tag->addAttribute('title', LocalizationUtility::translate('extensionList.remove', 'extensionmanager')); $this->tag->setContent($iconFactory->getIcon('actions-edit-delete', Icon::SIZE_SMALL)->render()); return $this->tag->render(); diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php index 781b21e623db..dbc7921b135b 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php @@ -22,13 +22,13 @@ use TYPO3\CMS\Core\Package\PackageManager; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder; use TYPO3\CMS\Extbase\Utility\LocalizationUtility; -use TYPO3\CMS\Fluid\ViewHelpers\Link\ActionViewHelper; +use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper; /** * Display a deactivate / activate link * @internal */ -class ToggleExtensionInstallationStateViewHelper extends ActionViewHelper +class ToggleExtensionInstallationStateViewHelper extends AbstractTagBasedViewHelper { /** * @var string @@ -41,6 +41,7 @@ class ToggleExtensionInstallationStateViewHelper extends ActionViewHelper public function initializeArguments() { parent::initializeArguments(); + $this->registerUniversalTagAttributes(); $this->registerArgument('extension', 'array', '', true); } @@ -68,16 +69,16 @@ class ToggleExtensionInstallationStateViewHelper extends ActionViewHelper $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class); $uriBuilder->setRequest($this->renderingContext->getRequest()); - $action = 'toggleExtensionInstallationState'; - $uri = $uriBuilder->reset()->uriFor($action, [ - 'extensionKey' => $extension['key'], - ], 'Action'); + $uri = $uriBuilder->reset()->uriFor( + 'toggleExtensionInstallationState', + ['extensionKey' => $extension['key']], + 'Action' + ); $this->tag->addAttribute('href', $uri); $label = $extension['installed'] ? 'deactivate' : 'activate'; $this->tag->addAttribute('title', LocalizationUtility::translate('extensionList.' . $label, 'extensionmanager')); $icon = $extension['installed'] ? 'uninstall' : 'install'; $this->tag->addAttribute('class', 'onClickMaskExtensionManager btn btn-default'); - $iconFactory = GeneralUtility::makeInstance(IconFactory::class); $this->tag->setContent($iconFactory->getIcon('actions-system-extension-' . $icon, Icon::SIZE_SMALL)->render()); return $this->tag->render(); diff --git a/typo3/sysext/extensionmanager/Resources/Private/Templates/List/Index.html b/typo3/sysext/extensionmanager/Resources/Private/Templates/List/Index.html index 8b26f7042907..9e52e9debaf9 100644 --- a/typo3/sysext/extensionmanager/Resources/Private/Templates/List/Index.html +++ b/typo3/sysext/extensionmanager/Resources/Private/Templates/List/Index.html @@ -125,7 +125,7 @@ <div class="btn-group"> <em:processAvailableActions extension="{extension}"> <f:if condition="!{isComposerMode}"> - <em:removeExtension class="btn btn-default" extension="{extension}" /> + <em:removeExtension class="removeExtension btn btn-default" extension="{extension}" /> <f:link.action action="downloadExtensionZip" controller="Action" arguments="{extension:extension.key}" title="{f:translate(key:'extensionList.downloadzip')}" class="btn btn-default"> <core:icon identifier="actions-system-extension-download" /> </f:link.action> -- GitLab