diff --git a/public/js/admin/newsletter-management.js b/public/js/admin/newsletter-management.js index bff3cd12..4a3d5f90 100644 --- a/public/js/admin/newsletter-management.js +++ b/public/js/admin/newsletter-management.js @@ -309,7 +309,6 @@ function getCsrfToken() { function validateNewsletterForm() { const tier = document.getElementById('newsletter-tier').value; const subject = document.getElementById('newsletter-subject').value; - const contentRaw = document.getElementById('newsletter-content').value; if (!tier) { showStatus('error', 'Please select a newsletter tier'); @@ -321,16 +320,21 @@ function validateNewsletterForm() { return null; } - if (!contentRaw) { - showStatus('error', 'Please enter content variables (JSON)'); - return null; - } + // Collect content from individual form fields + const variables = { + highlight_1_title: document.getElementById('highlight_1_title').value, + highlight_1_summary: document.getElementById('highlight_1_summary').value, + highlight_1_link: document.getElementById('highlight_1_link').value, + finding_1: document.getElementById('finding_1').value, + question_1: document.getElementById('question_1').value, + feedback_link: document.getElementById('feedback_link').value, + blog_link: document.getElementById('blog_link').value + }; - let variables; - try { - variables = JSON.parse(contentRaw); - } catch (error) { - showStatus('error', 'Invalid JSON in content field'); + // Basic validation - at least one content field should be filled + const hasContent = Object.values(variables).some(val => val && val.trim()); + if (!hasContent) { + showStatus('error', 'Please fill in at least one content field'); return null; } @@ -442,6 +446,8 @@ async function handleTestNewsletter(e) { if (response.ok && result.success) { showStatus('success', `Test email sent to ${testEmail}`); + // Clear form on successful test send + document.getElementById('send-newsletter-form').reset(); } else { throw new Error(result.error || 'Test send failed'); }