diff --git a/partials/landingpages/modules/setup.php b/partials/landingpages/modules/setup.php index fbfe9ce..ac6373e 100644 --- a/partials/landingpages/modules/setup.php +++ b/partials/landingpages/modules/setup.php @@ -1742,12 +1742,27 @@ $activeDbGroup = $testGroup !== null && array_key_exists($testGroup, $dbGroups) }); }); }); + try { + console.groupCollapsed('[scheduler] collect payload'); + for (const pair of payload.entries()) { + console.log(pair[0], pair[1]); + } + console.groupEnd(); + } catch (error) { + console.warn('[scheduler] payload debug failed', error); + } return payload; }; const persistScheduler = async () => { if (!form) return true; - const response = await fetch(form.action || window.location.href, { + const url = form.action || window.location.href; + console.log('[scheduler] persist start', { + url, + method: 'POST', + hasForm: !!form, + }); + const response = await fetch(url, { method: 'POST', body: collectSchedulerPayload(), credentials: 'same-origin', @@ -1756,20 +1771,31 @@ $activeDbGroup = $testGroup !== null && array_key_exists($testGroup, $dbGroups) 'X-Requested-With': 'XMLHttpRequest', }, }); + console.log('[scheduler] persist response meta', { + ok: response.ok, + status: response.status, + redirected: response.redirected, + contentType: response.headers.get('content-type'), + url: response.url, + }); if (!response.ok) { throw new Error(`Scheduler konnte nicht gespeichert werden (${response.status}).`); } const raw = await response.text(); + console.log('[scheduler] persist raw response', raw); let data = null; try { data = JSON.parse(raw); } catch (error) { + console.error('[scheduler] persist json parse failed', error); throw new Error(`Scheduler-Antwort war kein JSON: ${raw.slice(0, 160)}`); } + console.log('[scheduler] persist parsed response', data); if (!data || data.ok !== true) { throw new Error(data?.message || 'Scheduler konnte nicht gespeichert werden.'); } applyStatusUpdates(data.statuses || []); + console.log('[scheduler] persist success'); return true; }; @@ -1888,6 +1914,12 @@ $activeDbGroup = $testGroup !== null && array_key_exists($testGroup, $dbGroups) const saveModal = async () => { const entry = modalState.entry; if (!entry) return; + console.log('[scheduler] modal save click', { + tab: modalState.tab, + entryIndex: entry.dataset.entryIndex || null, + enabled: modalFields.enabled.value, + timezone: modalFields.timezone.value, + }); const modeNode = getEntryField(entry, '[data-cron-builder-mode]'); const kindNode = getEntryField(entry, '[data-cron-builder-kind]'); @@ -1901,6 +1933,7 @@ $activeDbGroup = $testGroup !== null && array_key_exists($testGroup, $dbGroups) const timezoneNode = getEntryField(entry, '[data-cron-timezone]'); if (!modeNode || !kindNode || !timeNode || !weekdayNode || !monthDayNode || !intervalHoursNode || !intervalDaysNode || !enabledNode || !expressionNode || !timezoneNode) { + console.error('[scheduler] modal save aborted: missing entry fields'); return; } @@ -1931,8 +1964,10 @@ $activeDbGroup = $testGroup !== null && array_key_exists($testGroup, $dbGroups) } try { await persistScheduler(); + console.log('[scheduler] modal save complete, closing modal'); closeModal(); } catch (error) { + console.error('[scheduler] modal save failed', error); alert(error instanceof Error ? error.message : 'Scheduler konnte nicht gespeichert werden.'); } finally { if (modalFields.saveButton) {