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

[TASK] Refactoring languages WIP

parent 8efb86af
No related branches found
No related tags found
1 merge request!3New version 4 1
......@@ -90,92 +90,66 @@ class MailController extends ActionController {
$this->redirect('empty');
}
$languages = BackendService::getLanguages();
$this->view->assign('languages', $languages);
$this->view->assign('templates', MailTemplateService::getRegisterArray());
// get language selection or read from cache or get default
$selectedLanguages = BackendService::getSelectedLanguages(
$parameters['selectedLanguageLeft'], $parameters['selectedLanguageRight'], $this->session, $languages
);
if ($parameters['selectedTemplate'] === NULL || $parameters['selectedTemplate'] === '') {
$parameters['selectedExtension'] = key($registerArray);
$parameters['selectedTemplate'] = key($registerArray[$parameters['selectedExtension']]);
}
$selectedTemplates = BackendService::getSelectedTemplates(
$parameters['selectedExtension'], $parameters['selectedTemplate'], $selectedLanguages, $this->session,
$languages = BackendService::getLanguages();
$templates = BackendService::getSelectedTemplates(
$parameters['selectedExtension'], $parameters['selectedTemplate'], $languages,
$pid
);
if ($selectedTemplates['left'] instanceof Template) {
$this->view->assign('contentLeft', $selectedTemplates['left']->getContent());
$this->view->assign('fromNameLeft', $selectedTemplates['left']->getFromName());
$this->view->assign('fromMailLeft', $selectedTemplates['left']->getFromMail());
$this->view->assign('ccLeft', $selectedTemplates['left']->getCc());
$this->view->assign('bccLeft', $selectedTemplates['left']->getBcc());
$this->view->assign('replyToLeft', $selectedTemplates['left']->getReplyTo());
} else {
$defaultTemplatePath = $registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['templatePath'];
$defaultTemplateFile = $defaultTemplatePath . $selectedLanguages['left'] . '.' . 'template.html';
if (file_exists($defaultTemplateFile)) {
$this->view->assign('contentLeft', file_get_contents($defaultTemplateFile));
}
// calculating optimal column width for the view
$colspace = 3;
$templateCount = count($templates);
if ($templateCount % 2 === 0 && $templateCount <= 4) {
$colspace = 6;
} elseif ($templateCount === 1) {
$colspace = 12;
}
if ($selectedTemplates['right'] instanceof Template) {
$this->view->assign('contentRight', $selectedTemplates['right']->getContent());
$this->view->assign('fromNameRight', $selectedTemplates['right']->getFromName());
$this->view->assign('fromMailRight', $selectedTemplates['right']->getFromMail());
$this->view->assign('ccRight', $selectedTemplates['right']->getCc());
$this->view->assign('bccRight', $selectedTemplates['right']->getBcc());
$this->view->assign('replyToRight', $selectedTemplates['right']->getReplyTo());
} else {
$defaultTemplatePath = $registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['templatePath'];
$defaultTemplateFile = $defaultTemplatePath . $selectedLanguages['right'] . '.' . 'template.html';
if (file_exists($defaultTemplateFile)) {
$this->view->assign('contentRight', file_get_contents($defaultTemplateFile));
}
}
$this->view->assign('colspace', $colspace);
$this->view->assign('languageTemplates', $templates);
$this->view->assign('templates', MailTemplateService::getRegisterArray());
$subject = $registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['subject'];
if (is_array($subject)) {
$this->view->assign(
'subjectLeft', $selectedTemplates['left'] !== NULL ? $selectedTemplates['left']->getSubject() :
$registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['subject'][$selectedLanguages['left']]
);
$this->view->assign(
'subjectRight', $selectedTemplates['right'] !== NULL ? $selectedTemplates['right']->getSubject() :
$registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['subject'][$selectedLanguages['right']]
);
} else {
$translatedSubjects = BackendService::getTranslatedTemplateSubject(
$subject, $parameters['selectedExtension'], $selectedLanguages
);
$this->view->assign(
'subjectLeft', $selectedTemplates['left'] !== NULL ? $selectedTemplates['left']->getSubject() :
$translatedSubjects['left']
);
$this->view->assign(
'subjectRight', $selectedTemplates['right'] !== NULL ? $selectedTemplates['right']->getSubject() :
$translatedSubjects['right']
);
// $this->view->assign(
// 'subjectLeft', $selectedTemplates['left'] !== NULL ? $selectedTemplates['left']->getSubject() :
// $registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['subject'][$selectedLanguages['left']]
// );
//
// $this->view->assign(
// 'subjectRight', $selectedTemplates['right'] !== NULL ? $selectedTemplates['right']->getSubject() :
// $registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['subject'][$selectedLanguages['right']]
// );
// } else {
// $translatedSubjects = BackendService::getTranslatedTemplateSubject(
// $subject, $parameters['selectedExtension'], $selectedLanguages
// );
//
// $this->view->assign(
// 'subjectLeft', $selectedTemplates['left'] !== NULL ? $selectedTemplates['left']->getSubject() :
// $translatedSubjects['left']
// );
//
// $this->view->assign(
// 'subjectRight', $selectedTemplates['right'] !== NULL ? $selectedTemplates['right']->getSubject() :
// $translatedSubjects['right']
// );
}
$templateDescription = $registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['description'];
if (is_array($templateDescription)) {
$templateDescription = $templateDescription[$selectedLanguages['left']];
} else {
$templateDescription = LocalizationUtility::translate(
$templateDescription, $parameters['selectedExtension']
);
}
// if (is_array($templateDescription)) {
// $templateDescription = $templateDescription[$selectedLanguages['left']];
// } else {
// $templateDescription = LocalizationUtility::translate(
// $templateDescription, $parameters['selectedExtension']
// );
// }
// create doc header component
$pageUid = (int) GeneralUtility::_GP('id');
......@@ -189,8 +163,6 @@ class MailController extends ActionController {
);
$this->view->assign('selectedTemplateKey', $parameters['selectedTemplate']);
$this->view->assign('selectedExtensionKey', $parameters['selectedExtension']);
$this->view->assign('selectedLanguageLeft', $selectedLanguages['left']);
$this->view->assign('selectedLanguageRight', $selectedLanguages['right']);
$this->view->assign('mode', 'editor');
} else {
$this->view->assign('pages', BackendService::getPages());
......@@ -273,6 +245,9 @@ class MailController extends ActionController {
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\UnknownObjectException
*/
public function sendTestMailAction(array $parameters = []) {
debug($parameters);
die();
$this->saveTemplate(
$parameters['selectedExtension'], $parameters['selectedTemplate'], $parameters['selectedLanguageLeft'],
$parameters['contentLeft'], $parameters['subjectLeft'],
......
......@@ -202,14 +202,13 @@ class BackendService {
*
* @param string $selectedExtension
* @param string $selectedTemplate
* @param array $selectedLanguages
* @param \SGalinski\SgMail\Session\PhpSession $session
* @param array $languages
* @param int $pid
* @return array
* @throws \InvalidArgumentException
*/
public static function getSelectedTemplates(
$selectedExtension, $selectedTemplate, array $selectedLanguages, &$session, $pid
$selectedExtension, $selectedTemplate, array $languages, $pid
) {
$selectedTemplates = [];
......@@ -217,15 +216,21 @@ class BackendService {
/** @var TemplateRepository $templateRepository */
$templateRepository = $objectManager->get(TemplateRepository::class);
$session->setDataByKey('selectedLanguageLeft', $selectedLanguages['left']);
$session->setDataByKey('selectedLanguageRight', $selectedLanguages['right']);
foreach ($languages as $language) {
$selectedTemplates[$language] = $templateRepository->findOneByTemplate(
$selectedExtension, $selectedTemplate, $language, $pid
);
}
$selectedTemplates['left'] = $templateRepository->findOneByTemplate(
$selectedExtension, $selectedTemplate, $selectedLanguages['left'], $pid
);
$selectedTemplates['right'] = $templateRepository->findOneByTemplate(
$selectedExtension, $selectedTemplate, $selectedLanguages['right'], $pid
);
// $session->setDataByKey('selectedLanguageLeft', $selectedLanguages['left']);
// $session->setDataByKey('selectedLanguageRight', $selectedLanguages['right']);
//
// $selectedTemplates['left'] = $templateRepository->findOneByTemplate(
// $selectedExtension, $selectedTemplate, $selectedLanguages['left'], $pid
// );
// $selectedTemplates['right'] = $templateRepository->findOneByTemplate(
// $selectedExtension, $selectedTemplate, $selectedLanguages['right'], $pid
// );
return $selectedTemplates;
}
......@@ -280,7 +285,7 @@ class BackendService {
}
/**
* Get the template keys in an array suitable for filtering
* Get the template keys in an array suitable for filtering
*
* @return array
*/
......
......@@ -75,126 +75,52 @@
</div>
</div>
</div>
<div class="row col-md-12">
<div class="row col-md-12 form-group">
<f:form method="post" controller="Mail" action="sendTestMail">
<div class="col-md-12 form-group">
<f:form.submit class="btn-primary btn form-group" value="{f:translate(key:'backend.send_test')}" />
<f:form.textfield name="parameters[emailAddress]" type="email" required="TRUE" class="email-input form-group" value="{beUserMail}" />
<f:form.hidden name="parameters[selectedLanguageLeft]" value="{selectedLanguageLeft}" />
<f:form.hidden name="parameters[selectedLanguageRight]" value="{selectedLanguageRight}" />
<f:form.hidden name="parameters[selectedTemplate]" value="{selectedTemplateKey}" />
<f:form.hidden name="parameters[selectedExtensionKey]" value="{selectedTemplate.extension}" />
<f:form.hidden name="parameters[selectedExtension]" value="{selectedTemplate.extension}" />
<f:form.hidden name="parameters[selectedTemplateKey]" value="{selectedTemplateKey}" />
</div>
<div class="col-md-6">
<div class="form-group">
<label class="">{f:translate(key:'backend.select_language')}</label>
<f:be.menus.actionMenu>
<f:for each="{languages}" as="language">
<sgm:extendedIf condition="{language} == {selectedLanguageLeft}">
<f:then>
<sgm:be.menus.actionMenuItem label="{language}"
controller="Mail"
action="index"
arguments="{selectedLanguageLeft: language, selectedLanguageRight: selectedLanguageRight, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}"
additionalAttributes="{selected: 'selected'}" />
</f:then>
<f:else>
<sgm:be.menus.actionMenuItem label="{language}"
controller="Mail"
action="index"
arguments="{selectedLanguageLeft: language, selectedLanguageRight: selectedLanguageRight, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" />
</f:else>
</sgm:extendedIf>
</f:for>
</f:be.menus.actionMenu>
</div>
<div class="form-group">
<label for="parameters[fromNameLeft]" class="">{f:translate(key:'backend.fromName')}</label>
<f:form.textfield type="text" class="form-control" value="{fromNameLeft}" name="parameters[fromNameLeft]" />
</div>
<div class="form-group">
<label for="parameters[fromMailLeft]" class="">{f:translate(key:'backend.fromMail')}</label>
<f:form.textfield type="email" class="form-control" value="{fromMailLeft}" name="parameters[fromMailLeft]" />
</div>
<div class="form-group">
<label for="parameters[ccLeft]" class="">{f:translate(key:'backend.cc')}</label>
<f:form.textfield type="text" class="form-control" value="{ccLeft}" name="parameters[ccLeft]" />
</div>
<div class="form-group">
<label for="parameters[bccLeft]" class="">{f:translate(key:'backend.bcc')}</label>
<f:form.textfield type="text" class="form-control" value="{bccLeft}" name="parameters[bccLeft]" />
</div>
<div class="form-group">
<label for="parameters[replyToLeft]" class="">{f:translate(key:'backend.replyTo')}</label>
<f:form.textfield type="text" class="form-control" value="{replyToLeft}" name="parameters[replyToLeft]" />
</div>
<div class="form-group">
<label for="parameters[subjectLeft]" class="">{f:translate(key:'backend.subject')}</label>
<f:form.textfield type="text" class="form-control" value="{subjectLeft}" name="parameters[subjectLeft]" />
</div>
<label for="parameters[contentLeft]" class="">{f:translate(key:'backend.content')}</label>
<f:form.textarea class="form-control" rows="25" name="parameters[contentLeft]" value="{contentLeft}" />
</div>
<div class="col-md-6">
<div class="form-group">
<label class="">{f:translate(key:'backend.select_language')}</label>
<f:be.menus.actionMenu>
<f:for each="{languages}" as="language">
<sgm:extendedIf condition="{language} == {selectedLanguageRight}">
<f:then>
<sgm:be.menus.actionMenuItem label="{language}"
controller="Mail"
action="index"
arguments="{parmselectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}"
additionalAttributes="{selected: 'selected'}" />
</f:then>
<f:else>
<sgm:be.menus.actionMenuItem label="{language}"
controller="Mail"
action="index"
arguments="{parameters: {selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}}" />
arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" />
</f:else>
</sgm:extendedIf>
</f:for>
</f:be.menus.actionMenu>
<f:for each="{languageTemplates}" as="languageTemplate" key="key">
<div class="col-md-{colspace}" style="border: 1px solid;">
<h3>{key}</h3>
<div class="col-md-12">
<div class="row form-group">
<label for="parameters[{key}][fromName]" class="">{f:translate(key:'backend.fromName')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.fromName}" name="parameters[{key}][fromName]" />
</div>
<div class="row form-group">
<label for="parameters[{key}][fromMail]" class="">{f:translate(key:'backend.fromMail')}</label>
<f:form.textfield type="email" class="form-control" value="{languageTemplate.fromMail}" name="parameters[{key}][fromMail]" />
</div>
<div class="row form-group">
<label for="parameters[{key}][cc]" class="">{f:translate(key:'backend.cc')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.cc}" name="parameters[{key}][cc]" />
</div>
<div class="row form-group">
<label for="parameters[{key}][bcc]" class="">{f:translate(key:'backend.bcc')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.bcc}" name="parameters[{key}][bcc]" />
</div>
<div class="row form-group">
<label for="parameters[{key}][replyTo]" class="">{f:translate(key:'backend.replyTo')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.replyToLeft}" name="parameters[{key}][replyTo]" />
</div>
<div class="row form-group">
<label for="parameters[{key}][subject]" class="">{f:translate(key:'backend.subject')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.subjectLeft}" name="parameters[{key}][subject]" />
</div>
<div class="row form-group">
<label for="parameters[{key}][content]" class="">{f:translate(key:'backend.content')}</label>
<f:form.textarea class="form-control" rows="15" name="parameters[{key}][content]" value="{languageTemplate.content}" />
</div>
</div>
</div>
<div class="form-group">
<label for="parameters[fromNameRight]" class="">{f:translate(key:'backend.fromName')}</label>
<f:form.textfield type="text" class="form-control" value="{fromNameRight}" name="parameters[fromNameRight]" />
</div>
<div class="form-group">
<label for="parameters[fromMailRight]" class="">{f:translate(key:'backend.fromMail')}</label>
<f:form.textfield type="email" class="form-control" value="{fromMailRight}" name="parameters[fromMailRight]" />
</div>
<div class="form-group">
<label for="parameters[ccRight]" class="">{f:translate(key:'backend.cc')}</label>
<f:form.textfield type="text" class="form-control" value="{ccRight}" name="parameters[ccRight]" />
</div>
<div class="form-group">
<label for="parameters[bccRight]" class="">{f:translate(key:'backend.bcc')}</label>
<f:form.textfield type="text" class="form-control" value="{bccRight}" name="parameters[bccRight]" />
</div>
<div class="form-group">
<label for="parameters[replyToRight]" class="">{f:translate(key:'backend.replyTo')}</label>
<f:form.textfield type="text" class="form-control" value="{replyToRight}" name="parameters[replyToRight]" />
</div>
<div class="form-group">
<label for="parameters[subjectRight]" class="">{f:translate(key:'backend.subject')}</label>
<f:form.textfield type="text" class=" form-control" value="{subjectRight}" name="parameters[subjectRight]" />
</div>
<label for="parameters[contentRight]" class="">{f:translate(key:'backend.content')}</label>
<f:form.textarea class="form-control" rows="25" name="parameters[contentRight]" value="{contentRight}" />
</div>
<div class="col-md-2">
<div class="form-group">
<f:form.submit class="btn-primary btn form-group btn-save-backend " value="{f:translate(key:'backend.send_test')}" />
</div>
</div>
</f:for>
</f:form>
</div>
</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