From 3d74347eaf1ec6446e997173172c2b4a9cdc6e1e Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Fri, 10 Dec 2021 19:01:09 +0100 Subject: [PATCH 01/15] [BUGFIX] Add bool return type for double2converter --- Classes/Property/TypeConverter/Double2Converter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/Property/TypeConverter/Double2Converter.php b/Classes/Property/TypeConverter/Double2Converter.php index 06ad658..30fe00b 100644 --- a/Classes/Property/TypeConverter/Double2Converter.php +++ b/Classes/Property/TypeConverter/Double2Converter.php @@ -41,7 +41,7 @@ class Double2Converter extends AbstractTypeConverter * @return bool * @internal only to be used within Extbase, not part of TYPO3 Core API. */ - public function canConvertFrom($source, $targetType) + public function canConvertFrom($source, $targetType): bool { return is_string($source) ||is_integer($source); } From 97c340763627d528eb573cf09e680b39ffb084e6 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Fri, 10 Dec 2021 19:02:10 +0100 Subject: [PATCH 02/15] [TASK] Add dev settings to pageTSConfig --- .../Private/PageTSConfig/default.tsconfig | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/Resources/Private/PageTSConfig/default.tsconfig b/Resources/Private/PageTSConfig/default.tsconfig index 31b6307..9b5a8b0 100644 --- a/Resources/Private/PageTSConfig/default.tsconfig +++ b/Resources/Private/PageTSConfig/default.tsconfig @@ -1,5 +1,22 @@ - -[applicationContext = Development] -TCAdefaults.pages.hidden = 0 +TCEMAIN { + table { + tt_content { + disablePrependAtCopy = 1 + } + } +} +[applicationContext == 'Development'] +TCAdefaults { + pages { + hidden = 0 + } +} +TCEMAIN { + table { + tt_content { + disableHideAtCopy = 1 + } + } +} [end] From f62695055f951ffb859dbf50ac34c283e888cc5f Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Wed, 15 Dec 2021 17:04:20 +0100 Subject: [PATCH 03/15] [TASK] Make DependencyInjectionTrait compatible to TYPO3 >= 10 --- Classes/Traits/DependencyInjectionTrait.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Classes/Traits/DependencyInjectionTrait.php b/Classes/Traits/DependencyInjectionTrait.php index d2ccc13..039f1c3 100644 --- a/Classes/Traits/DependencyInjectionTrait.php +++ b/Classes/Traits/DependencyInjectionTrait.php @@ -111,6 +111,11 @@ trait DependencyInjectionTrait get_class($this) ); foreach ($classInfo->getInjectMethods() as $method => $className) { + if (version_compare(TYPO3_branch, '10.0', '>=')) { + $className = $className + ->getFirstParameter() + ->getDependency(); + } $class = $this->objectManager->get( $className ); From 47415deeace36ec754b8512ce2a756ba103febc3 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Fri, 17 Dec 2021 20:24:25 +0100 Subject: [PATCH 04/15] [BUGFIX] Building url for ajax environment with routeEnhancer enabled --- Classes/Controller/ActionController.php | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/Classes/Controller/ActionController.php b/Classes/Controller/ActionController.php index dae6c4a..ff4b7c1 100644 --- a/Classes/Controller/ActionController.php +++ b/Classes/Controller/ActionController.php @@ -547,17 +547,32 @@ class ActionController extends BaseController if ($object == null) { $object = $this->arguments->getArgumentNames()[0]; } + $pluginArguments = []; + foreach ($this->arguments as $argument) { + if (in_array($argument->getName(), ['step', 'submit', $object])) { + continue; + } + if (method_exists($argument->getValue(), 'getUid')) { + $pluginArguments[$argument->getName()] + = $argument->getValue()->getUid(); + } else { + $pluginArguments[$argument->getName()] = $argument->getValue(); + } + } + $arguments = []; + $arguments['cid'] = $this->contentObjectUid; + $arguments['type'] = $this->ajaxPageType; $uri = $this->getControllerContext() ->getUriBuilder() ->reset() ->setCreateAbsoluteUri(true) ->setAddQueryString(true) ->setTargetPageType($this->ajaxPageType) - ->setArguments([ - 'cid' => $this->contentObjectUid, - 'type' => $this->ajaxPageType, - ]) - ->uriFor($this->request->getControllerActionName()); + ->setArguments($arguments) + ->uriFor( + $this->request->getControllerActionName(), + $pluginArguments + ); $this->ajaxEnv = [ 'uri' => $uri, 'object' => $object, From a9a3ad38d44f2336206c91b18360f66614b57337 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Fri, 17 Dec 2021 20:25:09 +0100 Subject: [PATCH 05/15] [BUGFIX] ArrayUrility: Return empty object if array is empty --- Classes/Utility/ArrayUtility.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Classes/Utility/ArrayUtility.php b/Classes/Utility/ArrayUtility.php index f43c961..26fd0da 100644 --- a/Classes/Utility/ArrayUtility.php +++ b/Classes/Utility/ArrayUtility.php @@ -21,6 +21,9 @@ class ArrayUtility * function arrayTobject */ public static function toObject($array) { + if ($array === []) { + return (object)$array; + } if (is_array($array)) { if (self::isAssoc($array)) { return (object) array_map([__CLASS__, __METHOD__], $array); @@ -50,7 +53,6 @@ class ArrayUtility return $array; } - /** * */ From 217aa02fc508b9b4d6ab97b3e1917877bd405a28 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Sun, 19 Dec 2021 17:33:19 +0100 Subject: [PATCH 06/15] [FEATURE] Add option for bold text in mails --- Classes/Utility/MailUtility.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Classes/Utility/MailUtility.php b/Classes/Utility/MailUtility.php index db456d2..638386d 100644 --- a/Classes/Utility/MailUtility.php +++ b/Classes/Utility/MailUtility.php @@ -214,6 +214,17 @@ class MailUtility }, $htmlRow['data'] ); + $htmlRow['data'] = preg_replace_callback( + '/\*.*\*/mU', + function($matches) { + foreach ($matches as $match) { + return '' + . substr($match, 1, -1) + . ''; + } + }, + $htmlRow['data'] + ); $textRow = $row; $textRow['data'] = preg_replace_callback( '/\[.*\]/mU', From c3d5d0ec63dee952e19e5c523cd3e87f5a32e65d Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Sun, 19 Dec 2021 17:40:40 +0100 Subject: [PATCH 07/15] [TASK] Hide link text in text mails if duplicates target --- Classes/Utility/MailUtility.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Classes/Utility/MailUtility.php b/Classes/Utility/MailUtility.php index 638386d..03ac344 100644 --- a/Classes/Utility/MailUtility.php +++ b/Classes/Utility/MailUtility.php @@ -233,6 +233,11 @@ class MailUtility return preg_replace_callback( '/\[(\S*)\s(.*)\]/mU', function($matchesInner) { + if ( + $matchesInner[2] == $matchesInner[1] + ) { + return $matchesInner[1]; + } return $matchesInner[2] . ': ' . $matchesInner[1]; From 1d5c949477fd743ca916bfd5d8828e5758d45a72 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Sun, 19 Dec 2021 17:42:01 +0100 Subject: [PATCH 08/15] [TASK] Add TYPO3 10 compatibilty for MailUtility --- Classes/Utility/MailUtility.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Classes/Utility/MailUtility.php b/Classes/Utility/MailUtility.php index 03ac344..3564ba6 100644 --- a/Classes/Utility/MailUtility.php +++ b/Classes/Utility/MailUtility.php @@ -330,8 +330,13 @@ class MailUtility $htmlBody ); } - $mail->setBody($textBody); - $mail->addPart($htmlBody, 'text/html'); + if (version_compare(TYPO3_branch, '10.0', '>=')) { + $mail->html($htmlBody); + $mail->text($textBody); + } else { + $mail->setBody($textBody); + $mail->addPart($htmlBody, 'text/html'); + } $recipients = explode( ',', $target From ef5eb1b03f6c38bc25764d4592a118ece4ea0224 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Sun, 19 Dec 2021 17:42:19 +0100 Subject: [PATCH 09/15] [TASK] Add TYPO3 10 compatibilty for ObjectUtility --- Classes/Utility/ObjectUtility.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Classes/Utility/ObjectUtility.php b/Classes/Utility/ObjectUtility.php index 52551ac..0e809a2 100644 --- a/Classes/Utility/ObjectUtility.php +++ b/Classes/Utility/ObjectUtility.php @@ -92,6 +92,13 @@ class ObjectUtility ) { $value = StringUtility::checkAndfixUtf8($value); $object->_setProperty($property, $value); + } elseif ( + get_class($methodType) == 'ReflectionNamedType' + && + substr($property, -3) != 'Uid' + ) { + $value = StringUtility::checkAndfixUtf8($value); + $object->_setProperty($property, $value); } elseif ( substr($property, -3) === 'Uid' ) { From a2943b52a46adf8529c7f3d10313c0120510acf1 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Sun, 19 Dec 2021 17:43:07 +0100 Subject: [PATCH 10/15] [FEATURE] Add getFromExtensionByPath to SiteConfigUtility --- Classes/Utility/SiteConfigUtility.php | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Classes/Utility/SiteConfigUtility.php b/Classes/Utility/SiteConfigUtility.php index 1a1041a..ab88031 100644 --- a/Classes/Utility/SiteConfigUtility.php +++ b/Classes/Utility/SiteConfigUtility.php @@ -58,4 +58,38 @@ class SiteConfigUtility } return $current; } + + /** + * Gets extension config by typoscript path + * + * @var string $path + * @return string + */ + public static function getFromExtensionByPath( + $extensionName, + $path + ) { + $pathParts = explode('.', $path); + $objectManager = GeneralUtility::makeInstance( + ObjectManager::class + ); + $configurationManager = $objectManager->get( + ConfigurationManagerInterface::class + ); + $typoscript = $configurationManager->getConfiguration( + ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK, + $extensionName + ); + $current = &$typoscript; + foreach ($pathParts as $key) { + if ( + !is_array($current) + || !array_key_exists($key, $current) + ) { + return null; + } + $current = &$current[$key]; + } + return $current; + } } From 3c9a64982219618b2d4920a07936bf1b18c2f6bb Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Sun, 19 Dec 2021 17:43:35 +0100 Subject: [PATCH 11/15] [FEATURE] Add removeCHashIfOnlyParameter to SiteConfigUtility --- Classes/Utility/StringUtility.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Classes/Utility/StringUtility.php b/Classes/Utility/StringUtility.php index f157e59..da68f50 100644 --- a/Classes/Utility/StringUtility.php +++ b/Classes/Utility/StringUtility.php @@ -71,4 +71,20 @@ class StringUtility } return $string; } + + public static function removeCHashIfOnlyParameter($uri) { + $parsedUri = parse_url($uri); + parse_str($parsedUri['query'], $parsedQuery); + if ( + count($parsedQuery) == 1 + && array_key_exists('cHash', $parsedQuery) + ) { + unset($parsedQuery['cHash']); + } + $updatedQuery = http_build_query($parsedQuery); + return $parsedUri['scheme'] . '://' + . $parsedUri['host'] + . $parsedUri['path'] + . ($updatedQuery ? '?' . $updatedQuery : ''); + } } From 06010aebea107e32172e8040b035d47d64510116 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Sun, 19 Dec 2021 17:44:18 +0100 Subject: [PATCH 12/15] [TASK] Add TYPO3 10 compatibilty getTranslation function in TcaUtility --- Classes/Utility/TcaUtility.php | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/Classes/Utility/TcaUtility.php b/Classes/Utility/TcaUtility.php index 980fc87..815ef11 100644 --- a/Classes/Utility/TcaUtility.php +++ b/Classes/Utility/TcaUtility.php @@ -13,6 +13,8 @@ namespace Cjel\TemplatesAide\Utility; ***/ use TYPO3\CMS\Extbase\Utility\LocalizationUtility; +use TYPO3\CMS\Core\Utility\GeneralUtility; +use TYPO3\CMS\Core\Localization\LanguageService; /** * @@ -87,22 +89,34 @@ class TcaUtility */ public static function getTranslation($key, $extensionKey) { - if ($extensionKey) { + if (version_compare(TYPO3_branch, '10.0', '>=')) { + if (!$extensionKey) { + $extensionKey = 'site_templates'; + } + return implode([ + 'LLL:EXT:', + $extensionKey, + '/Resources/Private/Language/locallang_db.xlf:', + $key + ]); + } else { + if ($extensionKey) { + $translation = LocalizationUtility::translate( + $key, + $extensionKey + ); + if ($translation) { + return $translation; + } + } $translation = LocalizationUtility::translate( $key, - $extensionKey + 'site_templates' ); if ($translation) { return $translation; } + return null; } - $translation = LocalizationUtility::translate( - $key, - 'site_templates' - ); - if ($translation) { - return $translation; - } - return null; } } From 4159324b26ec3e6ef7bd3d8b03455f3f0739917c Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Sun, 19 Dec 2021 17:45:28 +0100 Subject: [PATCH 13/15] [TASK] Hide option to clear all cache on not development systems --- Resources/Private/UserTSConfig/default.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Resources/Private/UserTSConfig/default.ts b/Resources/Private/UserTSConfig/default.ts index 3f1caa4..c117da8 100644 --- a/Resources/Private/UserTSConfig/default.ts +++ b/Resources/Private/UserTSConfig/default.ts @@ -7,3 +7,8 @@ options { hideCreateFolder = 1 } } + +[applicationContext != 'Development'] +options.clearCache.all = 0 +options.clearCache.pages = 1 +[end] From 8c94f72895a90f23650a272cad71042ef131dbb2 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Mon, 20 Dec 2021 01:41:19 +0100 Subject: [PATCH 14/15] [BUGFIX] Padding for tables in mails --- Resources/Private/Partials/Mails/DefaultHtml.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Private/Partials/Mails/DefaultHtml.html b/Resources/Private/Partials/Mails/DefaultHtml.html index 464f7c9..b0c9b12 100644 --- a/Resources/Private/Partials/Mails/DefaultHtml.html +++ b/Resources/Private/Partials/Mails/DefaultHtml.html @@ -105,7 +105,7 @@ -
+