97 lines
3.6 KiB
JavaScript
Executable File
97 lines
3.6 KiB
JavaScript
Executable File
function toggleVorschlagType(type) {
|
|
const mcGroup = document.getElementById("mcOptionsGroup");
|
|
const antwortLabel = document.getElementById("antwortLabel");
|
|
const antwortHelp = document.getElementById("antwortHelp");
|
|
|
|
if (type === "multiple_choice") {
|
|
mcGroup.classList.remove("hidden");
|
|
antwortLabel.innerText = "Richtige Antwort (die korrekte Option):";
|
|
antwortHelp.innerText = "Diese Antwort wird zusammen mit den falschen Optionen zufällig für den Spieler angeordnet.";
|
|
} else {
|
|
mcGroup.classList.add("hidden");
|
|
antwortLabel.innerText = "Richtige Antwort:";
|
|
antwortHelp.innerText = "Unser System gleicht Tippfehler und Groß-/Kleinschreibung automatisch ab.";
|
|
}
|
|
}
|
|
|
|
async function submitSuggestion(event) {
|
|
event.preventDefault();
|
|
|
|
const name = document.getElementById("name").value.trim();
|
|
const frage = document.getElementById("frage").value.trim();
|
|
const antwort = document.getElementById("antwort").value.trim();
|
|
const tipp = document.getElementById("tipp").value.trim();
|
|
const qType = document.getElementById("q_type").value;
|
|
const submitBtn = document.getElementById("submitBtn");
|
|
const resultBox = document.getElementById("resultMessage");
|
|
|
|
if (!frage || !antwort) {
|
|
alert("Bitte gib mindestens die Frage und die richtige Antwort ein.");
|
|
return;
|
|
}
|
|
|
|
let falscheAntworten = [];
|
|
if (qType === "multiple_choice") {
|
|
const w1 = document.getElementById("wrong1").value.trim();
|
|
const w2 = document.getElementById("wrong2").value.trim();
|
|
const w3 = document.getElementById("wrong3").value.trim();
|
|
falscheAntworten = [w1, w2, w3].filter(x => x.length > 0);
|
|
|
|
if (falscheAntworten.length === 0) {
|
|
alert("Bitte gib bei Multiple-Choice mindestens eine falsche Antwortmöglichkeit an.");
|
|
return;
|
|
}
|
|
}
|
|
|
|
submitBtn.disabled = true;
|
|
submitBtn.innerText = "✨ Vorschlag wird übertragen...";
|
|
|
|
try {
|
|
const payload = {
|
|
name: name || "Gast",
|
|
frage: frage,
|
|
antwort: antwort,
|
|
tipp: tipp || null,
|
|
question_type: qType,
|
|
falsche_antworten: falscheAntworten
|
|
};
|
|
|
|
const res = await fetch("/api/suggestions", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify(payload)
|
|
});
|
|
|
|
const data = await res.json();
|
|
|
|
if (res.ok && data.success) {
|
|
resultBox.innerHTML = `
|
|
<div style="background: rgba(46, 204, 113, 0.2); border: 1px solid #2ecc71; color: #55efc4; padding: 15px; border-radius: 8px;">
|
|
<h3>✨ Vorschlag erfolgreich übermittelt! ✨</h3>
|
|
<p>${data.message}</p>
|
|
</div>
|
|
`;
|
|
resultBox.classList.remove("hidden");
|
|
document.getElementById("suggestionForm").reset();
|
|
toggleVorschlagType("text");
|
|
} else {
|
|
resultBox.innerHTML = `
|
|
<div class="alert alert-danger">
|
|
${data.detail || "Fehler beim Einreichen deines Vorschlags."}
|
|
</div>
|
|
`;
|
|
resultBox.classList.remove("hidden");
|
|
}
|
|
} catch (err) {
|
|
resultBox.innerHTML = `
|
|
<div class="alert alert-danger">
|
|
Netzwerkfehler: ${err.message}
|
|
</div>
|
|
`;
|
|
resultBox.classList.remove("hidden");
|
|
} finally {
|
|
submitBtn.disabled = false;
|
|
submitBtn.innerText = "📜 Vorschlag an das Ministerium senden";
|
|
}
|
|
}
|