diff --git a/app/templates/stiftung/vorlage_editor.html b/app/templates/stiftung/vorlage_editor.html
index 427df9d..4fb858d 100644
--- a/app/templates/stiftung/vorlage_editor.html
+++ b/app/templates/stiftung/vorlage_editor.html
@@ -295,13 +295,17 @@
// ---- Preview (always set up, independent of editor mode) ----
var previewFrame = document.getElementById('preview-frame');
var previewLoading = document.getElementById('preview-loading');
- var previewLoaded = false;
function loadPreview() {
var content = getEditorContent();
+ var csrfEl = document.querySelector('[name=csrfmiddlewaretoken]');
+ if (!csrfEl) {
+ previewLoading.innerHTML = 'CSRF-Token nicht gefunden.';
+ return;
+ }
var formData = new FormData();
formData.append('html_inhalt', content);
- formData.append('csrfmiddlewaretoken', document.querySelector('[name=csrfmiddlewaretoken]').value);
+ formData.append('csrfmiddlewaretoken', csrfEl.value);
previewLoading.style.display = 'block';
previewFrame.style.display = 'none';
@@ -309,22 +313,26 @@
fetch('{% url "stiftung:vorlage_vorschau" pk=vorlage.pk %}', {
method: 'POST',
body: formData,
+ credentials: 'same-origin',
+ })
+ .then(function(r) {
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ return r.text();
})
- .then(function(r) { return r.text(); })
.then(function(html) {
previewFrame.srcdoc = html;
previewFrame.style.display = 'block';
previewLoading.style.display = 'none';
- previewLoaded = true;
})
.catch(function(err) {
previewLoading.innerHTML = 'Vorschau fehlgeschlagen: ' + err;
});
}
- // Load preview when switching to the Vorschau tab
- document.getElementById('btn-tab-vorschau').addEventListener('shown.bs.tab', function() {
- loadPreview();
+ // Load preview when clicking the Vorschau tab (direct click — more reliable than Bootstrap tab events)
+ document.getElementById('btn-tab-vorschau').addEventListener('click', function() {
+ // Small delay so the tab pane is visible before we load
+ setTimeout(loadPreview, 100);
});
})();