From ecb80fc2afed0407e9903023242a34e75fb7bde4 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 17 Dec 2021 11:30:37 +0100 Subject: [locations/passthrough] Make location assignment recusive Properly show inherited passthough groups in location list, disable inherited passthrough groups in selection dialog. --- .../locations/pages/locations.inc.php | 23 +++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'modules-available/locations/pages') diff --git a/modules-available/locations/pages/locations.inc.php b/modules-available/locations/pages/locations.inc.php index 0eb035c8..8ba4793e 100644 --- a/modules-available/locations/pages/locations.inc.php +++ b/modules-available/locations/pages/locations.inc.php @@ -123,7 +123,7 @@ class SubPage unset($loc); foreach ($plugins as $pk => $plugin) { if ($plugin->propagateColumn()) { - self::propagateFields($locationList, $plugin->propagateDefaultHtml(), $pk); + self::propagateFields($locationList, $plugin, $pk); } } foreach ($locationList as &$loc) { @@ -155,23 +155,22 @@ class SubPage Module::isAvailable('js_ip'); // For CIDR magic } - private static function propagateFields(array &$locationList, string $defaultValue, string $plugin) + private static function propagateFields(array &$locationList, AbstractLocationColumn $plugin, string $pluginKey) { $depth = array(); foreach ($locationList as &$loc) { $d = $loc['depth']; - if (empty($loc['plugins'][$plugin]['html'])) { + if (empty($loc['plugins'][$pluginKey]['html'])) { // Has no explicit config assignment - if ($d === 0) { - $loc['plugins'][$plugin]['html'] = $defaultValue; - } else { - $loc['plugins'][$plugin]['html'] = $depth[$d - 1]; - } - $loc['plugins'][$plugin]['class'] = 'gray'; - } elseif (empty($loc['plugins'][$plugin]['class'])) { - $loc['plugins'][$plugin]['class'] = 'slx-bold'; + $loc['plugins'][$pluginKey]['html'] = $depth[$d - 1] ?? $plugin->propagateDefaultHtml(); + $loc['plugins'][$pluginKey]['class'] = 'gray'; + } elseif (empty($loc['plugins'][$pluginKey]['class'])) { + $loc['plugins'][$pluginKey]['class'] = 'slx-bold'; + $loc['plugins'][$pluginKey]['html'] = + $plugin->propagationOverride($depth[$d - 1] ?? $plugin->propagateDefaultHtml(), + $loc['plugins'][$pluginKey]['html']); } - $depth[$d] = $loc['plugins'][$plugin]['html']; + $depth[$d] = $loc['plugins'][$pluginKey]['html']; unset($depth[$d + 1]); } } -- cgit v1.2.3-55-g7522