| 1 | // Video's in beheer -- verplaatst uit inline script, shaer-bqr.
|
|---|
| 2 | //
|
|---|
| 3 | // Inline script wordt door de CSP geweigerd zodra deze pagina via een link
|
|---|
| 4 | // BINNEN de site binnenkomt (shaer-0i6). Servergegevens komen uit pageData();
|
|---|
| 5 | // interpolatie kan niet in een statisch bestand.
|
|---|
| 6 |
|
|---|
| 7 | import { pageData } from './lib.js';
|
|---|
| 8 |
|
|---|
| 9 | (function () {
|
|---|
| 10 | if (window.__videosWired) return; window.__videosWired = true;
|
|---|
| 11 | // Gedelegeerd op document, dus dit overleeft elke paginawissel -- ook op
|
|---|
| 12 | // pagina's waar [data-copy] iets ANDERS betekent (audio en playlists: een
|
|---|
| 13 | // shortcode, geen pad). Zonder deze wacht kaapt dit daar de kopieerklik en
|
|---|
| 14 | // plakt er een origin voor (shaer-5s1). T per klik gelezen, want pageData
|
|---|
| 15 | // wisselt mee met de pagina.
|
|---|
| 16 | function active() { return (document.body.getAttribute('data-js') || '').split(/\s+/).indexOf('admin-videos') !== -1; }
|
|---|
| 17 | document.addEventListener('click', function (e) {
|
|---|
| 18 | if (!active()) return;
|
|---|
| 19 | var T = pageData();
|
|---|
| 20 | var c = e.target.closest('[data-copy]');
|
|---|
| 21 | if (c) {
|
|---|
| 22 | var u = location.origin + c.getAttribute('data-copy');
|
|---|
| 23 | var done = function () { var o = c.textContent; c.textContent = '✓'; setTimeout(function () { c.textContent = o === '✓' ? T.copy : o; }, 1200); };
|
|---|
| 24 | if (navigator.clipboard) navigator.clipboard.writeText(u).then(done).catch(function () { window.prompt('URL', u); });
|
|---|
| 25 | else window.prompt('URL', u);
|
|---|
| 26 | return;
|
|---|
| 27 | }
|
|---|
| 28 | var d = e.target.closest('[data-del]');
|
|---|
| 29 | if (d) {
|
|---|
| 30 | if (!window.confirm(T.delC)) return;
|
|---|
| 31 | fetch('/admin/media/videos/delete', { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ file: d.getAttribute('data-del') }) })
|
|---|
| 32 | .then(function (r) { return r.json(); })
|
|---|
| 33 | .then(function (j) { if (j && j.ok) { var card = d.closest('.media-card'); if (card) card.remove(); } })
|
|---|
| 34 | .catch(function () {});
|
|---|
| 35 | }
|
|---|
| 36 | });
|
|---|
| 37 | })();
|
|---|