// Announcements admin page: intercepts the status badge's toggle form so // clicking it updates in place via fetch instead of reloading the whole // page — same interaction as the menu item's status toggle. Everything // else here (create/edit/delete) is still a plain form POST + reload. document.addEventListener('submit', async (e) => { const form = e.target; if (!form.classList.contains('status-toggle-form')) return; e.preventDefault(); const btn = form.querySelector('button'); btn.disabled = true; try { const response = await fetch('index.php', { method: 'POST', body: new FormData(form), headers: { 'X-Requested-With': 'XMLHttpRequest' } }); const data = await response.json(); if (data.success) { btn.className = `status-badge ${data.status_class}`; btn.textContent = data.status_label; btn.title = `Click to turn ${data.is_active ? 'off' : 'on'}`; } else { alert(data.error || 'Failed to update status.'); } } catch { alert('Network error. Please try again.'); } finally { btn.disabled = false; } }); // Asks before submitting any form marked .js-confirm-submit (e.g. delete), // using the message in its data-confirm attribute. document.addEventListener('submit', (e) => { const form = e.target; if (!form.classList.contains('js-confirm-submit')) return; if (!confirm(form.dataset.confirm || 'Are you sure?')) { e.preventDefault(); } });