diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-82414-RemoveCMSBaseViewHelperClasses.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-82414-RemoveCMSBaseViewHelperClasses.rst new file mode 100644 index 0000000000000000000000000000000000000000..69041b7cf976a8ed6ab88969241bad04d8e75bb7 --- /dev/null +++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-82414-RemoveCMSBaseViewHelperClasses.rst @@ -0,0 +1,52 @@ +.. include:: ../../Includes.txt + +====================================================== +Breaking: #82414 - CMS ViewHelper base classes removed +====================================================== + +See :issue:`82414` + +Description +=========== + +The following ViewHelper base classes have been removed: + +- :php:`TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper` +- :php:`TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper` +- :php:`TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper` +- :php:`TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition` + +Aliases are in place, but the following key differences may break your code: + +- Render method arguments are no longer possible at all +- The property :php:`$this->controllerContext` is no longer defined + + +Impact +====== + +Render method arguments have been deprecated for a long time and should already have been migrated +in your code. If you still have ViewHelpers using render method arguments, these will break +after this change. + + +Affected Installations +====================== + +All instances which use a ViewHelper that either contains render method arguments, extends from one +of the base classes above, or or accesses :php:`$this->controllerContext`. + + +Migration +========= + +Migrate to use `renderStatic` methods (see examples in TYPO3 Core, EXT:fluid) to not use +render method arguments. + + +ViewHelpers which access :php:`$this->controllerContext` can instead access +:php:`$this->renderingContext->getControllerContext()`. + +Migrating this can be done with search-and-replace for all common use cases. + +.. index:: Fluid, NotScanned \ No newline at end of file diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ConfigureExtensionViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ConfigureExtensionViewHelper.php index b58dbf9f4f865f01a5c62e1de45fd453cca2bc9c..71ac2beb4d1cadaf28fdf62736b97791e3441dd6 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ConfigureExtensionViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ConfigureExtensionViewHelper.php @@ -49,7 +49,7 @@ class ConfigureExtensionViewHelper extends Link\ActionViewHelper $content = (string)$this->renderChildren(); if ($extension['installed'] && file_exists(PATH_site . $extension['siteRelPath'] . 'ext_conf_template.txt')) { - $uriBuilder = $this->controllerContext->getUriBuilder(); + $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder(); $action = 'showConfigurationForm'; $uri = $uriBuilder->reset()->uriFor( $action, diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/DownloadExtensionViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/DownloadExtensionViewHelper.php index fa9c6baeae178d926dd3a87f0c3c1cd745718f86..5c8a92bd6a8e28c62f2aa90f6507bb0cdef3f9a5 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/DownloadExtensionViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/DownloadExtensionViewHelper.php @@ -90,7 +90,7 @@ class DownloadExtensionViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\Abst </li>'; } $pathSelector .= '</ul>'; - $uriBuilder = $this->controllerContext->getUriBuilder(); + $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder(); $action = 'checkDependencies'; $uriBuilder->reset(); $uriBuilder->setFormat('json'); @@ -138,7 +138,7 @@ class DownloadExtensionViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\Abst */ protected function getDefaultFieldNamePrefix() { - $request = $this->controllerContext->getRequest(); + $request = $this->renderingContext->getControllerContext()->getRequest(); if ($this->hasArgument('extensionName')) { $extensionName = $this->arguments['extensionName']; } else { diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/Link/ActionViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/Link/ActionViewHelper.php index 41976f5d7b65f87b8f3a0d3bbf5de96f0c000f9e..d22ea77628adf00f9ba85fdcad3bda01ab89c3f5 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/Link/ActionViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/Link/ActionViewHelper.php @@ -26,6 +26,19 @@ class ActionViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBased */ protected $tagName = 'a'; + /** + * @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface + */ + protected $objectManager; + + /** + * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager + */ + public function injectObjectManager(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager) + { + $this->objectManager = $objectManager; + } + /** * Arguments initialization */ diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ReloadSqlDataViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ReloadSqlDataViewHelper.php index 966d289465da0d12716911fad06e4a91b21d2398..c22e8eeea39c13e63db4e4813ca52a7a3250188c 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ReloadSqlDataViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ReloadSqlDataViewHelper.php @@ -70,7 +70,7 @@ class ReloadSqlDataViewHelper extends Link\ActionViewHelper $languageKey = 'extensionList.databaseImport'; } - $uriBuilder = $this->controllerContext->getUriBuilder(); + $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder(); $uriBuilder->reset(); $uri = $uriBuilder->uriFor('reloadExtensionData', ['extension' => $extension['key']], 'Action'); $this->tag->addAttribute('href', $uri); diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/RemoveExtensionViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/RemoveExtensionViewHelper.php index a969aa0d97b07273fcb0477d86278695deb60393..fda413b39ef9ea30090c8da2a16377a45473c44a 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/RemoveExtensionViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/RemoveExtensionViewHelper.php @@ -53,7 +53,7 @@ class RemoveExtensionViewHelper extends Link\ActionViewHelper ) { return '<span class="btn btn-default disabled">' . $iconFactory->getIcon('empty-empty', Icon::SIZE_SMALL)->render() . '</span>'; } - $uriBuilder = $this->controllerContext->getUriBuilder(); + $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder(); $action = 'removeExtension'; $uriBuilder->reset(); $uriBuilder->setFormat('json'); diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ShowExtensionVersionsViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ShowExtensionVersionsViewHelper.php index 7706319047282e56bbe437551421f62159a31f55..4d137a9bfa21379f6926b59f9997d7533ad94708 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ShowExtensionVersionsViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ShowExtensionVersionsViewHelper.php @@ -46,7 +46,7 @@ class ShowExtensionVersionsViewHelper extends Link\ActionViewHelper /** @var Extension $extension */ $extension = $this->arguments['extension']; - $uriBuilder = $this->controllerContext->getUriBuilder(); + $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder(); $action = 'showAllVersions'; $uri = $uriBuilder->reset()->uriFor($action, [ 'extensionKey' => $extension->getExtensionKey(), diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php index e872481ca79c0dd7695840345f94d935708da80c..4fedb54bee16e84dce163b1fc7161408bf4495bb 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php @@ -56,7 +56,7 @@ class ToggleExtensionInstallationStateViewHelper extends Link\ActionViewHelper return ''; } - $uriBuilder = $this->controllerContext->getUriBuilder(); + $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder(); $action = 'toggleExtensionInstallationState'; $uri = $uriBuilder->reset()->uriFor($action, [ 'extensionKey' => $extension['key'] diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/UpdateScriptViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/UpdateScriptViewHelper.php index 41ba7e5399d0590d2eb6fe8884f273c95b9699dd..1edb205cf9e1b9bf8cf70f67d62b582d61dfe69f 100644 --- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/UpdateScriptViewHelper.php +++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/UpdateScriptViewHelper.php @@ -24,19 +24,6 @@ use TYPO3\CMS\Core\Utility\GeneralUtility; */ class UpdateScriptViewHelper extends Link\ActionViewHelper { - /** - * @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface - */ - protected $objectManager; - - /** - * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager - */ - public function injectObjectManager(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager) - { - $this->objectManager = $objectManager; - } - /** * initialize arguments */ @@ -62,7 +49,7 @@ class UpdateScriptViewHelper extends Link\ActionViewHelper /** @var IconFactory $iconFactory */ $iconFactory = GeneralUtility::makeInstance(IconFactory::class); if ($updateScriptUtility->checkUpdateScriptExists($extensionKey)) { - $uriBuilder = $this->controllerContext->getUriBuilder(); + $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder(); $action = 'show'; $uri = $uriBuilder->reset()->uriFor( $action, diff --git a/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractConditionViewHelper.php b/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractConditionViewHelper.php deleted file mode 100644 index 353e8e639c47bb9377969f6bd4802ce9dbdb83e7..0000000000000000000000000000000000000000 --- a/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractConditionViewHelper.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php -namespace TYPO3\CMS\Fluid\Core\ViewHelper; - -/* - * This file is part of the TYPO3 CMS project. - * - * It is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, either version 2 - * of the License, or any later version. - * - * For the full copyright and license information, please read the - * LICENSE.txt file that was distributed with this source code. - * - * The TYPO3 project - inspiring people to share! - */ - -/** - * Class AbstractConditionViewHelper - */ -abstract class AbstractConditionViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper -{ - /** - * Controller Context to use - * - * @var \TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext - * @api - */ - protected $controllerContext; - - /** - * Renders <f:then> child if $condition is true, otherwise renders <f:else> child. - * - * @param bool $condition View helper condition - * @return string the rendered string - * @api - */ - public function render() - { - if (static::evaluateCondition($this->arguments)) { - return $this->renderThenChild(); - } - return $this->renderElseChild(); - } - - /** - * @param \TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface $renderingContext - */ - public function setRenderingContext(\TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface $renderingContext) - { - parent::setRenderingContext($renderingContext); - if ($renderingContext instanceof \TYPO3\CMS\Fluid\Core\Rendering\RenderingContext) { - $this->controllerContext = $renderingContext->getControllerContext(); - } - } -} diff --git a/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractTagBasedViewHelper.php b/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractTagBasedViewHelper.php deleted file mode 100644 index fcc976df810429ac3943d9273e3ccd046c2d65be..0000000000000000000000000000000000000000 --- a/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractTagBasedViewHelper.php +++ /dev/null @@ -1,138 +0,0 @@ -<?php -namespace TYPO3\CMS\Fluid\Core\ViewHelper; - -/* - * This file is part of the TYPO3 CMS project. - * - * It is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, either version 2 - * of the License, or any later version. - * - * For the full copyright and license information, please read the - * LICENSE.txt file that was distributed with this source code. - * - * The TYPO3 project - inspiring people to share! - */ - -/** - * Tag based view helper. - * Sould be used as the base class for all view helpers which output simple tags, as it provides some - * convenience methods to register default attributes, ... - * - * @api - */ -abstract class AbstractTagBasedViewHelper extends AbstractViewHelper -{ - /** - * Names of all registered tag attributes - * - * @var array - */ - private static $tagAttributes = []; - - /** - * name of the tag to be created by this view helper - * - * @var string - * @api - */ - protected $tagName = 'div'; - - /** - * @var \TYPO3Fluid\Fluid\Core\ViewHelper\TagBuilder - */ - protected $tag; - - /** - * @var bool - */ - protected $escapeOutput = false; - - /** - * Constructor - */ - public function __construct() - { - $this->tag = new \TYPO3Fluid\Fluid\Core\ViewHelper\TagBuilder(); - } - - /** - * Constructor - * - * @api - */ - public function initializeArguments() - { - $this->registerArgument('additionalAttributes', 'array', 'Additional tag attributes. They will be added directly to the resulting HTML tag.', false); - $this->registerArgument('data', 'array', 'Additional data-* attributes. They will each be added with a "data-" prefix.', false); - parent::initializeArguments(); - } - - /** - * Sets the tag name to $this->tagName. - * Additionally, sets all tag attributes which were registered in - * $this->tagAttributes and additionalArguments. - * - * Will be invoked just before the render method. - * - * @api - */ - public function initialize() - { - parent::initialize(); - $this->tag->reset(); - $this->tag->setTagName($this->tagName); - if ($this->hasArgument('additionalAttributes') && is_array($this->arguments['additionalAttributes'])) { - $this->tag->addAttributes($this->arguments['additionalAttributes']); - } - - if ($this->hasArgument('data') && is_array($this->arguments['data'])) { - foreach ($this->arguments['data'] as $dataAttributeKey => $dataAttributeValue) { - $this->tag->addAttribute('data-' . $dataAttributeKey, $dataAttributeValue); - } - } - - if (isset(self::$tagAttributes[static::class])) { - foreach (self::$tagAttributes[static::class] as $attributeName) { - if ($this->hasArgument($attributeName) && $this->arguments[$attributeName] !== '') { - $this->tag->addAttribute($attributeName, $this->arguments[$attributeName]); - } - } - } - } - - /** - * Register a new tag attribute. Tag attributes are all arguments which will be directly appended to a tag if you call $this->initializeTag() - * - * @param string $name Name of tag attribute - * @param string $type Type of the tag attribute - * @param string $description Description of tag attribute - * @param bool $required set to TRUE if tag attribute is required. Defaults to FALSE. - * @param string $default Default value - * @api - */ - protected function registerTagAttribute($name, $type, $description, $required = false, $default = null) - { - $this->registerArgument($name, $type, $description, $required, $default); - self::$tagAttributes[static::class][$name] = $name; - } - - /** - * Registers all standard HTML universal attributes. - * Should be used inside registerArguments(); - * - * @api - */ - protected function registerUniversalTagAttributes() - { - $this->registerTagAttribute('class', 'string', 'CSS class(es) for this element'); - $this->registerTagAttribute('dir', 'string', 'Text direction for this HTML element. Allowed strings: "ltr" (left to right), "rtl" (right to left)'); - $this->registerTagAttribute('id', 'string', 'Unique (in this file) identifier for this HTML element.'); - $this->registerTagAttribute('lang', 'string', 'Language for this element. Use short names specified in RFC 1766'); - $this->registerTagAttribute('style', 'string', 'Individual CSS styles for this element'); - $this->registerTagAttribute('title', 'string', 'Tooltip text of element'); - $this->registerTagAttribute('accesskey', 'string', 'Keyboard shortcut to access this element'); - $this->registerTagAttribute('tabindex', 'integer', 'Specifies the tab order of this element'); - $this->registerTagAttribute('onclick', 'string', 'JavaScript evaluated for the onclick event'); - } -} diff --git a/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractViewHelper.php b/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractViewHelper.php deleted file mode 100644 index 17a28f3a51b9c36f920ca0f2b498f1519f1c7aa1..0000000000000000000000000000000000000000 --- a/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractViewHelper.php +++ /dev/null @@ -1,170 +0,0 @@ -<?php -namespace TYPO3\CMS\Fluid\Core\ViewHelper; - -/* - * This file is part of the TYPO3 CMS project. - * - * It is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, either version 2 - * of the License, or any later version. - * - * For the full copyright and license information, please read the - * LICENSE.txt file that was distributed with this source code. - * - * The TYPO3 project - inspiring people to share! - */ - -use Psr\Log\LoggerInterface; -use TYPO3\CMS\Core\Log\LogManager; -use TYPO3\CMS\Core\Utility\GeneralUtility; -use TYPO3\CMS\Extbase\Reflection\ReflectionService; - -/** - * The abstract base class for all view helpers. - * - * @api - */ -abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper implements \TYPO3Fluid\Fluid\Core\ViewHelper\ViewHelperInterface -{ - /** - * Controller Context to use - * - * @var \TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext - * @api - */ - protected $controllerContext; - - /** - * @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface - */ - protected $objectManager; - - /** - * @param \TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface $renderingContext - */ - public function setRenderingContext(\TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface $renderingContext) - { - parent::setRenderingContext($renderingContext); - if ($renderingContext instanceof \TYPO3\CMS\Fluid\Core\Rendering\RenderingContext) { - $this->controllerContext = $renderingContext->getControllerContext(); - } - } - - /** - * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager - */ - public function injectObjectManager(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager) - { - $this->objectManager = $objectManager; - } - - /** - * Call the render() method and handle errors. - * - * @return string the rendered ViewHelper - * @throws Exception - */ - protected function callRenderMethod() - { - $renderMethodParameters = []; - if ($this->hasRenderMethodArguments()) { - foreach ($this->argumentDefinitions as $argumentName => $argumentDefinition) { - if ($argumentDefinition instanceof \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition && $argumentDefinition->isMethodParameter()) { - $renderMethodParameters[$argumentName] = $this->arguments[$argumentName]; - } - } - } - - try { - return call_user_func_array([$this, 'render'], $renderMethodParameters); - } catch (Exception $exception) { - if (GeneralUtility::getApplicationContext()->isProduction()) { - $this->getLogger()->error('A Fluid ViewHelper Exception was captured: ' . $exception->getMessage() . ' (' . $exception->getCode() . ')', ['exception' => $exception]); - return ''; - } - throw $exception; - } - } - - /** - * @return LoggerInterface - */ - protected function getLogger() - { - return GeneralUtility::makeInstance(LogManager::class)->getLogger(__CLASS__); - } - - /** - * @deprecated since TYPO3 v9, will be removed in TYPO3 v10; intentionally not deprecation logged (logged once above) - * @return bool - */ - protected function hasRenderMethodArguments() - { - return (new \ReflectionMethod($this, 'render'))->getNumberOfParameters() > 0; - } - - /** - * Register method arguments for "render" by analysing the doc comment above. - * - * @deprecated since TYPO3 v9, will be removed in TYPO3 v10; logged from this location but not elsewhere in class. - * @throws \TYPO3Fluid\Fluid\Core\Parser\Exception - */ - protected function registerRenderMethodArguments() - { - trigger_error(sprintf('Render method argument support is deprecated (used on class "%s"), switch to initializeArguments and registerArgument.', static::class), E_USER_DEPRECATED); - - $reflectionService = $this->getReflectionService(); - $methodParameters = $reflectionService->getMethodParameters(static::class, 'render'); - $methodTags = $reflectionService->getMethodTagsValues(static::class, 'render'); - - $paramAnnotations = []; - if (isset($methodTags['param'])) { - $paramAnnotations = $methodTags['param']; - } - - $i = 0; - foreach ($methodParameters as $parameterName => $parameterInfo) { - $dataType = null; - if (isset($parameterInfo['type'])) { - $dataType = isset($parameterInfo['array']) && (bool)$parameterInfo['array'] ? 'array' : $parameterInfo['type']; - } else { - throw new \TYPO3\CMS\Fluid\Core\Exception('Could not determine type of argument "' . $parameterName . '" of the render-method in ViewHelper "' . static::class . '". Either the methods docComment is invalid or some PHP optimizer strips off comments.', 1242292003); - } - - $description = ''; - if (isset($paramAnnotations[$i])) { - $explodedAnnotation = explode(' ', $paramAnnotations[$i]); - array_shift($explodedAnnotation); - array_shift($explodedAnnotation); - $description = implode(' ', $explodedAnnotation); - } - $defaultValue = null; - if (isset($parameterInfo['defaultValue'])) { - $defaultValue = $parameterInfo['defaultValue']; - } - $this->argumentDefinitions[$parameterName] = new ArgumentDefinition($parameterName, $dataType, $description, ($parameterInfo['optional'] === false), $defaultValue, true); - $i++; - } - } - - /** - * @deprecated since TYPO3 v9, will be removed in TYPO3 v10; intentionally not deprecation logged (logged once above) - * @return ReflectionService - */ - protected function getReflectionService() - { - return $this->objectManager->get(ReflectionService::class); - } - - /** - * @return \TYPO3Fluid\Fluid\Core\ViewHelper\ArgumentDefinition[] - * @throws \TYPO3Fluid\Fluid\Core\Parser\Exception - */ - public function prepareArguments() - { - if ($this->hasRenderMethodArguments() && method_exists($this, 'registerRenderMethodArguments')) { - $this->registerRenderMethodArguments(); - } - return parent::prepareArguments(); - } -} diff --git a/typo3/sysext/fluid/Classes/Core/ViewHelper/ArgumentDefinition.php b/typo3/sysext/fluid/Classes/Core/ViewHelper/ArgumentDefinition.php deleted file mode 100644 index cc2b5054a9cfe6f0fb17560c1f9602cf962f6dad..0000000000000000000000000000000000000000 --- a/typo3/sysext/fluid/Classes/Core/ViewHelper/ArgumentDefinition.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php -namespace TYPO3\CMS\Fluid\Core\ViewHelper; - -/* - * This file is part of the TYPO3 CMS project. - * - * It is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, either version 2 - * of the License, or any later version. - * - * For the full copyright and license information, please read the - * LICENSE.txt file that was distributed with this source code. - * - * The TYPO3 project - inspiring people to share! - */ - -/** - * Argument definition of each view helper argument - * - * This subclass of ArgumentDefinition from Fluid has - * one additional capability: defining that an argument - * should be expected as a parameter for the render() - * method - which means the ViewHelperInvoker will be - * processing it a bit differently. Other than this it - * is a normal Fluid ArgumentDefinition. - */ -class ArgumentDefinition extends \TYPO3Fluid\Fluid\Core\ViewHelper\ArgumentDefinition -{ - /** - * TRUE if it is a method parameter - * - * @var bool - */ - protected $isMethodParameter = false; - - /** - * Constructor for this argument definition. - * - * @param string $name Name of argument - * @param string $type Type of argument - * @param string $description Description of argument - * @param bool $required TRUE if argument is required - * @param mixed $defaultValue Default value - * @param bool $isMethodParameter TRUE if this argument is a method parameter - */ - public function __construct($name, $type, $description, $required, $defaultValue = null, $isMethodParameter = false) - { - $this->name = $name; - $this->type = $type; - $this->description = $description; - $this->required = $required; - $this->defaultValue = $defaultValue; - $this->isMethodParameter = $isMethodParameter; - } - - /** - * TRUE if it is a method parameter - * - * @return bool TRUE if it's a method parameter - */ - public function isMethodParameter() - { - return $this->isMethodParameter; - } -} diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php index c074f08b4b233db511a426ff4748e5f23c8021b5..a9cc8eda0bd541785b0e1836cf99dca01d97526d 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php @@ -99,7 +99,7 @@ class ContainerViewHelper extends AbstractBackendViewHelper } // Add inline language labels if (is_array($addJsInlineLabels) && count($addJsInlineLabels) > 0) { - $extensionKey = $this->controllerContext->getRequest()->getControllerExtensionKey(); + $extensionKey = $this->renderingContext->getControllerContext()->getRequest()->getControllerExtensionKey(); foreach ($addJsInlineLabels as $key) { $label = LocalizationUtility::translate($key, $extensionKey); $pageRenderer->addInlineLanguageLabel($key, $label); diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Be/Menus/ActionMenuItemViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Be/Menus/ActionMenuItemViewHelper.php index 715c495fc13b3e8cc86765cc555af4c62c2d867e..327e004185b163a2642226b9d71721e10288a340 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/Be/Menus/ActionMenuItemViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/Be/Menus/ActionMenuItemViewHelper.php @@ -76,10 +76,10 @@ class ActionMenuItemViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\Abstract $action = $this->arguments['action']; $arguments = $this->arguments['arguments']; - $uriBuilder = $this->controllerContext->getUriBuilder(); + $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder(); $uri = $uriBuilder->reset()->uriFor($action, $arguments, $controller); $this->tag->addAttribute('value', $uri); - $currentRequest = $this->controllerContext->getRequest(); + $currentRequest = $this->renderingContext->getControllerContext()->getRequest(); $currentController = $currentRequest->getControllerName(); $currentAction = $currentRequest->getControllerActionName(); if ($action === $currentAction && $controller === $currentController) { diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/MediaViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/MediaViewHelper.php index c979e5bbe54a4231d6e7e78d814db63c48a9eb88..84f138cf2f74271aa5c10536552259a0096dc8b2 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/MediaViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/MediaViewHelper.php @@ -18,6 +18,7 @@ use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection; use TYPO3\CMS\Core\Resource\FileInterface; use TYPO3\CMS\Core\Resource\FileReference; use TYPO3\CMS\Core\Resource\Rendering\RendererRegistry; +use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Domain\Model\AbstractFileFolder; use TYPO3\CMS\Extbase\Service\ImageService; use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper; @@ -160,6 +161,6 @@ class MediaViewHelper extends AbstractTagBasedViewHelper */ protected function getImageService() { - return $this->objectManager->get(ImageService::class); + return GeneralUtility::makeInstance(ImageService::class); } } diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Widget/LinkViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Widget/LinkViewHelper.php index 8bb3848071a4a581fee720230ba06200554aae58..d3841630ee60bfea87b5ccbb8832eb834bf2256e 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/Widget/LinkViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/Widget/LinkViewHelper.php @@ -87,12 +87,12 @@ class LinkViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedVi $action = $this->arguments['action']; $arguments = $this->arguments['arguments']; if ($action === null) { - $action = $this->controllerContext->getRequest()->getControllerActionName(); + $action = $this->renderingContext->getControllerContext()->getRequest()->getControllerActionName(); } $arguments['id'] = $GLOBALS['TSFE']->id; // @todo page type should be configurable $arguments['type'] = 7076; - $arguments['fluid-widget-id'] = $this->controllerContext->getRequest()->getWidgetContext()->getAjaxWidgetIdentifier(); + $arguments['fluid-widget-id'] = $this->renderingContext->getControllerContext()->getRequest()->getWidgetContext()->getAjaxWidgetIdentifier(); $arguments['action'] = $action; return '?' . http_build_query($arguments, null, '&'); } @@ -104,8 +104,8 @@ class LinkViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedVi */ protected function getWidgetUri() { - $uriBuilder = $this->controllerContext->getUriBuilder(); - $argumentPrefix = $this->controllerContext->getRequest()->getArgumentPrefix(); + $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder(); + $argumentPrefix = $this->renderingContext->getControllerContext()->getRequest()->getArgumentPrefix(); $arguments = $this->hasArgument('arguments') ? $this->arguments['arguments'] : []; if ($this->hasArgument('action')) { $arguments['action'] = $this->arguments['action']; diff --git a/typo3/sysext/fluid/Migrations/Code/ClassAliasMap.php b/typo3/sysext/fluid/Migrations/Code/ClassAliasMap.php index c0898820d25ae48fea4671ae1b3ecc59e7cb9418..92fb7c8f054fb49fb394bc3592be15b9eccf147b 100644 --- a/typo3/sysext/fluid/Migrations/Code/ClassAliasMap.php +++ b/typo3/sysext/fluid/Migrations/Code/ClassAliasMap.php @@ -1,5 +1,11 @@ <?php return [ + // Base classes removed in TYPO3v9 + 'TYPO3\\CMS\\Fluid\\Core\\ViewHelper\\AbstractViewHelper' => \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper::class, + 'TYPO3\\CMS\\Fluid\\Core\\ViewHelper\\AbstractConditionViewHelper' => \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper::class, + 'TYPO3\\CMS\\Fluid\\Core\\ViewHelper\\AbstractTagBasedViewHelper' => \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper::class, + + // Compiler/parser related aliases 'TYPO3\\CMS\\Fluid\\Core\\Compiler\\TemplateCompiler' => \TYPO3Fluid\Fluid\Core\Compiler\TemplateCompiler::class, 'TYPO3\\CMS\\Fluid\\Core\\Parser\\InterceptorInterface' => \TYPO3Fluid\Fluid\Core\Parser\InterceptorInterface::class, 'TYPO3\\CMS\\Fluid\\Core\\Parser\\SyntaxTree\\NodeInterface' => \TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\NodeInterface::class, @@ -21,6 +27,7 @@ return [ // Fluid variable containers, ViewHelpers, interfaces 'TYPO3\\CMS\\Fluid\\Core\\Parser\\SyntaxTree\\RootNode' => \TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\RootNode::class, 'TYPO3\\CMS\\Fluid\\Core\\Parser\\SyntaxTree\\ViewHelperNode' => \TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\ViewHelperNode::class, + 'TYPO3\\CMS\\Fluid\\Core\\ViewHelper\\ArgumentDefinition' => \TYPO3Fluid\Fluid\Core\ViewHelper\ArgumentDefinition::class, 'TYPO3\\CMS\\Fluid\\Core\\ViewHelper\\TemplateVariableContainer' => \TYPO3Fluid\Fluid\Core\Variables\StandardVariableProvider::class, 'TYPO3\\CMS\\Fluid\\Core\\ViewHelper\\ViewHelperVariableContainer' => \TYPO3Fluid\Fluid\Core\ViewHelper\ViewHelperVariableContainer::class, 'TYPO3\\CMS\\Fluid\\Core\\Variables\\CmsVariableProvider' => \TYPO3Fluid\Fluid\Core\Variables\StandardVariableProvider::class, diff --git a/typo3/sysext/fluid/Migrations/Code/LegacyClassesForIde.php b/typo3/sysext/fluid/Migrations/Code/LegacyClassesForIde.php index 13005c47cdeb601bf0976abf7ccdd69b7a32812c..e0a97a55b5d64caeffee4e368a8a9efb0757aa48 100644 --- a/typo3/sysext/fluid/Migrations/Code/LegacyClassesForIde.php +++ b/typo3/sysext/fluid/Migrations/Code/LegacyClassesForIde.php @@ -96,6 +96,15 @@ namespace TYPO3\CMS\Fluid\Core\Parser\SyntaxTree { } namespace TYPO3\CMS\Fluid\Core\ViewHelper { + abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper + { + } + abstract class AbstractConditionViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper + { + } + abstract class AbstractTagBasedViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper + { + } class TemplateVariableContainer extends \TYPO3Fluid\Fluid\Core\Variables\StandardVariableProvider { } diff --git a/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/AbstractViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/AbstractViewHelperTest.php deleted file mode 100644 index 86cd76aa34fbb1528d504f0a104641db024a7128..0000000000000000000000000000000000000000 --- a/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/AbstractViewHelperTest.php +++ /dev/null @@ -1,181 +0,0 @@ -<?php -namespace TYPO3\CMS\Fluid\Tests\Unit\Core\ViewHelper; - -/* - * This file is part of the TYPO3 CMS project. - * - * It is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, either version 2 - * of the License, or any later version. - * - * For the full copyright and license information, please read the - * LICENSE.txt file that was distributed with this source code. - * - * The TYPO3 project - inspiring people to share! - */ -use TYPO3\CMS\Extbase\Mvc\Request; -use TYPO3\CMS\Fluid\Tests\Unit\Core\Rendering\RenderingContextFixture; -use TYPO3Fluid\Fluid\Core\Variables\StandardVariableProvider; -use TYPO3Fluid\Fluid\Core\ViewHelper\ViewHelperVariableContainer; - -/** - * Test case - */ -class AbstractViewHelperTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase -{ - /** - * @var array - */ - protected $fixtureMethodParameters = [ - 'param1' => [ - 'position' => 0, - 'optional' => false, - 'type' => 'integer', - 'defaultValue' => null - ], - 'param2' => [ - 'position' => 1, - 'optional' => false, - 'type' => 'array', - 'array' => true, - 'defaultValue' => null - ], - 'param3' => [ - 'position' => 2, - 'optional' => true, - 'type' => 'string', - 'array' => false, - 'defaultValue' => 'default' - ], - ]; - - /** - * @var array - */ - protected $fixtureMethodTags = [ - 'param' => [ - 'integer $param1 P1 Stuff', - 'array $param2 P2 Stuff', - 'string $param3 P3 Stuff' - ] - ]; - - protected function setUp() - { - $this->mockReflectionService = $this->createMock(\TYPO3\CMS\Extbase\Reflection\ReflectionService::class); - } - - /** - * @test - */ - public function prepareArgumentsCallsInitializeArguments() - { - $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['render', 'initializeArguments'], [], '', false); - - $viewHelper->expects($this->once())->method('initializeArguments'); - - $viewHelper->prepareArguments(); - } - - /** - * @test - */ - public function validateArgumentsCallsPrepareArguments() - { - $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['render', 'prepareArguments'], [], '', false); - - $viewHelper->expects($this->once())->method('prepareArguments')->will($this->returnValue([])); - - $viewHelper->validateArguments(); - } - - /** - * @test - */ - public function validateArgumentsAcceptsAllObjectsImplemtingArrayAccessAsAnArray() - { - $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['render', 'prepareArguments'], [], '', false); - - $viewHelper->setArguments(['test' => new \ArrayObject]); - $viewHelper->expects($this->once())->method('prepareArguments')->will($this->returnValue(['test' => new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition('test', 'array', false, 'documentation')])); - $viewHelper->validateArguments(); - } - - /** - * @test - */ - public function validateArgumentsCallsTheRightValidators() - { - $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['render', 'prepareArguments'], [], '', false); - - $viewHelper->setArguments(['test' => 'Value of argument']); - - $viewHelper->expects($this->once())->method('prepareArguments')->will($this->returnValue([ - 'test' => new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition('test', 'string', false, 'documentation') - ])); - - $viewHelper->validateArguments(); - } - - /** - * @test - */ - public function validateArgumentsCallsTheRightValidatorsAndThrowsExceptionIfValidationIsWrong() - { - $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['render', 'prepareArguments'], [], '', false); - - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionCode(1256475113); - - $viewHelper->setArguments(['test' => 'test']); - - $viewHelper->expects($this->once())->method('prepareArguments')->will($this->returnValue([ - 'test' => new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition('test', 'stdClass', false, 'documentation') - ])); - - $viewHelper->validateArguments(); - } - - /** - * @test - */ - public function initializeArgumentsAndRenderCallsTheCorrectSequenceOfMethods() - { - $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['validateArguments', 'initialize', 'callRenderMethod']); - $viewHelper->expects($this->at(0))->method('validateArguments'); - $viewHelper->expects($this->at(1))->method('initialize'); - $viewHelper->expects($this->at(2))->method('callRenderMethod')->will($this->returnValue('Output')); - - $expectedOutput = 'Output'; - $actualOutput = $viewHelper->initializeArgumentsAndRender(['argument1' => 'value1']); - $this->assertEquals($expectedOutput, $actualOutput); - } - - /** - * @test - */ - public function setRenderingContextShouldSetInnerVariables() - { - $templateVariableContainer = $this->createMock(StandardVariableProvider::class); - $viewHelperVariableContainer = $this->createMock(ViewHelperVariableContainer::class); - $controllerContext = $this->getMockBuilder(\TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext::class) - ->setMethods(['getRequest']) - ->disableOriginalConstructor() - ->getMock(); - $controllerContext->expects($this->atLeastOnce())->method('getRequest')->willReturn($this->createMock(Request::class)); - - $renderingContext = $this->getAccessibleMock(RenderingContextFixture::class, ['getControllerContext']); - $renderingContext->expects($this->any())->method('getControllerContext')->willReturn($controllerContext); - $renderingContext->setVariableProvider($templateVariableContainer); - $renderingContext->_set('viewHelperVariableContainer', $viewHelperVariableContainer); - $renderingContext->setControllerContext($controllerContext); - - $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['render', 'prepareArguments'], [], '', false); - - $viewHelper->setRenderingContext($renderingContext); - - $this->assertSame($viewHelper->_get('templateVariableContainer'), $templateVariableContainer); - $this->assertSame($viewHelper->_get('viewHelperVariableContainer'), $viewHelperVariableContainer); - $this->assertSame($viewHelper->_get('controllerContext'), $controllerContext); - } -} diff --git a/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/ArgumentDefinitionTest.php b/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/ArgumentDefinitionTest.php deleted file mode 100644 index 4983744d0c0709b88978cb83ccd7f3ab93ee5852..0000000000000000000000000000000000000000 --- a/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/ArgumentDefinitionTest.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php -namespace TYPO3\CMS\Fluid\Tests\Unit\Core\ViewHelper; - -/* - * This file is part of the TYPO3 CMS project. - * - * It is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, either version 2 - * of the License, or any later version. - * - * For the full copyright and license information, please read the - * LICENSE.txt file that was distributed with this source code. - * - * The TYPO3 project - inspiring people to share! - */ - -/** - * Test case - */ -class ArgumentDefinitionTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase -{ - /** - * @test - */ - public function objectStoresDataCorrectly() - { - $name = 'This is a name'; - $description = 'Example desc'; - $type = 'string'; - $isRequired = true; - $isMethodParameter = true; - $argumentDefinition = new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition($name, $type, $description, $isRequired, null, $isMethodParameter); - - $this->assertEquals($argumentDefinition->getName(), $name, 'Name could not be retrieved correctly.'); - $this->assertEquals($argumentDefinition->getDescription(), $description, 'Description could not be retrieved correctly.'); - $this->assertEquals($argumentDefinition->getType(), $type, 'Type could not be retrieved correctly'); - $this->assertEquals($argumentDefinition->isRequired(), $isRequired, 'Required flag could not be retrieved correctly.'); - $this->assertEquals($argumentDefinition->isMethodParameter(), $isMethodParameter, 'isMethodParameter flag could not be retrieved correctly.'); - } -} diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/HiddenViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/HiddenViewHelperTest.php index 176eee8de412f6bfd6af9f613ebd6d04873739ab..2ff5d228b901631e75396e599ffff72a16844b0d 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/HiddenViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/HiddenViewHelperTest.php @@ -31,7 +31,6 @@ class HiddenViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\ parent::setUp(); $this->viewHelper = $this->getAccessibleMock(HiddenViewHelper::class, ['setErrorClassAttribute', 'getName', 'getValueAttribute', 'registerFieldNameForFormTokenGeneration']); $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->initializeArguments(); } /** @@ -50,9 +49,8 @@ class HiddenViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\ $this->viewHelper->expects($this->once())->method('getName')->will($this->returnValue('foo')); $this->viewHelper->expects($this->once())->method('getValueAttribute')->will($this->returnValue('bar')); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } } diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/PasswordViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/PasswordViewHelperTest.php index a5079044ad137735de90fedd91f6bdd259cffe88..8ded544f09cc13242e61bf88112d17b4069bce94 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/PasswordViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/PasswordViewHelperTest.php @@ -21,7 +21,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\TagBuilder; class PasswordViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\FormFieldViewHelperBaseTestcase { /** - * @var \TYPO3\CMS\Fluid\ViewHelpers\Form\TextboxViewHelper + * @var \TYPO3\CMS\Fluid\ViewHelpers\Form\PasswordViewHelper */ protected $viewHelper; @@ -31,7 +31,6 @@ class PasswordViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For $this->viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\ViewHelpers\Form\PasswordViewHelper::class, ['setErrorClassAttribute', 'registerFieldNameForFormTokenGeneration']); $this->arguments['name'] = ''; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->initializeArguments(); } /** @@ -44,10 +43,8 @@ class PasswordViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For ->disableOriginalConstructor() ->getMock(); $mockTagBuilder->expects($this->once())->method('setTagName')->with('input'); - $this->viewHelper->_set('tag', $mockTagBuilder); - - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($mockTagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -64,7 +61,7 @@ class PasswordViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('NameOfTextbox'); $mockTagBuilder->expects($this->at(2))->method('addAttribute')->with('value', 'Current value'); $mockTagBuilder->expects($this->once())->method('render'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); $arguments = [ 'name' => 'NameOfTextbox', @@ -73,8 +70,7 @@ class PasswordViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For $this->viewHelper->setArguments($arguments); $this->viewHelper->setViewHelperNode(new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\Fixtures\EmptySyntaxTreeNode()); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/SelectViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/SelectViewHelperTest.php index baa714bbb692d29d2eab226094e43c12f559a6d0..c71c57639821ea144281756bac301f45ca3ebf0a 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/SelectViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/SelectViewHelperTest.php @@ -34,7 +34,7 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['sortByOptionLabel'] = false; $this->viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\ViewHelpers\Form\SelectViewHelper::class, ['setErrorClassAttribute', 'registerFieldNameForFormTokenGeneration', 'renderChildren']); $this->tagBuilder = $this->createMock(\TYPO3Fluid\Fluid\Core\ViewHelper\TagBuilder::class); - $this->viewHelper->_set('tag', $this->tagBuilder); + $this->viewHelper->setTagBuilder($this->tagBuilder); } /** @@ -46,9 +46,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['options'] = []; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -69,9 +68,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['name'] = 'myName'; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -93,12 +91,11 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase ]; $this->arguments['value'] = 'value2'; $this->arguments['name'] = 'myName'; - $this->arguments['required'] = '1'; + $this->arguments['required'] = true; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -134,9 +131,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase ]; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -171,9 +167,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['options'] = [$obj1, $obj2, $obj3, $obj4]; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -209,9 +204,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase ]); $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -234,9 +228,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['name'] = 'myName'; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -260,9 +253,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['sortByOptionLabel'] = true; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -298,9 +290,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['name'] = 'myName'; $this->arguments['sortByOptionLabel'] = true; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -321,10 +312,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['multiple'] = true; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initializeArguments(); - $this->viewHelper->initialize(); - $result = $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $result = $this->viewHelper->initializeArgumentsAndRender(); $expected = '<input type="hidden" name="myName" value="" /><select multiple="multiple" name="myName[]"><option value="value1" selected="selected">label1</option>' . chr(10) . '<option value="value2">label2</option>' . chr(10) . '<option value="value3" selected="selected">label3</option>' . chr(10) . '</select>'; $this->assertSame($expected, $result); } @@ -358,9 +347,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['optionLabelField'] = 'firstName'; $this->arguments['name'] = 'myName'; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -386,10 +374,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['multiple'] = true; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initializeArguments(); - $this->viewHelper->initialize(); - $actual = $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $actual = $this->viewHelper->initializeArgumentsAndRender(); $expected = '<input type="hidden" name="myName" value="" /><select multiple="multiple" name="myName[]"><option value="1" selected="selected">Schlecht</option>' . chr(10) . '<option value="2">Kurfuerst</option>' . chr(10) . '<option value="3" selected="selected">Lemke</option>' . chr(10) . @@ -426,10 +412,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['multiple'] = true; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initializeArguments(); - $this->viewHelper->initialize(); - $actual = $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $actual = $this->viewHelper->initializeArgumentsAndRender(); $expected = '<input type="hidden" name="myName" value="" />' . '<select multiple="multiple" name="myName[]">' . '<option value="1" selected="selected">Schlecht</option>' . chr(10) . @@ -460,9 +444,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase ]; $this->arguments['name'] = 'myName'; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -490,9 +473,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase ]; $this->arguments['name'] = 'myName'; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -514,9 +496,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase ]; $this->arguments['name'] = 'myName'; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -527,9 +508,9 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['options'] = []; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); + $this->viewHelper->setTagBuilder($this->tagBuilder); $this->viewHelper->expects($this->once())->method('setErrorClassAttribute'); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -549,9 +530,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['selectAllByDefault'] = true; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -572,9 +552,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['selectAllByDefault'] = true; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -594,9 +573,8 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['name'] = 'myName'; $this->arguments['prependOptionLabel'] = 'please choose'; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -617,8 +595,7 @@ class SelectViewHelperTest extends ViewHelperBaseTestcase $this->arguments['prependOptionLabel'] = 'please choose'; $this->arguments['prependOptionValue'] = '-1'; $this->injectDependenciesIntoViewHelper($this->viewHelper); - - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } } diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/SubmitViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/SubmitViewHelperTest.php index 62e54de8c436b1f1229a57fe75751f44c5d5615d..fd38b2e1b8b79b5faee77ccb0af414365d03cbd2 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/SubmitViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/SubmitViewHelperTest.php @@ -31,7 +31,6 @@ class SubmitViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\ $this->viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\ViewHelpers\Form\SubmitViewHelper::class, ['dummy']); $this->arguments['name'] = ''; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->initializeArguments(); } /** @@ -45,9 +44,8 @@ class SubmitViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\ $mockTagBuilder->expects($this->once())->method('setTagName')->with('input'); $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('type', 'submit'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } } diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/TextareaViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/TextareaViewHelperTest.php index 5bf54e79939d6dd481498ac8d6e69a18af8ee37c..e769ac716fdadc32d035df38d11eb39a262aa8e4 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/TextareaViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/TextareaViewHelperTest.php @@ -31,7 +31,6 @@ class TextareaViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For $this->viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\ViewHelpers\Form\TextareaViewHelper::class, ['setErrorClassAttribute', 'registerFieldNameForFormTokenGeneration']); $this->arguments['name'] = ''; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->initializeArguments(); } /** @@ -44,10 +43,9 @@ class TextareaViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For ->disableOriginalConstructor() ->getMock(); $mockTagBuilder->expects($this->once())->method('setTagName')->with('textarea'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -72,8 +70,7 @@ class TextareaViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For $this->viewHelper->setArguments($arguments); $this->viewHelper->setViewHelperNode(new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\Fixtures\EmptySyntaxTreeNode()); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -98,7 +95,7 @@ class TextareaViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('NameOfTextarea'); $mockTagBuilder->expects($this->once())->method('setContent')->with('some <tag> & "quotes"'); $mockTagBuilder->expects($this->once())->method('render'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); $arguments = [ 'name' => 'NameOfTextarea', @@ -107,8 +104,7 @@ class TextareaViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For $this->viewHelper->setArguments($arguments); $this->viewHelper->setViewHelperNode(new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\Fixtures\EmptySyntaxTreeNode()); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -123,7 +119,7 @@ class TextareaViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For $mockTagBuilder->expects($this->at(0))->method('addAttribute')->with('placeholder', 'SomePlaceholder'); $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('name', 'NameOfTextarea'); $mockTagBuilder->expects($this->once())->method('render'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); $arguments = [ 'name' => 'NameOfTextarea', @@ -132,7 +128,6 @@ class TextareaViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\For $this->viewHelper->setArguments($arguments); $this->viewHelper->setViewHelperNode(new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\Fixtures\EmptySyntaxTreeNode()); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } } diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/UploadViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/UploadViewHelperTest.php index af3c4257376c14113c56f62a7063a21a08fd3378..481e05f4dc6264969a8d918a7d1f8812138ef596 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/UploadViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/UploadViewHelperTest.php @@ -33,7 +33,6 @@ class UploadViewHelperTest extends ViewHelperBaseTestcase $this->viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\ViewHelpers\Form\UploadViewHelper::class, ['setErrorClassAttribute', 'registerFieldNameForFormTokenGeneration']); $this->arguments['name'] = ''; $this->injectDependenciesIntoViewHelper($this->viewHelper); - $this->viewHelper->initializeArguments(); } /** @@ -43,9 +42,8 @@ class UploadViewHelperTest extends ViewHelperBaseTestcase { $this->tagBuilder = $this->createMock(\TYPO3Fluid\Fluid\Core\ViewHelper\TagBuilder::class); $this->tagBuilder->expects($this->once())->method('setTagName')->with('input'); - $this->viewHelper->_set('tag', $this->tagBuilder); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->setTagBuilder($this->tagBuilder); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -65,14 +63,13 @@ class UploadViewHelperTest extends ViewHelperBaseTestcase $this->viewHelper->expects($this->at(3))->method('registerFieldNameForFormTokenGeneration')->with('someName[error]'); $this->viewHelper->expects($this->at(4))->method('registerFieldNameForFormTokenGeneration')->with('someName[size]'); $mockTagBuilder->expects($this->once())->method('render'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); $arguments = [ 'name' => 'someName' ]; $this->viewHelper->setArguments($arguments); $this->viewHelper->setViewHelperNode(new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\Fixtures\EmptySyntaxTreeNode()); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -81,7 +78,7 @@ class UploadViewHelperTest extends ViewHelperBaseTestcase public function renderCallsSetErrorClassAttribute() { $this->viewHelper->expects($this->once())->method('setErrorClassAttribute'); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -92,14 +89,13 @@ class UploadViewHelperTest extends ViewHelperBaseTestcase /** @var TagBuilder $tagBuilder */ $tagBuilder = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(TagBuilder::class); $tagBuilder->addAttribute('multiple', 'multiple'); - $this->viewHelper->_set('tag', $tagBuilder); + $this->viewHelper->setTagBuilder($tagBuilder); $arguments = [ 'name' => 'someName', 'multiple' => 'multiple' ]; $this->viewHelper->setArguments($arguments); - $this->viewHelper->initialize(); - $result = $this->viewHelper->render(); + $result = $this->viewHelper->initializeArgumentsAndRender(); $this->assertEquals('<input multiple="multiple" type="file" name="someName[]" />', $result); } } diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/EmailViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/EmailViewHelperTest.php index 2c40a33155c422187ea61842bc176dc94a16d080..c84a9a40901eea318de1c270009ad7666d426c67 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/EmailViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/EmailViewHelperTest.php @@ -57,7 +57,7 @@ class EmailViewHelperTest extends ViewHelperBaseTestcase $mockTagBuilder->expects($this->once())->method('setTagName')->with('a'); $mockTagBuilder->expects($this->once())->method('addAttribute')->with('href', 'mailto:some@email.tld'); $mockTagBuilder->expects($this->once())->method('setContent')->with('some content'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); $this->viewHelper->expects($this->any())->method('renderChildren')->will($this->returnValue('some content')); $this->setArgumentsUnderTest( $this->viewHelper, @@ -65,8 +65,7 @@ class EmailViewHelperTest extends ViewHelperBaseTestcase 'email' => 'some@email.tld', ] ); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -78,7 +77,7 @@ class EmailViewHelperTest extends ViewHelperBaseTestcase ->setMethods(['setTagName', 'addAttribute', 'setContent']) ->getMock(); $mockTagBuilder->expects($this->once())->method('setContent')->with('some@email.tld'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); $this->viewHelper->expects($this->any())->method('renderChildren')->will($this->returnValue(null)); $this->setArgumentsUnderTest( $this->viewHelper, @@ -86,8 +85,7 @@ class EmailViewHelperTest extends ViewHelperBaseTestcase 'email' => 'some@email.tld', ] ); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/ExternalViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/ExternalViewHelperTest.php index 96bab15660bd7a4ba2e37055e6426d651cb90e3f..37130ea021d9f109da3e98e72d7a27d459677b77 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/ExternalViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/ExternalViewHelperTest.php @@ -45,7 +45,7 @@ class ExternalViewHelperTest extends ViewHelperBaseTestcase $mockTagBuilder->expects($this->once())->method('setTagName')->with('a'); $mockTagBuilder->expects($this->once())->method('addAttribute')->with('href', 'http://www.some-domain.tld'); $mockTagBuilder->expects($this->once())->method('setContent')->with('some content'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); $this->viewHelper->expects($this->any())->method('renderChildren')->will($this->returnValue('some content')); @@ -55,8 +55,7 @@ class ExternalViewHelperTest extends ViewHelperBaseTestcase 'uri' => 'http://www.some-domain.tld', ] ); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -70,7 +69,7 @@ class ExternalViewHelperTest extends ViewHelperBaseTestcase $mockTagBuilder->expects($this->once())->method('setTagName')->with('a'); $mockTagBuilder->expects($this->once())->method('addAttribute')->with('href', 'http://www.some-domain.tld'); $mockTagBuilder->expects($this->once())->method('setContent')->with('some content'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); $this->viewHelper->expects($this->any())->method('renderChildren')->will($this->returnValue('some content')); @@ -80,8 +79,7 @@ class ExternalViewHelperTest extends ViewHelperBaseTestcase 'uri' => 'www.some-domain.tld', ] ); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -95,7 +93,7 @@ class ExternalViewHelperTest extends ViewHelperBaseTestcase $mockTagBuilder->expects($this->once())->method('setTagName')->with('a'); $mockTagBuilder->expects($this->once())->method('addAttribute')->with('href', 'ftp://some-domain.tld'); $mockTagBuilder->expects($this->once())->method('setContent')->with('some content'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); $this->viewHelper->expects($this->any())->method('renderChildren')->will($this->returnValue('some content')); @@ -106,8 +104,7 @@ class ExternalViewHelperTest extends ViewHelperBaseTestcase 'defaultScheme' => 'ftp', ] ); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } /** @@ -121,7 +118,7 @@ class ExternalViewHelperTest extends ViewHelperBaseTestcase $mockTagBuilder->expects($this->once())->method('setTagName')->with('a'); $mockTagBuilder->expects($this->once())->method('addAttribute')->with('href', 'some-domain.tld'); $mockTagBuilder->expects($this->once())->method('setContent')->with('some content'); - $this->viewHelper->_set('tag', $mockTagBuilder); + $this->viewHelper->setTagBuilder($mockTagBuilder); $this->viewHelper->expects($this->any())->method('renderChildren')->will($this->returnValue('some content')); @@ -132,7 +129,6 @@ class ExternalViewHelperTest extends ViewHelperBaseTestcase 'defaultScheme' => '', ] ); - $this->viewHelper->initialize(); - $this->viewHelper->render(); + $this->viewHelper->initializeArgumentsAndRender(); } } diff --git a/typo3/sysext/fluid/Tests/UnitDeprecated/Core/ViewHelper/AbstractViewHelperTest.php b/typo3/sysext/fluid/Tests/UnitDeprecated/Core/ViewHelper/AbstractViewHelperTest.php deleted file mode 100644 index 5fcfb81052b06c1d085c81b205bb13c84dd45ee7..0000000000000000000000000000000000000000 --- a/typo3/sysext/fluid/Tests/UnitDeprecated/Core/ViewHelper/AbstractViewHelperTest.php +++ /dev/null @@ -1,191 +0,0 @@ -<?php -namespace TYPO3\CMS\Fluid\Tests\UnitDeprecated\Core\ViewHelper; - -/* - * This file is part of the TYPO3 CMS project. - * - * It is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, either version 2 - * of the License, or any later version. - * - * For the full copyright and license information, please read the - * LICENSE.txt file that was distributed with this source code. - * - * The TYPO3 project - inspiring people to share! - */ -use TYPO3\CMS\Extbase\Reflection\ReflectionService; -use TYPO3\CMS\Fluid\Core\Exception; -use TYPO3\CMS\Fluid\Tests\Unit\Core\Fixtures\TestViewHelper; - -/** - * Test case for deprecated functionality to still behave as before - */ -class AbstractViewHelperTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase -{ - /** - * @var array - */ - protected $fixtureMethodParameters = [ - 'param1' => [ - 'position' => 0, - 'optional' => false, - 'type' => 'integer', - 'defaultValue' => null - ], - 'param2' => [ - 'position' => 1, - 'optional' => false, - 'type' => 'array', - 'array' => true, - 'defaultValue' => null - ], - 'param3' => [ - 'position' => 2, - 'optional' => true, - 'type' => 'string', - 'array' => false, - 'defaultValue' => 'default' - ], - ]; - - /** - * @var array - */ - protected $fixtureMethodTags = [ - 'param' => [ - 'integer $param1 P1 Stuff', - 'array $param2 P2 Stuff', - 'string $param3 P3 Stuff' - ] - ]; - - protected function setUp() - { - $this->mockReflectionService = $this->createMock(\TYPO3\CMS\Extbase\Reflection\ReflectionService::class); - } - - /** - * @test - * @dataProvider getCallRenderMethodTestValues - * @param array $arguments - * @param bool $expectsException - */ - public function registerRenderMethodArgumentsThrowsExceptionOnMissingType(array $arguments, $expectsException = false) - { - $reflectionService = $this->getMockBuilder(ReflectionService::class) - ->setMethods(['getMethodParameters', 'getMethodTagsValues']) - ->getMock(); - $reflectionService->expects($this->once())->method('getMethodParameters')->willReturn( - [ - 'param1' => [ - 'position' => 0, - 'byReference' => false, - 'optional' => false, - 'allowsNull' => true - ] - ] - ); - $reflectionService->expects($this->once())->method('getMethodTagsValues')->willReturn([]); - $fixture = $this->getAccessibleMock(TestViewHelper::class, ['render', 'getReflectionService']); - $fixture->expects($this->once())->method('getReflectionService')->willReturn($reflectionService); - $this->expectException(Exception::class); - $this->callInaccessibleMethod($fixture, 'registerRenderMethodArguments'); - } - - /** - * @test - * @dataProvider getCallRenderMethodTestValues - * @param array $arguments - * @param bool $expectsException - */ - public function callRenderMethodBehavesAsExpected(array $arguments, $expectsException = false) - { - $reflectionService = $this->getMockBuilder(ReflectionService::class) - ->setMethods(['getMethodParameters', 'getMethodTagsValues']) - ->getMock(); - $reflectionService->expects($this->once())->method('getMethodParameters')->willReturn( - [ - 'param1' => [ - 'position' => 0, - 'type' => 'integer', - 'byReference' => false, - 'array' => false, - 'optional' => false, - 'allowsNull' => true - ], - 'param2' => [ - 'position' => 1, - 'type' => 'array', - 'byReference' => false, - 'array' => true, - 'optional' => false, - 'allowsNull' => true - ], - 'param3' => [ - 'position' => 2, - 'type' => 'string', - 'byReference' => false, - 'array' => false, - 'optional' => false, - 'allowsNull' => true - ], - ] - ); - $reflectionService->expects($this->once())->method('getMethodTagsValues')->willReturn( - [] - ); - $fixture = $this->getAccessibleMock(TestViewHelper::class, ['render', 'getReflectionService']); - $namedArguments = array_combine(['param1', 'param2', 'param3'], $arguments); - $fixture->expects($this->once())->method('getReflectionService')->willReturn($reflectionService); - $this->callInaccessibleMethod($fixture, 'registerRenderMethodArguments'); - $fixture->setArguments($namedArguments); - if ($expectsException) { - $exception = new \TYPO3Fluid\Fluid\Core\ViewHelper\Exception('test', 1476108352); - $this->expectException(get_class($exception)); - $fixture->expects($this->once())->method('render')->willThrowException($exception); - $this->assertEquals('test', $this->callInaccessibleMethod($fixture, 'callRenderMethod')); - } else { - $fixture->expects($this->once()) - ->method('render') - ->with($arguments[0], $arguments[1], $arguments[2]) - ->willReturn('okay'); - $this->assertEquals('okay', $this->callInaccessibleMethod($fixture, 'callRenderMethod')); - } - } - - /** - * @return array - */ - public function getCallRenderMethodTestValues() - { - return [ - [[3, ['bar'], 'baz'], false], - [[2, ['baz'], 'bar'], false], - [[3, ['bar'], 'baz'], true], - ]; - } - - /** - * @test - */ - public function prepareArgumentsRegistersAnnotationBasedArgumentsWithDescriptionIfDebugModeIsEnabled() - { - $dataCacheMock = $this->createMock(\TYPO3\CMS\Core\Cache\Frontend\VariableFrontend::class); - $dataCacheMock->expects($this->any())->method('has')->will($this->returnValue(true)); - $dataCacheMock->expects($this->any())->method('get')->will($this->returnValue([])); - - $reflectionServiceMock = $this->getMockBuilder(ReflectionService::class)->getMock(); - $reflectionServiceMock->expects($this->once())->method('getMethodParameters')->willReturn(['fake' => ['type' => 'int', 'defaultValue' => 'def']]); - $reflectionServiceMock->expects($this->once())->method('getMethodTagsValues')->willReturn(['param']); - - $viewHelper = $this->getMockBuilder(\TYPO3\CMS\Fluid\Tests\Unit\Core\Fixtures\TestViewHelper::class)->setMethods(['getReflectionService'])->getMock(); - $viewHelper->expects($this->once())->method('getReflectionService')->willReturn($reflectionServiceMock); - - $expected = [ - 'fake' => new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition('fake', 'int', '', false, 'def', true) - ]; - - $this->callInaccessibleMethod($viewHelper, 'registerRenderMethodArguments'); - $this->assertAttributeEquals($expected, 'argumentDefinitions', $viewHelper, 'Annotation based arguments were not registered.'); - } -} diff --git a/typo3/sysext/form/Classes/ViewHelpers/FormViewHelper.php b/typo3/sysext/form/Classes/ViewHelpers/FormViewHelper.php index fbff0d23f5ae73cdc57a634ecc2221792c261ada..aa313aeb1126be8326500fa2dc56a04e76667be0 100644 --- a/typo3/sysext/form/Classes/ViewHelpers/FormViewHelper.php +++ b/typo3/sysext/form/Classes/ViewHelpers/FormViewHelper.php @@ -17,6 +17,7 @@ namespace TYPO3\CMS\Form\ViewHelpers; * The TYPO3 project - inspiring people to share! */ +use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper as FluidFormViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\TagBuilder; @@ -37,7 +38,7 @@ class FormViewHelper extends FluidFormViewHelper */ protected function renderHiddenReferrerFields() { - $tagBuilder = $this->objectManager->get(TagBuilder::class, 'input'); + $tagBuilder = GeneralUtility::makeInstance(TagBuilder::class, 'input'); $tagBuilder->addAttribute('type', 'hidden'); $stateName = $this->prefixFieldName($this->arguments['object']->getFormDefinition()->getIdentifier()) . '[__state]'; $tagBuilder->addAttribute('name', $stateName);