/* Références croisées des pages — Fusion ACC-1.3 (Flowdeck). * Câble la section « Liens » rendue côté serveur dans l'éditeur de page : * ajout par collage d'URL profonde (POST /api/pages//refs) et retrait * (DELETE /api/refs/), jeton CSRF lu dans le cookie comme le reste de * l'app. Après chaque mutation, la page est rechargée — l'état affiché * reste celui du serveur, seule source de vérité. */ (function () { "use strict"; function csrf() { var m = document.cookie.match(/(?:^|;\s*)csrf_token=([^;]+)/); return m ? decodeURIComponent(m[1]) : ""; } function wire(section) { var ownerType = section.getAttribute("data-owner-type"); var ownerId = section.getAttribute("data-owner-id"); var base = ownerType === "flowdeck.project" ? "/api/collections/" + ownerId + "/refs" : "/api/pages/" + ownerId + "/refs"; var erreur = section.querySelector("[data-refs-erreur]"); function showError(msg) { if (erreur) { erreur.textContent = msg; erreur.hidden = false; } } section.querySelectorAll("[data-ref-del]").forEach(function (btn) { btn.addEventListener("click", function () { fetch("/api/refs/" + btn.getAttribute("data-ref-del"), { method: "DELETE", credentials: "same-origin", headers: { "X-CSRF-Token": csrf() } }).then(function (r) { if (r.ok) { window.location.reload(); } else { r.json().then(function (d) { showError(d.detail || "HTTP " + r.status); }); } }).catch(function () { showError("Réseau indisponible"); }); }); }); var form = section.querySelector("[data-refs-form]"); if (form) { form.addEventListener("submit", function (ev) { ev.preventDefault(); var inputs = form.querySelectorAll("input"); fetch(base, { method: "POST", credentials: "same-origin", headers: { "Content-Type": "application/json", "X-CSRF-Token": csrf() }, body: JSON.stringify({ url: inputs[0].value.trim(), label: inputs[1].value.trim() || null }) }).then(function (r) { if (r.ok) { window.location.reload(); } else { r.json().then(function (d) { showError(d.detail || "HTTP " + r.status); }); } }).catch(function () { showError("Réseau indisponible"); }); }); } } document.addEventListener("DOMContentLoaded", function () { document.querySelectorAll("[data-refs]").forEach(wire); }); })();