From 9954be1fc188f0968ef33a0f989bc9c2d265ee15 Mon Sep 17 00:00:00 2001
From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch>
Date: Wed, 28 Feb 2024 14:35:53 +0100
Subject: [PATCH] remove foreman; update replacements

---
 config/lang/de-de.json                     |  2 +
 config/lang/en-en.json                     |  2 +
 public_html/deployment/main.css            |  4 ++
 public_html/deployment/pages/act_phase.php | 72 +++++++++++++++++++---
 4 files changed, 73 insertions(+), 7 deletions(-)

diff --git a/config/lang/de-de.json b/config/lang/de-de.json
index b2ea6e6f..e22cebcd 100644
--- a/config/lang/de-de.json
+++ b/config/lang/de-de.json
@@ -341,6 +341,8 @@
     "replacement-fields": "erkannte Platzhalter:",
     "replacement-fields-not-found": "Es wurden keine Platzhalter im Format <em>@replace[&quot;Name&quot;]</em> im Template gefunden.",
     "replacement-targetfile": "Ziel-Datei",
+    "replacement-none": "Keine Ersetzungen gefunden.",
+    "replacement-no-templatefiles": "Keine Templatefiles f&uuml;r diese Phase gefunden.",
     "replacements": "Ersetzungen mit Template-Dateien",
     "repositoryinfos": "Quell-Repository",
     "repository-access-browser": "Browserzugriff auf das Repo",
diff --git a/config/lang/en-en.json b/config/lang/en-en.json
index 7bd0875a..3c86ce27 100644
--- a/config/lang/en-en.json
+++ b/config/lang/en-en.json
@@ -343,6 +343,8 @@
     "replacement-fields-not-found": "No placeholder in the syntax <em>@replace[&quot;name&quot;]</em> were found in the template.",
     "replacement-targetfile": "Target file",
     "replacements": "Replacements in template files",
+    "replacement-none": "No replacements were found.",
+    "replacement-no-templatefiles": "No template file was found for the current phase.",
     "repositoryinfos": "Sourcecode Repository",
     "repository-access-browser": "Browser access to sources",
     "repository-auth": "Authentication/ filename of ssh private key",
diff --git a/public_html/deployment/main.css b/public_html/deployment/main.css
index be743e24..a5c3284e 100644
--- a/public_html/deployment/main.css
+++ b/public_html/deployment/main.css
@@ -667,6 +667,10 @@ span.replace {
     background: #fc8;
     font-weight: bold;
 }
