Skip to content
Snippets Groups Projects
Commit 94b43fc2 authored by Torsten Oppermann's avatar Torsten Oppermann
Browse files

[TASK] Adding template filter grouping

parent 20353fe4
No related branches found
No related tags found
1 merge request!3New version 4 1
......@@ -151,6 +151,7 @@ class MailController extends ActionController {
$this->view->assign('colspace', $colspace);
$this->view->assign('languageTemplates', $templates);
$this->view->assign('languageLabels', BackendService::getLanguageLabels());
$this->view->assign('templates', MailTemplateService::getRegisterArray());
$templateDescription = $registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['description'];
......
......@@ -66,8 +66,20 @@ class QueueController extends ActionController {
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
*/
public function indexAction($selectedTemplate = NULL, $selectedExtension = NULL, array $filters = []) {
$registerArray = MailTemplateService::getRegisterArray();
$filterTemplate = $_POST['filterTemplate'];
$filters['filterExtension'] = $filterTemplate;
$filters['filterTemplate'] = $filterTemplate;
if ($_POST['filterTemplate'] !== '') {
$extensionTemplateFilterArray = explode('###', $filterTemplate);
$filters['filterExtension'] = $extensionTemplateFilterArray[0];
$filters['filterTemplate'] = $extensionTemplateFilterArray[1];
}
$this->view->assign('selectedTemplateFilter', $filters['filterTemplate'] );
$this->view->assign('selectedExtensionFilter', $filters['filterExtension']);
$registerArray = MailTemplateService::getRegisterArray();
if ($selectedTemplate === NULL || $selectedTemplate === '') {
$selectedExtension = key($registerArray);
$selectedTemplate = key($registerArray[$selectedExtension]);
......@@ -82,6 +94,7 @@ class QueueController extends ActionController {
$this->view->assign('selectedTemplateKey', $selectedTemplate);
$this->view->assign('selectedExtensionKey', $selectedExtension);
$this->view->assign('templates', $registerArray);
$this->view->assign('templatesFilter', BackendService::getTemplatesForFilter());
$this->view->assign('languages', BackendService::getLanguagesForFilter());
......
......@@ -69,6 +69,12 @@ class MailRepository extends AbstractRepository {
$query->setLimit($limit);
}
if ($filters['filterExtension'] && $filters['filterExtension'] !== 0
&& $filters['filterExtension'] !== '0' && $filters['filterExtension'] !== ''
) {
$constraintsAnd[] = $query->equals('extension_key', $filters['filterExtension']);
}
if ($filters['filterTemplate'] && $filters['filterTemplate'] !== 0
&& $filters['filterTemplate'] !== '0' && $filters['filterTemplate'] !== ''
) {
......
......@@ -156,6 +156,28 @@ class BackendService {
return $languages;
}
/**
* get an array of all the labels for the activated languages
*
* @return array
* @throws \InvalidArgumentException
*/
public static function getLanguageLabels() {
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var LanguageRepository $languageRepository */
$languageRepository = $objectManager->get(LanguageRepository::class);
$activatedLanguages = $languageRepository->findSelected();
$languages = [];
$languages['en'] = LocalizationUtility::translate('backend.language_default', 'SgMail');
foreach ($activatedLanguages as $language) {
$languages[$language->getLocale()] = $language->getLabel();
}
return $languages;
}
/**
* Get the previous selected languages, the actual selection or the default
* format ['left' => languagecode, 'right' => ...]
......@@ -253,7 +275,7 @@ class BackendService {
$templates = [];
foreach ($registerArray as $extensions) {
foreach ($extensions as $template => $key) {
$templates[$key['templateName']] = $key['templateName'];
$templates[$key['extension']][] = $key['templateName'];
}
}
array_unshift($templates, '');
......
......@@ -129,6 +129,10 @@
<source>Sender Name</source>
<target>Absender-Name</target>
</trans-unit>
<trans-unit id="backend.language_default" approved="yes">
<source>Default (Probably English)</source>
<target>Standard (wahrscheinlich Englisch)</target>
</trans-unit>
<trans-unit id="backend.last_sent" approved="yes">
<source>Last Sent</source>
<target>Zuletzt gesendet</target>
......
......@@ -99,6 +99,9 @@
<trans-unit id="backend.fromName">
<source>Sender Name</source>
</trans-unit>
<trans-unit id="backend.language_default">
<source>Default (Probably English)</source>
</trans-unit>
<trans-unit id="backend.last_sent">
<source>Last Sent</source>
</trans-unit>
......
......@@ -7,8 +7,40 @@
<f:form.textfield class="form-control" property="filterSearch" id="filter-search" />
</div>
<div class="form-group">
<label for="filter-template"><f:translate key="backend.filter.template" /></label>
<f:form.select class="form-control" multiple="0" size="1" property="filterTemplate" optionValueField="key" options="{templatesFilter}" id="filter-template" />
<label for="filterTemplate"><f:translate key="backend.filter.template" /></label>
<f:comment>
<f:form.select class="form-control" multiple="0" size="1" property="filterTemplate" optionValueField="key" options="{templatesFilter}" id="filter-template" />
</f:comment>
<select class="form-control" property="filterTemplate" id="filterTemplate" name="filterTemplate">
<f:for each="{templatesFilter}" as="extension" key="extensionKey">
<f:if condition="{extensionKey}">
<f:then>
<sgm:be.menus.actionMenuOptionGroup label="{extensionKey}">
<f:for each="{extension}" as="template">
<sgm:extendedIf condition="{selectedTemplateFilter} == {template}"
and="{selectedExtensionFilter} == {extensionKey}">
<f:then>
<option value="{extensionKey}###{template}" selected="selected">
{template}
</option>
</f:then>
<f:else>
<option value="{extensionKey}###{template}">
{template}
</option>
</f:else>
</sgm:extendedIf>
</f:for>
</sgm:be.menus.actionMenuOptionGroup>
</f:then>
<f:else>
<option></option>
</f:else>
</f:if>
</f:for>
</select>
</div>
<div class="form-group">
<label for="filter-languages"><f:translate key="backend.filter.language" /></label>
......
......@@ -88,7 +88,13 @@
<f:for each="{languageTemplates}" as="languageTemplate" key="key">
<div class="template-col col-md-{colspace}">
<h3>{key}</h3>
<f:for each="{languageLabels}" as="label" key="innerKey">
<f:if condition="{key} == {innerKey}">
<h3>{label}</h3>
</f:if>
</f:for>
<div class="col-md-12">
<div class="row form-group">
<label for="parameters[templates][{key}][fromName]" class="">{f:translate(key:'backend.fromName')}</label>
......
......@@ -6,7 +6,7 @@
<f:section name="content">
<f:flashMessages />
<f:render partial="Queue/Filter" arguments="{filterFields: filterFields, filters: filters, languages: languages, templatesFilter: templatesFilter}" />
<f:render partial="Queue/Filter" arguments="{filterFields: filterFields, filters: filters, languages: languages, templatesFilter: templatesFilter, selectedTemplateFilter: selectedTemplateFilter, selectedExtensionFilter: selectedExtensionFilter}" />
<f:if condition="{queue -> f:count()} > 0">
<f:then>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment