diff --git a/partials/landingpages/modules/setup.php b/partials/landingpages/modules/setup.php index 9cb1d99..0bdc65a 100644 --- a/partials/landingpages/modules/setup.php +++ b/partials/landingpages/modules/setup.php @@ -5,6 +5,7 @@ $error = null; $notice = null; $testGroup = null; $dbTestMessages = []; +$currentSection = trim((string) ($_GET['section'] ?? 'general')); require_admin(); @@ -14,6 +15,11 @@ if (!$module) { return; } +$allowedSetupSections = ['general', 'access', 'cron', 'custom']; +if (!in_array($currentSection, $allowedSetupSections, true)) { + $currentSection = 'general'; +} + $fields = (array)($module['setup']['fields'] ?? []); $hasGlobalDebugField = false; foreach ($fields as $field) { @@ -438,6 +444,10 @@ $renderField = function (array $field) use (&$current, $getNested, $driverOption if ($_SERVER['REQUEST_METHOD'] === 'POST') { $isSchedulerAutosave = isset($_POST['scheduler_autosave']) && (string) $_POST['scheduler_autosave'] === '1'; $isSchedulerTest = isset($_POST['scheduler_test']) && (string) $_POST['scheduler_test'] === '1'; + $submittedSetupSection = trim((string) ($_POST['setup_section'] ?? $currentSection)); + if (!in_array($submittedSetupSection, $allowedSetupSections, true)) { + $submittedSetupSection = $currentSection; + } $payload = []; if ($isSchedulerAutosave || $isSchedulerTest) { @@ -599,21 +609,23 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } } else { modules()->saveSettings($moduleName, $current); - $selectedUsers = is_array($_POST['auth_user_values'] ?? null) ? $_POST['auth_user_values'] : []; - $selectedGroups = is_array($_POST['auth_group_values'] ?? null) ? $_POST['auth_group_values'] : []; - $manualUserValues = preg_split('/[,\\n]+/', (string) ($_POST['auth_users'] ?? '')) ?: []; - $manualGroupValues = preg_split('/[,\\n]+/', (string) ($_POST['auth_groups'] ?? '')) ?: []; - modules()->saveAuth($moduleName, [ - 'required' => isset($_POST['auth_required']), - 'users' => array_merge($selectedUsers, $manualUserValues), - 'groups' => array_merge($selectedGroups, $manualGroupValues), - ]); + if ($submittedSetupSection === 'access') { + $selectedUsers = is_array($_POST['auth_user_values'] ?? null) ? $_POST['auth_user_values'] : []; + $selectedGroups = is_array($_POST['auth_group_values'] ?? null) ? $_POST['auth_group_values'] : []; + $manualUserValues = preg_split('/[,\\n]+/', (string) ($_POST['auth_users'] ?? '')) ?: []; + $manualGroupValues = preg_split('/[,\\n]+/', (string) ($_POST['auth_groups'] ?? '')) ?: []; + modules()->saveAuth($moduleName, [ + 'required' => isset($_POST['auth_required']), + 'users' => array_merge($selectedUsers, $manualUserValues), + 'groups' => array_merge($selectedGroups, $manualGroupValues), + ]); + } if ($isFxRatesSetup && modules()->hasFunction($moduleName, 'save_runtime_settings')) { module_fn($moduleName, 'save_runtime_settings', $payload); $current = modules()->settings($moduleName); } $refreshSchedulerState(); - if (empty($payload['debug_enabled'])) { + if ($submittedSetupSection === 'general' && array_key_exists('debug_enabled', $payload) && empty($payload['debug_enabled'])) { module_debug_clear($moduleName); } $notice = 'Setup gespeichert.'; @@ -658,42 +670,62 @@ $knownUserValues = array_column($knownUsers, 'sub'); $manualUsers = array_values(array_filter($allowedUsers, fn (string $value): bool => !in_array($value, $knownUserValues, true))); $manualGroups = array_values(array_filter($allowedGroups, fn (string $value): bool => !in_array($value, $knownGroups, true))); $hasCustomSection = $customSetupFields !== [] || $setupActions !== [] || $isFxRatesSetup; +$sectionUrls = [ + 'general' => '/modules/setup/' . rawurlencode($moduleName) . '/general', + 'access' => '/modules/setup/' . rawurlencode($moduleName) . '/access', + 'cron' => '/modules/setup/' . rawurlencode($moduleName) . '/cron', + 'custom' => '/modules/setup/' . rawurlencode($moduleName) . '/custom', +]; +$sectionTitles = [ + 'general' => 'Allgemein', + 'access' => 'Zugriffsrechte', + 'cron' => 'Cron Einstellungen', + 'custom' => 'Custom Settings', +]; +if ($currentSection === 'custom' && !$hasCustomSection) { + $currentSection = 'general'; +} +$GLOBALS['layout_header_context'] = 'Setup / ' . ($sectionTitles[$currentSection] ?? 'Allgemein'); ?> -
Trage die benötigten Informationen für das Modul ein.
+