From 4842f3198926ed452c2b33fae171f2abfa1f5a0f Mon Sep 17 00:00:00 2001
From: "Hahn Axel (hahn)" <axel.hahn@iml.unibe.ch>
Date: Fri, 9 Jun 2017 17:11:11 +0200
Subject: [PATCH] ci webgui - detect missing placeholder in templates

---
 config/lang/de.json                        |  1 +
 config/lang/en.json                        |  1 +
 public_html/deployment/pages/act_phase.php | 30 ++++++++++++++--------
 3 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/config/lang/de.json b/config/lang/de.json
index e9fbe501..1abfeb08 100644
--- a/config/lang/de.json
+++ b/config/lang/de.json
@@ -255,6 +255,7 @@
     "foreman-error-missing-template": "In Foreman wurde das Templatefile [%s] definiert, aber dieses existiert nicht im Build.",
     "foreman-error-no-replacement-for-id": "In Foreman wurde keine noch Ersetzung f&uuml;r [%s] definiert.",
     "foreman-error-no-target": "In Foreman wurde keine Ziel-Datei definiert",
+    "foreman-error-no-replacement-in-templatefile": "Es wurde kein Platzhalter zum Ersetzen in diesem Template gefunden.",
     "foreman-error-template-unknown": "Das Template wurde in Foreman nicht aufgenommen",
     "foreman-error-replacement-unknown": "Das Replacement [%s] in Foreman existiert im Template nicht.",
     "foreman-hostgroup": "Foreman Hostgruppe",
diff --git a/config/lang/en.json b/config/lang/en.json
index 4db2c5e3..7eb6255a 100644
--- a/config/lang/en.json
+++ b/config/lang/en.json
@@ -257,6 +257,7 @@
     "foreman-error-missing-template": "In Foreman the templatefile [%s] was defined but it does not exist in the build.",
     "foreman-error-no-replacement-for-id": "There is no replacement for [%s] in Foreman.",
     "foreman-error-no-target": "No target file was set in Foreman",
+    "foreman-error-no-replacement-in-templatefile": "No placeholder for a replacement was found in this template.",
     "foreman-error-template-unknown": "The template was not added in Foreman.",
     "foreman-error-replacement-unknown": "The replacement [%s] from Foreman has no plceholder in the template file.",
     "foreman-hostgroup": "Foreman hostgroup",
diff --git a/public_html/deployment/pages/act_phase.php b/public_html/deployment/pages/act_phase.php
index 24d0013d..ff97695c 100644
--- a/public_html/deployment/pages/act_phase.php
+++ b/public_html/deployment/pages/act_phase.php
@@ -119,22 +119,30 @@ if ($sPhase) {
 
             // --- loop over all replacement items of template file
             //     and check if they exist in foreman
-            foreach ($aFields as $sField){
-                if ($aReplacementsForeman && array_key_exists($sField, $aReplacementsForeman[$tTplFile]['replace'])){
-                    $sTd=$aReplacementsForeman[$tTplFile]['replace'][$sField];
-                } else {
-                    if ($bFileInForeman){
-                        $sTd=$oHtml->getBox('error', sprintf(t('foreman-error-no-replacement-for-id'), $sField));
-                        $aWarnings[]=$tTplFile.': '.sprintf(t('foreman-error-no-replacement-for-id'), $sField);
+            if (count($aFields)) {
+                foreach ($aFields as $sField){
+                    if ($aReplacementsForeman && array_key_exists($sField, $aReplacementsForeman[$tTplFile]['replace'])){
+                        $sTd=$aReplacementsForeman[$tTplFile]['replace'][$sField];
                     } else {
-                        $sTd='-';
-                    }
+                        if ($bFileInForeman){
+                            $sTd=$oHtml->getBox('error', sprintf(t('foreman-error-no-replacement-for-id'), $sField));
+                            $aWarnings[]=$tTplFile.': '.sprintf(t('foreman-error-no-replacement-for-id'), $sField);
+                        } else {
+                            $sTd='-';
+                        }
 
+                    }
+                    $aTable['body'][]=array(
+                        $oHtml->getIcon('replace') . $sField, 
+                        $sTd
+                    );
                 }
+            } else {
                 $aTable['body'][]=array(
-                    $oHtml->getIcon('replace') . $sField, 
-                    $sTd
+                    $oHtml->getBox('error', t('foreman-error-no-replacement-in-templatefile')),
+                    '-'
                 );
+                $aWarnings[]=$tTplFile.': '.t('foreman-error-no-replacement-in-templatefile');
             }
 
             // --- reverse check ... loop over all replacement items of foreman
-- 
GitLab