function setCopyStatus(message, isError) { const status = document.getElementById("copy-status"); if (!status) return; status.textContent = message; status.className = isError ? "copy-status error" : "copy-status success"; } async function copyForOutlook() { const htmlSource = document.getElementById("newsletter-html-source"); const plainSource = document.getElementById("newsletter-plain-source"); if (!htmlSource || !htmlSource.value.trim()) { setCopyStatus("Bitte zuerst einen Newsletter generieren.", true); return; } const html = htmlSource.value; const plain = plainSource ? plainSource.value : ""; try { if (navigator.clipboard && window.ClipboardItem) { await navigator.clipboard.write([ new ClipboardItem({ "text/html": new Blob([html], { type: "text/html" }), "text/plain": new Blob([plain], { type: "text/plain" }), }), ]); setCopyStatus("Newsletter mit Hyperlinks kopiert. In Outlook mit Strg+V einfügen."); return; } } catch (err) { console.warn("Clipboard API failed, using fallback.", err); } const container = document.createElement("div"); container.innerHTML = html; container.style.position = "fixed"; container.style.left = "-9999px"; document.body.appendChild(container); const range = document.createRange(); range.selectNodeContents(container); const selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range); let ok = false; try { ok = document.execCommand("copy"); } finally { selection.removeAllRanges(); document.body.removeChild(container); } setCopyStatus( ok ? "Newsletter mit Hyperlinks kopiert. In Outlook mit Strg+V einfügen." : "Kopieren fehlgeschlagen.", !ok ); } async function copyHtmlSource() { const htmlSource = document.getElementById("newsletter-html-source"); if (!htmlSource || !htmlSource.value.trim()) { setCopyStatus("Bitte zuerst einen Newsletter generieren.", true); return; } try { await navigator.clipboard.writeText(htmlSource.value); setCopyStatus("HTML-Quelltext kopiert."); } catch (err) { setCopyStatus("Kopieren fehlgeschlagen.", true); } } document.addEventListener("DOMContentLoaded", () => { const htmlSource = document.getElementById("newsletter-html-source"); const frame = document.getElementById("newsletter-preview-frame"); if (htmlSource && frame && htmlSource.value.trim()) { frame.srcdoc = htmlSource.value; } document.getElementById("copy-outlook-btn")?.addEventListener("click", copyForOutlook); document.getElementById("copy-html-source-btn")?.addEventListener("click", copyHtmlSource); });