From 4cf8a87eff7cd9435ee92cf30f820c859048b2d6 Mon Sep 17 00:00:00 2001
From: Torsten Oppermann <torsten@sgalinski.de>
Date: Mon, 12 Sep 2016 08:55:50 +0200
Subject: [PATCH] [TASK] dynamic template/marker reading

---
 Classes/Controller/MailController.php         | 13 +++++++++++
 Classes/Service/MailTemplateService.php       |  6 +++++
 Configuration/Templates/sg_comments/test.html |  3 ++-
 .../Templates/sg_documentation/demo_mail.html |  1 +
 Resources/Private/Templates/Mail/Index.html   |  1 -
 .../Private/Templates/Mail/ShowMarker.html    | 23 ++++++++++++++++++-
 .../Private/Templates/Mail/ShowTemplates.html |  2 +-
 q                                             | 13 +++++++++++
 8 files changed, 58 insertions(+), 4 deletions(-)
 create mode 100644 q

diff --git a/Classes/Controller/MailController.php b/Classes/Controller/MailController.php
index 1a282adc..4f624d79 100644
--- a/Classes/Controller/MailController.php
+++ b/Classes/Controller/MailController.php
@@ -67,6 +67,7 @@ class MailController extends ActionController {
 			) . 'Configuration/Templates/' . $extensionKey . '/';
 		$files = glob($extPath . '*.html');
 		$this->view->assign('templates', array_map('basename', $files));
+		$this->view->assign('extensionKey', $extensionKey);
 	}
 
 	/**
@@ -74,7 +75,19 @@ class MailController extends ActionController {
 	 *
 	 */
 	public function showMarkerAction() {
+		$extensionKey = $this->request->getArgument('extensionKey');
+		$template = $this->request->getArgument('template');
+		$templateContent = file_get_contents(
+			ExtensionManagementUtility::extPath(
+				'sg_mail'
+			) . 'Configuration/Templates/' . $extensionKey . '/' . $template
+		);
+
+		$marker = preg_match_all('/(?<={)[^}]+(?=})/', $templateContent, $matches) ? $matches[0] : [];
+		$comments = preg_match_all('/<!--(.|\s)*?-->/', $templateContent, $matches) ? $matches[0] : [];
 
+		$this->view->assign('marker', $marker);
+		$this->view->assign('comments', $comments);
 	}
 
 }
diff --git a/Classes/Service/MailTemplateService.php b/Classes/Service/MailTemplateService.php
index dd15f993..58b09b11 100644
--- a/Classes/Service/MailTemplateService.php
+++ b/Classes/Service/MailTemplateService.php
@@ -32,6 +32,12 @@ use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
  */
 class MailTemplateService {
 
+	/**
+	 * Holds default values for all Templates and their markers
+	 * @var array
+	 */
+	protected $templateConfig = [];
+
 	/**
 	 * @var array
 	 */
diff --git a/Configuration/Templates/sg_comments/test.html b/Configuration/Templates/sg_comments/test.html
index 1a849f42..eaa9b21f 100644
--- a/Configuration/Templates/sg_comments/test.html
+++ b/Configuration/Templates/sg_comments/test.html
@@ -1 +1,2 @@
-<h1>###heading###</h1>
+<!--this is the heading of the template-->
+<h1>{heading}</h1>
diff --git a/Configuration/Templates/sg_documentation/demo_mail.html b/Configuration/Templates/sg_documentation/demo_mail.html
index e69de29b..bd89fb88 100644
--- a/Configuration/Templates/sg_documentation/demo_mail.html
+++ b/Configuration/Templates/sg_documentation/demo_mail.html
@@ -0,0 +1 @@
+<h1>{heading123}</h1>
diff --git a/Resources/Private/Templates/Mail/Index.html b/Resources/Private/Templates/Mail/Index.html
index e7265227..86ad71f9 100644
--- a/Resources/Private/Templates/Mail/Index.html
+++ b/Resources/Private/Templates/Mail/Index.html
@@ -4,7 +4,6 @@
 </f:section>
 <f:section name="main">
 	<f:flashMessages renderMode="div" />
-	<f:debug>{extensions}</f:debug>
 	<h3>Registered Extensions</h3>
 	<ul class="list-group">
 	<f:for each="{extensions}" as="extension">
diff --git a/Resources/Private/Templates/Mail/ShowMarker.html b/Resources/Private/Templates/Mail/ShowMarker.html
index 5b4102cf..3d20cb48 100644
--- a/Resources/Private/Templates/Mail/ShowMarker.html
+++ b/Resources/Private/Templates/Mail/ShowMarker.html
@@ -1 +1,22 @@
-Show Marker Template
+<f:layout name="Default" />
+<f:section name="iconButtons">
+	&nbsp;
+</f:section>
+<f:section name="main">
+	<f:flashMessages renderMode="div" />
+	<ul class="list-group">
+		<f:for each="{marker}" as="currentMarker">
+			<li class="list-group-item">
+				{currentMarker}
+			</li>
+		</f:for>
+	</ul>
+
+	<ul class="list-group">
+		<f:for each="{comments}" as="comment">
+			<li class="list-group-item">
+				{comment}
+			</li>
+		</f:for>
+	</ul>
+</f:section>
diff --git a/Resources/Private/Templates/Mail/ShowTemplates.html b/Resources/Private/Templates/Mail/ShowTemplates.html
index 30eda2d2..3ddc830e 100644
--- a/Resources/Private/Templates/Mail/ShowTemplates.html
+++ b/Resources/Private/Templates/Mail/ShowTemplates.html
@@ -7,7 +7,7 @@
 	<ul class="list-group">
 		<f:for each="{templates}" as="template">
 			<li class="list-group-item">
-				<f:link.action controller="Mail" action="showMarker" arguments="{template:'{template}'}">
+				<f:link.action controller="Mail" action="showMarker" arguments="{template:'{template}', extensionKey: '{extensionKey}'}">
 					{template}
 				</f:link.action>
 			</li>
diff --git a/q b/q
new file mode 100644
index 00000000..590268e1
--- /dev/null
+++ b/q
@@ -0,0 +1,13 @@
+Auf Branch feature_sg_mail
+Änderungen, die nicht zum Commit vorgemerkt sind:
+  (benutzen Sie "git add <Datei>...", um die Änderungen zum Commit vorzumerken)
+  (benutzen Sie "git checkout -- <Datei>...", um die Änderungen im Arbeitsverzeichnis zu verwerfen)
+
+	geändert:       Classes/Controller/MailController.php
+	geändert:       Configuration/Templates/sg_comments/test.html
+	geändert:       Configuration/Templates/sg_documentation/demo_mail.html
+	geändert:       Resources/Private/Templates/Mail/Index.html
+	geändert:       Resources/Private/Templates/Mail/ShowMarker.html
+	geändert:       Resources/Private/Templates/Mail/ShowTemplates.html
+
+keine Änderungen zum Commit vorgemerkt (benutzen Sie "git add" und/oder "git commit -a")
-- 
GitLab