From 485b08dfc82ab261de7e10c5aeed42d48413abd7 Mon Sep 17 00:00:00 2001 From: Torsten Oppermann <torsten@sgalinski.de> Date: Wed, 2 Aug 2017 16:46:24 +0200 Subject: [PATCH] [TASK] Refactoring languages WIP --- Classes/Controller/MailController.php | 117 +++++++--------- Classes/Service/BackendService.php | 29 ++-- Resources/Private/Templates/Mail/Index.html | 144 +++++--------------- 3 files changed, 98 insertions(+), 192 deletions(-) diff --git a/Classes/Controller/MailController.php b/Classes/Controller/MailController.php index 4fb901b8..0f7e6f03 100644 --- a/Classes/Controller/MailController.php +++ b/Classes/Controller/MailController.php @@ -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'], diff --git a/Classes/Service/BackendService.php b/Classes/Service/BackendService.php index 0c5ada3f..3bc2d794 100644 --- a/Classes/Service/BackendService.php +++ b/Classes/Service/BackendService.php @@ -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 */ diff --git a/Resources/Private/Templates/Mail/Index.html b/Resources/Private/Templates/Mail/Index.html index af29857b..361bf313 100644 --- a/Resources/Private/Templates/Mail/Index.html +++ b/Resources/Private/Templates/Mail/Index.html @@ -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> -- GitLab