From b5f98bad4235d8b28e03c086a7215458eeb18481 Mon Sep 17 00:00:00 2001
From: Torsten Oppermann <torsten@sgalinski.de>
Date: Wed, 13 Sep 2017 07:41:12 +0200
Subject: [PATCH] [TASK] Add frontend user field

---
 Classes/Controller/MailController.php       |  1 +
 Classes/Service/BackendService.php          | 16 ++++++++++++++++
 Resources/Private/Language/de.locallang.xlf |  6 +++++-
 Resources/Private/Language/locallang.xlf    |  3 +++
 Resources/Private/Templates/Mail/Index.html |  5 ++++-
 5 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/Classes/Controller/MailController.php b/Classes/Controller/MailController.php
index 808a213d..0bbd7bf1 100644
--- a/Classes/Controller/MailController.php
+++ b/Classes/Controller/MailController.php
@@ -149,6 +149,7 @@ class MailController extends ActionController {
 			$colspace = 12;
 		}
 
+		$this->view->assign('users', BackendService::getFrontendUsers());
 		$this->view->assign('colspace', $colspace);
 		$this->view->assign('languageTemplates', $templates);
 		$this->view->assign('languageLabels', BackendService::getLanguageLabels());
diff --git a/Classes/Service/BackendService.php b/Classes/Service/BackendService.php
index 5e7844b3..e5514332 100644
--- a/Classes/Service/BackendService.php
+++ b/Classes/Service/BackendService.php
@@ -35,6 +35,8 @@ use TYPO3\CMS\Core\Database\DatabaseConnection;
 use TYPO3\CMS\Core\Imaging\Icon;
 use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Domain\Model\FrontendUser;
+use TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository;
 use TYPO3\CMS\Extbase\Mvc\Request;
 use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
@@ -332,4 +334,18 @@ class BackendService {
 
 		return $template;
 	}
+
+	/**
+	 * get an array of all frontend users
+	 *
+	 * @return array
+	 * @throws \InvalidArgumentException
+	 */
+	public static function getFrontendUsers() {
+		$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
+		/** @var FrontendUserRepository $frontendUserRepository */
+		$frontendUserRepository = $objectManager->get(FrontendUserRepository::class);
+
+		return $frontendUserRepository->findAll()->toArray();
+	}
 }
diff --git a/Resources/Private/Language/de.locallang.xlf b/Resources/Private/Language/de.locallang.xlf
index bdc39428..0f3e41a4 100644
--- a/Resources/Private/Language/de.locallang.xlf
+++ b/Resources/Private/Language/de.locallang.xlf
@@ -149,6 +149,10 @@
 			<source>Sender Name</source>
 			<target>Absender-Name</target>
 		</trans-unit>
+		<trans-unit id="backend.fromUser" approved="yes">
+			<source>From User (overwrites other from fields):</source>
+			<target>Absender Benutzer (hat Vorrang falls gesetzt):</target>
+		</trans-unit>
 		<trans-unit id="backend.language_default" approved="yes">
 			<source>Default</source>
 			<target>Standard</target>
@@ -311,4 +315,4 @@
 		</trans-unit>
 		</body>
 	</file>
-</xliff>
+</xliff>
\ No newline at end of file
diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf
index 36058f20..927ab6ca 100644
--- a/Resources/Private/Language/locallang.xlf
+++ b/Resources/Private/Language/locallang.xlf
@@ -114,6 +114,9 @@
 		<trans-unit id="backend.fromName">
 			<source>Sender Name</source>
 		</trans-unit>
+		<trans-unit id="backend.fromUser">
+			<source>From User (overwrites other from fields):</source>
+		</trans-unit>
 		<trans-unit id="backend.language_default">
 			<source>Default</source>
 		</trans-unit>
diff --git a/Resources/Private/Templates/Mail/Index.html b/Resources/Private/Templates/Mail/Index.html
index 717be9e3..8af318e8 100644
--- a/Resources/Private/Templates/Mail/Index.html
+++ b/Resources/Private/Templates/Mail/Index.html
@@ -94,8 +94,11 @@
 								</f:if>
 							</f:for>
 
-
 							<div class="col-md-12">
+								<div class="row form-group">
+									<label for="parameters[templates][{key}][fromUser]" class="">{f:translate(key:'backend.fromUser')}</label>
+									<f:form.select class="form-control" property="fromName" options="{users}" name="parameters[templates][{key}][fromUser]"/>
+								</div>
 								<div class="row form-group">
 									<label for="parameters[templates][{key}][fromName]" class="">{f:translate(key:'backend.fromName')}</label>
 									<f:form.textfield type="text" class="form-control" value="{languageTemplate.fromName}" name="parameters[templates][{key}][fromName]" />
-- 
GitLab