From f8ae8902ce51ea625047423bd6688000962acf68 Mon Sep 17 00:00:00 2001 From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch> Date: Fri, 29 Nov 2024 13:26:47 +0100 Subject: [PATCH] multiple instances for rollout plugins --- .../deployment/classes/project.class.php | 7 +++++-- .../deployment/classes/project_gui.class.php | 21 +++++++++++-------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/public_html/deployment/classes/project.class.php b/public_html/deployment/classes/project.class.php index bd67b5ef..8f521105 100644 --- a/public_html/deployment/classes/project.class.php +++ b/public_html/deployment/classes/project.class.php @@ -28,6 +28,7 @@ require_once 'htmlguielements.class.php'; (...) 2024-08-28 Axel php8 only; added variable types; short array syntax 2024-09-20 Axel build(): check if checkout of sources failed + 2024-11-29 Axel multiple instances for rollout plugins ###################################################################### */ /** @@ -1579,17 +1580,19 @@ class project extends base // ----- init rollout plugin // set name of the activated plugin for this project - $sPluginName = (isset($this->_aPrjConfig['deploy']['enabled_rollout_plugin']) && $this->_aPrjConfig['deploy']['enabled_rollout_plugin']) + $sPluginId = (isset($this->_aPrjConfig['deploy']['enabled_rollout_plugin']) && $this->_aPrjConfig['deploy']['enabled_rollout_plugin']) ? $this->_aPrjConfig['deploy']['enabled_rollout_plugin'] : 'default'; + $sPluginName=$this->_aConfig['plugins']['rollout'][$sPluginId]['plugin']; unset($this->oRolloutPlugin); try { require_once $this->_getPluginFilename('rollout', $sPluginName); $sPluginClassname = 'rollout_' . $sPluginName; $this->oRolloutPlugin = new $sPluginClassname([ + 'id' => $sPluginId, 'lang' => $this->_aConfig['lang'], 'phase' => false, - 'globalcfg' => isset($this->_aConfig['plugins']['rollout'][$sPluginName]) ? $this->_aConfig['plugins']['rollout'][$sPluginName] : [], + 'globalcfg' => isset($this->_aConfig['plugins']['rollout'][$sPluginId]) ? $this->_aConfig['plugins']['rollout'][$sPluginId] : [], 'projectcfg' => $this->_aPrjConfig, ]); // print_r($this->_oRolloutPlugin->getPluginfos()); diff --git a/public_html/deployment/classes/project_gui.class.php b/public_html/deployment/classes/project_gui.class.php index d6fef253..e43497ff 100644 --- a/public_html/deployment/classes/project_gui.class.php +++ b/public_html/deployment/classes/project_gui.class.php @@ -15,6 +15,7 @@ require_once 'htmlguielements.class.php'; 2013-11-08 Axel <axel.hahn@iml.unibe.ch> (...) 2024-08-26 Axel php8 only; added variable types; short array syntax + 2024-11-29 Axel multiple instances for rollout plugins ###################################################################### */ /** @@ -841,27 +842,29 @@ class projectgui extends project ], 'project-config' => '', ]; - foreach (array_keys($this->getConfiguredPlugins('rollout')) as $sPluginName) { + foreach ($this->getConfiguredPlugins('rollout') as $sPluginId => $aPluginCfg) { + $sPluginName=$aPluginCfg['plugin']; $sPluginFile = $this->_getPluginFilename('rollout', $sPluginName); $TmpRolloutPlugin = false; $sMyClassname = 'rollout_' . $sPluginName; - $sMyDivId = 'rollout-' . $sPluginName . '-config'; + $sMyDivId = 'rollout-' . $sPluginId . '-config'; $sMyDivClass = 'rolloutconfigdiv'; - $sMyDivClassActive = 'rolloutconfigdiv-' . $sPluginName; - $bActive = $sPluginName === $this->oRolloutPlugin->getId(); + $sMyDivClassActive = 'rolloutconfigdiv-' . $sPluginId; + $bActive = $sPluginId === $this->oRolloutPlugin->getId(); if (file_exists($sPluginFile)) { try { - include_once $this->_getPluginFilename('rollout', $sPluginName); + include_once $sPluginFile; $TmpRolloutPlugin = new $sMyClassname([ + 'id' => $sPluginId, 'lang' => $this->_aConfig['lang'], 'phase' => false, - 'globalcfg' => $this->_aConfig['plugins']['rollout'][$sPluginName], + 'globalcfg' => $this->_aConfig['plugins']['rollout'][$sPluginId], 'projectcfg' => $this->_aPrjConfig, ]); - $aRollout['project-select']['options'][$sPluginName] = [ - 'label' => $TmpRolloutPlugin->getName(), + $aRollout['project-select']['options'][$sPluginId] = [ + 'label' => $aPluginCfg['label'] ?: $TmpRolloutPlugin->getName(), 'checked' => $bActive, 'onclick' => '$(\'.' . $sMyDivClass . '\').hide(); $(\'.' . $sMyDivClassActive . '\').show();', ]; @@ -888,7 +891,7 @@ class projectgui extends project } } else { - $aRollout['project-select']['options'][$sPluginName] = [ + $aRollout['project-select']['options'][$sPluginId] = [ 'label' => 'not found: <span class="error">' . $sMyClassname . '</span>', 'checked' => false, 'disabled' => "disabled", -- GitLab