From 3e25617720112d3ad171051fbe94a863fcd82ddb Mon Sep 17 00:00:00 2001 From: Paul Ilea <paul@sgalinski.de> Date: Mon, 16 Oct 2017 16:13:35 +0300 Subject: [PATCH] [FEATURE] Configrable Excluded Templates from BE Module --- Classes/Controller/MailController.php | 23 ++++++++++++++++++++- Resources/Private/Language/de.locallang.xlf | 4 ++++ Resources/Private/Language/locallang.xlf | 3 +++ ext_conf_template.txt | 2 ++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 ext_conf_template.txt diff --git a/Classes/Controller/MailController.php b/Classes/Controller/MailController.php index 25a45cc0..0ecd8156 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 3e6a366e..9cf5de26 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 a981af7e..61ea244b 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 00000000..5eee4dc1 --- /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 = -- GitLab