document.addEventListener('DOMContentLoaded', () => { const form = document.getElementById('mailForm'); const status = document.getElementById('status'); const submitBtn = document.getElementById('submitBtn'); const historyList = document.getElementById('historyList'); const clearHistoryBtn = document.getElementById('clearHistory'); const assetGrid = document.getElementById('assetGrid'); // Load history and assets on page load loadHistory(); loadAssets(); // Form submission form.addEventListener('submit', async (e) => { e.preventDefault(); const formData = new FormData(form); const selectedAssets = Array.from( document.querySelectorAll('input[name="footerAssets"]:checked') ).map(cb => cb.value); const data = { to: formData.get('to'), cc: formData.get('cc') || undefined, subject: formData.get('subject'), body: formData.get('body'), isHtml: formData.get('format') === 'html', footerAssets: selectedAssets }; submitBtn.disabled = true; submitBtn.textContent = 'Sende...'; hideStatus(); try { const response = await fetch('/api/send', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }); const result = await response.json(); if (result.success) { showStatus('E-Mail erfolgreich gesendet!', 'success'); form.reset(); } else { showStatus(result.error, 'error'); } loadHistory(); } catch (error) { showStatus('Netzwerkfehler: ' + error.message, 'error'); } finally { submitBtn.disabled = false; submitBtn.textContent = 'Senden'; } }); // Clear history clearHistoryBtn.addEventListener('click', async () => { if (!confirm('Gesamte Historie löschen?')) return; try { const response = await fetch('/api/history', { method: 'DELETE' }); const result = await response.json(); if (result.success) { loadHistory(); } } catch (error) { console.error('Error clearing history:', error); } }); // Load history from server async function loadHistory() { try { const response = await fetch('/api/history'); const result = await response.json(); if (result.success) { renderHistory(result.history); } } catch (error) { console.error('Error loading history:', error); } } // Load assets from server async function loadAssets() { try { const response = await fetch('/api/assets'); const result = await response.json(); if (result.success) { renderAssetGrid(result.assets); } else { assetGrid.innerHTML = '
'; } } catch (error) { console.error('Error loading assets:', error); assetGrid.innerHTML = ''; } } // Render asset grid function renderAssetGrid(assets) { if (!assets || assets.length === 0) { assetGrid.innerHTML = ''; return; } assetGrid.innerHTML = assets.map(filename => { const name = filename.replace(/\.[^.]+$/, ''); return ` `; }).join(''); } // Render history list function renderHistory(history) { if (!history || history.length === 0) { historyList.innerHTML = ''; return; } historyList.innerHTML = history.map(item => `