document.addEventListener("DOMContentLoaded", () => { const cards = Array.from(document.querySelectorAll(".download-card")); function toast(message) { const t = document.createElement("div"); t.className = "dl-toast"; t.textContent = message; Object.assign(t.style, { position: "fixed", right: "1rem", bottom: "1rem", background: "rgba(2,6,23,0.9)", color: "#fff", padding: "0.6rem 0.9rem", borderRadius: "6px", boxShadow: "0 6px 20px rgba(2,6,23,0.5)", zIndex: 9999, }); document.body.appendChild(t); setTimeout(() => t.remove(), 2200); } cards.forEach((card) => { const key = `fws:download:${card.dataset.key}`; const btn = card.querySelector(".download-btn"); const copyBtn = card.querySelector(".copy-btn"); const editBtn = card.querySelector(".edit-btn"); function setLink(url) { if (!url) url = "#"; btn.href = url; btn.dataset.link = url; copyBtn.dataset.link = url; localStorage.setItem(key, url); } const stored = localStorage.getItem(key); if (stored) { setLink(stored); } editBtn.addEventListener("click", () => { const current = localStorage.getItem(key) || ""; const value = window.prompt("Collez l'URL de téléchargement pour ce fichier:", current); if (value === null) return; const trimmed = value.trim(); setLink(trimmed); toast("Lien enregistré"); }); copyBtn.addEventListener("click", async () => { const link = copyBtn.dataset.link || btn.href || ""; if (!link || link === "#") { toast("Aucun lien défini — utilisez 'Modifier le lien'"); return; } try { await navigator.clipboard.writeText(link); toast("Lien copié dans le presse-papiers"); } catch (e) { window.prompt("Copiez manuellement ce lien:", link); } }); btn.addEventListener("click", (ev) => { const href = btn.getAttribute("href") || ""; if (!href || href === "#") { ev.preventDefault(); toast("Aucun lien configuré — cliquez sur 'Modifier le lien' pour en ajouter un"); } }); }); });