From: Marcin Haba Date: Fri, 21 Apr 2023 04:31:04 +0000 (+0200) Subject: baculum: Fix losing autochanger directive value in storage resource in director confi... X-Git-Tag: Release-13.0.3~65 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9eed4569a33c5d69d98b683d9254d975b297bcac;p=thirdparty%2Fbacula.git baculum: Fix losing autochanger directive value in storage resource in director configuration This fix is ported from Bacularis. It has been reported by kibeb in bacularis-docker repository. Bug report: https://github.com/bacularis/bacularis-docker/issues/3 Later it was reported by Justin Case in Baculum: Bug report: https://gitlab.bacula.org/bacula-community-edition/bacula-community/-/issues/2680 --- diff --git a/gui/baculum/protected/Web/Data/data_desc.json b/gui/baculum/protected/Web/Data/data_desc.json index 7e59f926a..9c35fdd2e 100644 --- a/gui/baculum/protected/Web/Data/data_desc.json +++ b/gui/baculum/protected/Web/Data/data_desc.json @@ -1110,15 +1110,10 @@ "Required": false, "ValueType": "ac_res", "DefaultValue": 0, - "FieldType": "TextBox", - "Section": "Device" - }, - "Autochanger": { - "Required": false, - "ValueType": "bool", - "DefaultValue": 0, - "FieldType": "CheckBox", - "Section": "Device" + "FieldType": "ComboBox", + "Resource": "Storage", + "Section": "Device", + "Data": ["yes"] }, "MaximumConcurrentJobs": { "Required": false, diff --git a/gui/baculum/protected/Web/Portlets/DirectiveComboBox.php b/gui/baculum/protected/Web/Portlets/DirectiveComboBox.php index 8b4a705a9..bdc18acce 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveComboBox.php +++ b/gui/baculum/protected/Web/Portlets/DirectiveComboBox.php @@ -49,13 +49,21 @@ class DirectiveComboBox extends DirectiveTemplate { $items = array(); if (is_array($data)) { $items = $data; - } elseif (is_array($resource_names)) { - if (array_key_exists($directive_name, $resource_names)) { - $items = $resource_names[$directive_name]; - } elseif (array_key_exists($resource, $resource_names)) { - $items = $resource_names[$resource]; + } + if (is_array($resource_names)) { + $ritems = []; + if (key_exists($directive_name, $resource_names)) { + $ritems = $resource_names[$directive_name]; + } elseif (key_exists($resource, $resource_names)) { + $ritems = $resource_names[$resource]; + } + if (count($items) > 0) { + $items = array_merge($items, $ritems); + } else { + $items = $ritems; } } + reset($items); if (key($items) === 0) { // indexed array as data source