]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
baculum: Fix losing autochanger directive value in storage resource in director confi...
authorMarcin Haba <marcin.haba@bacula.pl>
Fri, 21 Apr 2023 04:31:04 +0000 (06:31 +0200)
committerMarcin Haba <marcin.haba@bacula.pl>
Fri, 21 Apr 2023 04:46:03 +0000 (06:46 +0200)
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

gui/baculum/protected/Web/Data/data_desc.json
gui/baculum/protected/Web/Portlets/DirectiveComboBox.php

index 7e59f926a4632c2711646e2aec5dac23110fc8d6..9c35fdd2e58f9a85a8b99d0b4ad6fda7fbef1e32 100644 (file)
                                "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,
index 8b4a705a9209cdcf388a8aa0e4af593da08c6dec..bdc18accefefa8e372baa45fd98b4b20f0bfe9f2 100644 (file)
@@ -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