diff --git a/Classes/Controller/MailController.php b/Classes/Controller/MailController.php index 25a45cc054df13ebf0aaf63090f77ebbcded819c..0ecd815604c03fc6272fa60f54f106a81c18ab17 100644 --- a/Classes/Controller/MailController.php +++ b/Classes/Controller/MailController.php @@ -87,6 +87,27 @@ class MailController extends ActionController { } $registerArray = MailTemplateService::getRegisterArray(); + $extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['sg_mail'], [FALSE]); + if (isset($extensionConfiguration['excludeTemplates']) && $extensionConfiguration['excludeTemplates'] !== '') { + $excludedTemplates = GeneralUtility::trimExplode(',', $extensionConfiguration['excludeTemplates'], TRUE); + if ($excludedTemplates && count($excludedTemplates)) { + foreach ($excludedTemplates as $excludedTemplate) { + list($extensionKey, $templateName) = GeneralUtility::trimExplode('.', $excludedTemplate); + if ($extensionKey && $templateName && isset($registerArray[$extensionKey][$templateName])) { + unset($registerArray[$extensionKey][$templateName]); + } + } + } + } + $removeExtensionKeys = []; + foreach($registerArray as $extensionKey => $extensionTemplates) { + if (count($extensionTemplates) === 0) { + $removeExtensionKeys[] = $extensionKey; + } + } + foreach($removeExtensionKeys as $extensionKey) { + unset($registerArray[$extensionKey]); + } // if no extensions are registered, redirect to empty action if (empty($registerArray)) { @@ -148,7 +169,7 @@ class MailController extends ActionController { $this->view->assign('colspace', $colspace); $this->view->assign('languageTemplates', $templates); $this->view->assign('languageLabels', BackendService::getLanguageLabels($languages)); - $this->view->assign('templates', MailTemplateService::getRegisterArray()); + $this->view->assign('templates', $registerArray); $templateDescription = $registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['description']; diff --git a/Resources/Private/Language/de.locallang.xlf b/Resources/Private/Language/de.locallang.xlf index 3e6a366ea0ca749597804220f5078680d6f4def8..9cf5de2650c702ec97a5d31f893fd715b81626b3 100644 --- a/Resources/Private/Language/de.locallang.xlf +++ b/Resources/Private/Language/de.locallang.xlf @@ -309,6 +309,10 @@ <source>Example</source> <target>Beispiel</target> </trans-unit> + <trans-unit id="configuration.excludeTemplates"> + <source>Exclude Mail Templates:Comma-separated list of {extension_key}.{template_name}</source> + <target>Mail-Templates ausschließen:Kommagetrennte Liste von {extension_key}.{template_name}</target> + </trans-unit> <trans-unit id="mlang_labels_tabdescr" approved="yes"> <source>Mail Templates</source> <target>Mail-Templates</target> diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index a981af7ee20890b6f367efea941fb9088ec8e38b..61ea244b2b218d5de3e9b0f2ec48f73dca470a7b 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -234,6 +234,9 @@ <trans-unit id="backend.value"> <source>Example</source> </trans-unit> + <trans-unit id="configuration.excludeTemplates"> + <source>Exclude Mail Templates:Comma-separated list of {extension_key}.{template_name}</source> + </trans-unit> <trans-unit id="mlang_labels_tabdescr"> <source>Mail Templates</source> </trans-unit> diff --git a/ext_conf_template.txt b/ext_conf_template.txt new file mode 100644 index 0000000000000000000000000000000000000000..5eee4dc177e0146d29cb88e4e209a21d4c086193 --- /dev/null +++ b/ext_conf_template.txt @@ -0,0 +1,2 @@ +# cat=general; type=string; label=LLL:EXT:sg_mail/Resources/Private/Language/locallang.xlf:configuration.excludeTemplates +excludeTemplates =