+span.replacehighlight {
+    background: #68a;
+    color: #fff;
+}
 
 /* ----- log table ----- */
 div.vis-item{
diff --git a/public_html/deployment/pages/act_phase.php b/public_html/deployment/pages/act_phase.php
index 5b22b0eb..bbebeddb 100644
--- a/public_html/deployment/pages/act_phase.php
+++ b/public_html/deployment/pages/act_phase.php
@@ -9,10 +9,10 @@
 
   ---------------------------------------------------------------------
   2013-11-08  Axel <axel.hahn@iml.unibe.ch>
+  2024-02-28  Axel <axel.hahn@unibe.ch>       remove foreman; update replacements
   ###################################################################### */
 
 require_once("./classes/project_gui.class.php");
-// require_once("./inc_functions.php");
 require_once("./classes/config-replacement.class.php");
 
 
@@ -34,7 +34,7 @@ if ($sPhase) {
     
     $oConfig = new configreplacement();
     $oConfig->setProject($aParams["prj"], $sPhase);
-
+    
     $aReplacements=$oConfig->getReplacements();
 
     $sOutReplace.='<h3>' . $oHtml->getIcon('replace') . t("replacements") . '</h3>';
@@ -42,6 +42,7 @@ if ($sPhase) {
     // ----------------------------------------------------------------------
     // Links to foreman
     // ----------------------------------------------------------------------
+    /*
     $aForeman=$oConfig->getForemanReplacements();
     $aReplacementsForeman=$aForeman ? $aForeman['rules'] : false;
     
@@ -54,6 +55,7 @@ if ($sPhase) {
             : t('foreman-no-host')
             ).'<br><br>'
         ;
+    */
 
     // ----------------------------------------------------------------------
     // Loop over files
@@ -73,13 +75,17 @@ if ($sPhase) {
             ))
             ;
         }
-        
+
+        // $sOutReplace.='<pre>'.print_r($aReplacements, 1).'</pre>';
+
         foreach ($aReplacements as $sFile => $aFields) {
             $tTplFile = basename($sFile);
-            $bFileInForeman = $aReplacementsForeman && isset($aReplacementsForeman[$tTplFile]);
+            // $bFileInForeman = $aReplacementsForeman && isset($aReplacementsForeman[$tTplFile]);
             $sDivIdFile='div4file-'.md5($sFile);
 
             $sOutReplace.='<h4>' . 
+
+                // --- link filename of template to toggle details.
                     $oHtml->getLink(array(
                         'onclick'=>'$(\'#'.$sDivIdFile.'\').slideToggle(); $(this).toggleClass(\'closed\'); return false;',
                         'class'=>'expandable closed',
@@ -90,6 +96,7 @@ if ($sPhase) {
                     ;
 
             // --- check: does this file in foreman exist?
+            /*
             if (!isset($aReplacementsForeman[$tTplFile])){
                 if ($aReplacementsForeman){
                     $sOutReplace.=$oHtml->getBox('error', t('foreman-error-template-unknown'));
@@ -97,7 +104,6 @@ if ($sPhase) {
                 }
             }
 
-
             // --- check: target file was set?
             $aTable=array('header'=>array(), 'body'=>array());
             if ($bFileInForeman){
@@ -133,7 +139,7 @@ if ($sPhase) {
 
                     }
                     $aTable['body'][]=array(
-                        $oHtml->getIcon('replace') . $sField, 
+                        $oHtml->getIcon('replace') . $sField,
                         $sTd
                     );
                 }
@@ -161,8 +167,10 @@ if ($sPhase) {
                     }
                 }
             }
+            */
 
             // --- filecontent of template
+            /*
             $ContentFile='<br>'.$sFile.'<br><br>'
                     .'<pre style="max-height:35em;">'
                     . preg_replace('/(@replace\[.*\])/U', '<span class="replace">$1</span>' , htmlentities(file_get_contents($sFile)))
@@ -181,15 +189,64 @@ if ($sPhase) {
                 .'</div>'
             
             .'</div>';
+            */
+
+            // --- found replacement keys
+            sort($aFields);
+            $sReplacevars='';
+            $sContent=htmlentities(file_get_contents($sFile));
+            if ($aFields && count($aFields)){
+                // $sReplacevars.='<ol><li>'.implode('</li><li>', $aFields).'</li></ol>';
+                foreach($aFields as $sField){
+                    $fieldId='field-'.md5($sFile.$sField);
+                    // $sReplacevars.='<li><a href="#" onmouseover="$(\'span.replace\').removeClass(\'replacehighlight\'); $(\'span.'.$fieldId.'\').addClass(\'replacehighlight\')">'.$sField.'</a></li>';
+                    $sReplacevars.='<li><a href="#'.$fieldId.'" '
+                        .'onclick="$(\'span.replace\').removeClass(\'replacehighlight\'); $(\'span#'.$fieldId.'\').addClass(\'replacehighlight\');" '
+                        .'>'.$sField.'</a></li>';
+                    $sContent=preg_replace('#(@replace\[&quot;'.$sField.'&quot;\])#U', '<span id="'.$fieldId.'" class="replace">$1</span>' , $sContent);
+                }
+                $sReplacevars='<ol>'.$sReplacevars.'</ol>';
+            } else {
+                $sReplacevars.='-';
+            }
+
+            // 
+            $sOutReplace.=$renderAdminLTE->addRow(
+                $renderAdminLTE->addCol(
+                    $renderAdminLTE->getCard([
+                    'type'=>'',
+                    'title' => $oHtml->getIcon('file-template') . $sFile,
+                    'variant'=>'outline',
+                    'text'=>''
+                        .'<pre style="max-height:35em;">'
+                        . $sContent
+                        .'</pre>'                    ,
+                    ]), 8
+                )
+                . $renderAdminLTE->addCol(
+                    $renderAdminLTE->getCard([
+                    'type'=>'',
+                    'variant'=>'outline',
+                    'title' => $oHtml->getIcon('list') . t('replacement-fields'),
+                    'text'=>''
+                        //. $oHtml->getTable($aTable)
+                        . $sReplacevars
+                    ]), 4
+                )
+            )
+            .'</div>' // close <div class="divfileinfos">
+            ;
         }
     } else {
-        $sOutReplace.=t('none');
+        $aFiles=$oConfig->getTemplatefiles();
+        $sOutReplace.=$oHtml->getBox('info', $aFiles ? t('replacement-none') : t('replacement-no-templatefiles'));
     }
     
     
     // --- reverse check - do templates in foreman physically exist?
     // for testing: create a testfile
     // $aReplacementsForeman['dummytemplate.erb']=array();
+    /*
     if($aReplacementsForeman){
         foreach(array_keys($aReplacementsForeman) as $sForemanTemplate){
             
@@ -219,6 +276,7 @@ if ($sPhase) {
             }
         }
     }
+    */
 
     if (count($aWarnings)){
         $sOutReplace.=$oHtml->getBox('warning', '<ul><li>'.implode('<li>', $aWarnings).'</ul>');
-- 
GitLab