From dfbb66bf74cc2c873b400ac355a997dceb8d8f61 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Fri, 1 May 2026 02:04:46 +0200 Subject: [PATCH] asdasd --- partials/landingpages/modules/setup.php | 54 +++++++++++++++++-------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/partials/landingpages/modules/setup.php b/partials/landingpages/modules/setup.php index 20b7407..94412f4 100644 --- a/partials/landingpages/modules/setup.php +++ b/partials/landingpages/modules/setup.php @@ -416,6 +416,25 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $isSchedulerAutosave = isset($_POST['scheduler_autosave']) && (string) $_POST['scheduler_autosave'] === '1'; $payload = []; + if ($isSchedulerAutosave) { + if ($cronTaskDefinitions !== []) { + $postedSchedulerJobs = is_array($_POST['scheduler_jobs'] ?? null) ? $_POST['scheduler_jobs'] : []; + $current['scheduler_jobs'] = $extractSchedulerJobs($postedSchedulerJobs, $cronTaskDefinitions, $current); + } + modules()->saveSettings($moduleName, $current); + $current = modules()->settings($moduleName); + $refreshSchedulerState(); + + header('Content-Type: application/json; charset=utf-8'); + echo json_encode([ + 'ok' => true, + 'message' => 'Scheduler gespeichert.', + 'scheduler_jobs' => $current['scheduler_jobs'] ?? [], + 'statuses' => $cronTaskStatuses, + ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + exit; + } + foreach ($fields as $field) { $name = (string)($field['name'] ?? ''); if ($name === '') { @@ -462,21 +481,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $current['scheduler_jobs'] = $schedulerJobs; } - if ($isSchedulerAutosave) { - modules()->saveSettings($moduleName, $current); - $current = modules()->settings($moduleName); - $refreshSchedulerState(); - - header('Content-Type: application/json; charset=utf-8'); - echo json_encode([ - 'ok' => true, - 'message' => 'Scheduler gespeichert.', - 'scheduler_jobs' => $current['scheduler_jobs'] ?? [], - 'statuses' => $cronTaskStatuses, - ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); - exit; - } - $postedTestGroup = (string)($_POST['test_db'] ?? ''); $postedResetGroup = (string)($_POST['reset_db'] ?? ''); $postedSetupAction = trim((string)($_POST['module_setup_action'] ?? '')); @@ -1568,6 +1572,7 @@ $activeDbGroup = $testGroup !== null && array_key_exists($testGroup, $dbGroups) expression: modal.querySelector('[data-modal-expression]'), summary: modal.querySelector('[data-modal-summary]'), code: modal.querySelector('[data-modal-code]'), + saveButton: modal.querySelector('[data-scheduler-save]'), tabs: Array.from(modal.querySelectorAll('[data-builder-tab]')), panels: Array.from(modal.querySelectorAll('[data-builder-panel]')), }; @@ -1743,13 +1748,20 @@ $activeDbGroup = $testGroup !== null && array_key_exists($testGroup, $dbGroups) method: 'POST', body: collectSchedulerPayload(), headers: { + 'Accept': 'application/json', 'X-Requested-With': 'XMLHttpRequest', }, }); if (!response.ok) { throw new Error(`Scheduler konnte nicht gespeichert werden (${response.status}).`); } - const data = await response.json(); + const raw = await response.text(); + let data = null; + try { + data = JSON.parse(raw); + } catch (error) { + throw new Error(`Scheduler-Antwort war kein JSON: ${raw.slice(0, 160)}`); + } if (!data || data.ok !== true) { throw new Error(data?.message || 'Scheduler konnte nicht gespeichert werden.'); } @@ -1908,11 +1920,21 @@ $activeDbGroup = $testGroup !== null && array_key_exists($testGroup, $dbGroups) } updateEntrySummary(entry); + const originalLabel = modalFields.saveButton?.textContent || 'Uebernehmen'; + if (modalFields.saveButton) { + modalFields.saveButton.disabled = true; + modalFields.saveButton.textContent = 'Speichert...'; + } try { await persistScheduler(); closeModal(); } catch (error) { alert(error instanceof Error ? error.message : 'Scheduler konnte nicht gespeichert werden.'); + } finally { + if (modalFields.saveButton) { + modalFields.saveButton.disabled = false; + modalFields.saveButton.textContent = originalLabel; + } } };