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,
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);
}
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
);
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;
}
-
/**
*
*/
diff --git a/Classes/Utility/MailUtility.php b/Classes/Utility/MailUtility.php
index db456d2..3564ba6 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',
@@ -222,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];
@@ -314,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
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'
) {
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;
+ }
}
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 : '');
+ }
}
diff --git a/Classes/Utility/TcaUtility.php b/Classes/Utility/TcaUtility.php
index af4f59a..13c6782 100644
--- a/Classes/Utility/TcaUtility.php
+++ b/Classes/Utility/TcaUtility.php
@@ -14,6 +14,8 @@ namespace Cjel\TemplatesAide\Utility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Core\Localization\LanguageService;
/**
*
@@ -88,23 +90,35 @@ 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;
}
/**
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]
diff --git a/Resources/Private/Partials/Mails/DefaultHtml.html b/Resources/Private/Partials/Mails/DefaultHtml.html
index 464f7c9..3d1956c 100644
--- a/Resources/Private/Partials/Mails/DefaultHtml.html
+++ b/Resources/Private/Partials/Mails/DefaultHtml.html
@@ -105,11 +105,11 @@