diff --git a/modules/mining-checker/assets/js/app.js b/modules/mining-checker/assets/js/app.js index 365ab77..c3d4571 100644 --- a/modules/mining-checker/assets/js/app.js +++ b/modules/mining-checker/assets/js/app.js @@ -26,7 +26,7 @@ return []; } })(); - const initialDebugMode = document.body && document.body.dataset.nexusDebugEnabled === '1'; + const initialDebugMode = document.body && document.body.dataset.moduleDebugEnabled === '1'; function getCookie(name) { const pattern = `; ${document.cookie}`; const parts = pattern.split(`; ${name}=`); diff --git a/modules/mining-checker/src/Api/Router.php b/modules/mining-checker/src/Api/Router.php index 5e7ee28..c84b8ad 100644 --- a/modules/mining-checker/src/Api/Router.php +++ b/modules/mining-checker/src/Api/Router.php @@ -44,7 +44,7 @@ final class Router $this->config = ModuleConfig::load($this->moduleBasePath); $requestUri = (string) ($_SERVER['REQUEST_URI'] ?? ''); $requestPath = (string) (parse_url($requestUri, PHP_URL_PATH) ?: ''); - $debugEnabled = function_exists('nexus_debug_enabled') ? nexus_debug_enabled() : false; + $debugEnabled = function_exists('module_debug_enabled') ? module_debug_enabled('mining-checker') : false; $latestDebugFilePath = rtrim($this->config->debugDir(), '/') . '/latest-server.json'; $isLatestDebugRequest = str_ends_with($requestPath, '/api/mining-checker/v1/debug/latest') || $requestPath === 'api/mining-checker/v1/debug/latest' diff --git a/partials/landingpages/modules/setup.php b/partials/landingpages/modules/setup.php index 42bc341..76bb91e 100644 --- a/partials/landingpages/modules/setup.php +++ b/partials/landingpages/modules/setup.php @@ -5,8 +5,6 @@ $error = null; $notice = null; $testGroup = null; $dbTestMessages = []; -$nexusDebugSettings = modules()->settings(nexus_debug_settings_key()); -$nexusDebugEnabled = !empty($nexusDebugSettings['enabled']); require_admin(); @@ -17,6 +15,21 @@ if (!$module) { } $fields = (array)($module['setup']['fields'] ?? []); +$hasGlobalDebugField = false; +foreach ($fields as $field) { + if ((string)($field['name'] ?? '') === 'debug_enabled') { + $hasGlobalDebugField = true; + break; + } +} +if (!$hasGlobalDebugField) { + $fields[] = [ + 'name' => 'debug_enabled', + 'label' => 'Modul-Debug aktivieren', + 'type' => 'checkbox', + 'help' => 'Wenn aktiv, darf dieses Modul Debug-Daten in den globalen Nexus-Debugstream schreiben.', + ]; +} $fieldTypes = []; $fieldMeta = []; foreach ($fields as $field) { @@ -403,7 +416,6 @@ 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'; $payload = []; - $nexusDebugEnabled = isset($_POST['nexus_debug_enabled']); if ($isSchedulerAutosave || $isSchedulerTest) { if ($cronTaskDefinitions !== []) { @@ -564,14 +576,13 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } } else { modules()->saveSettings($moduleName, $current); - modules()->saveSettings(nexus_debug_settings_key(), ['enabled' => $nexusDebugEnabled]); if ($isFxRatesSetup && modules()->hasFunction($moduleName, 'save_runtime_settings')) { module_fn($moduleName, 'save_runtime_settings', $payload); $current = modules()->settings($moduleName); } $refreshSchedulerState(); - if (!$nexusDebugEnabled) { - nexus_debug_clear(); + if (empty($payload['debug_enabled'])) { + module_debug_clear($moduleName); } $notice = 'Setup gespeichert.'; $module = modules()->get($moduleName) ?: $module; @@ -605,22 +616,6 @@ $activeDbGroup = $testGroup !== null && array_key_exists($testGroup, $dbGroups) -
-
-
- Nexus -

Debug

-

Aktiviert das projektweite Debug-Popup. Sichtbar und nutzbar nur fuer Benutzer aus der Admin-Gruppe `appadmin`.

-
-
-
- -
-
auth(); $authUser = $auth->user(); $isDebugAdmin = auth_is_admin(); $isNexusDebugEnabled = $isDebugAdmin && nexus_debug_enabled(); +$isCurrentModuleDebugEnabled = $isDebugAdmin && $currentModuleName !== null && module_debug_enabled($currentModuleName); ?> @@ -56,7 +57,7 @@ $isNexusDebugEnabled = $isDebugAdmin && nexus_debug_enabled(); - +
diff --git a/src/App/functions.php b/src/App/functions.php index 4e2da4c..5bf298d 100644 --- a/src/App/functions.php +++ b/src/App/functions.php @@ -276,29 +276,8 @@ function module_design(string $module): array return $cache[$module]; } -function nexus_debug_settings_key(): string -{ - return '__nexus_debug__'; -} - -function nexus_debug_configured(): bool -{ - try { - $settings = modules()->settings(nexus_debug_settings_key()); - } catch (\Throwable $e) { - return false; - } - - $value = $settings['enabled'] ?? '0'; - return $value === true || $value === 1 || $value === '1' || $value === 'true'; -} - function nexus_debug_enabled(): bool { - if (!nexus_debug_configured()) { - return false; - } - if (function_exists('auth_enabled') && auth_enabled()) { return auth_is_admin(); } @@ -363,7 +342,18 @@ function module_debug_enabled(string $module): bool return false; } - return nexus_debug_enabled(); + if (!nexus_debug_enabled()) { + return false; + } + + try { + $settings = modules()->settings($module); + } catch (\Throwable $e) { + return false; + } + + $value = $settings['debug_enabled'] ?? '0'; + return $value === true || $value === 1 || $value === '1' || $value === 'true'; } function module_debug_entries(string $module): array