// Site bewerken in beheer (pages/admin-site-edit.ejs) -- verplaatst uit inline script, shaer-bqr. // // Inline script in een pagina wordt door de CSP geweigerd zodra je die pagina via // een link BINNEN de site opent: de nonce rouleert per verzoek (shaer-0i6). Dit // bestand wordt door de bootstrap in shell.ejs geladen en heeft dat probleem niet. // // Alles hier hoort GEDELEGEERD te luisteren (op document, niet op een element dat // er nu staat) en tegen een tweede aanroep te kunnen. (function(){ if (window.__themePreviewWired) return; window.__themePreviewWired = true; var html = document.documentElement; function applyAccent(hex){ if(!/^#[0-9a-fA-F]{6}$/.test(hex)) return; var sa = document.getElementById('pcms-site-accent'); if(!sa){ sa = document.createElement('style'); sa.id = 'pcms-site-accent'; document.head.appendChild(sa); } sa.textContent = ':root,[data-palette]{--accent:'+hex+';--accent-soft:color-mix(in srgb,'+hex+' 80%,white);--accent-tint:color-mix(in srgb,'+hex+' 12%,transparent);}'; } document.addEventListener('change', function(e){ var t = e.target; if(!t || !t.name) return; if(t.name === 'palette'){ html.setAttribute('data-palette', t.value); } else if(t.name === 'accent'){ applyAccent(t.value); } else if(t.name === 'theme_override'){ if(t.value === 'light' || t.value === 'dark'){ html.setAttribute('data-theme', t.value); } else { var dk = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; html.setAttribute('data-theme', dk ? 'dark' : 'light'); } } }); })(); // ── volgend blok ── (function() { // Slug URL field: show the real host as a dimmed prefix (the slug itself is // coloured via CSS). Hub → host/user/, otherwise host/. var sh = document.getElementById('slug-host'); if (sh) sh.textContent = location.host + (sh.dataset.prefix || '/'); })(); (function() { // Profile-links repeater: add row from