critizise Quiz

This commit is contained in:
ben8
2026-01-17 11:11:34 +01:00
parent 1fb0958daf
commit fb225dc6f3
20 changed files with 402 additions and 1128 deletions

View File

@@ -272,7 +272,7 @@
{% if option.is_correct %}
<p class="text-sm">
<span class="text-gray-500 dark:text-white">Richtige Antwort:</span>
<span class="ml-1 font-medium {% if option.value == "Wahr" %} text-green-700 {% else %}text-red-700{% endif %}">{{ option.value }}</span>
<span class="ml-1 font-medium {% if option.value == 'Wahr' %} text-green-700 {% else %}text-red-700{% endif %}">{{ option.value }}</span>
</p>
{% endif %}
{% endfor %}
@@ -303,7 +303,7 @@
</div>
</div>
</div>
</a>
{% endfor %}
</div>
@@ -320,11 +320,78 @@
</div>
<!-- Kritik zum Quiz -->
<div class="max-w-full">
{% if quiz.criticism_quiz.all %}
<summary class="list-none">
<div class="flex items-center gap-3 mt-12">
<p class="text-lg font-bold text-red-800 dark:text-white"> Kritik zum Quiz</p>
<div class="h-0.5 flex-grow bg-gradient-to-r from-red-600 to-transparent rounded-full"></div>
</div>
</summary>
<details>
{% for critique in quiz.criticism_quiz.all %}
<div class="max-w-full p-4 mt-4 rounded-2xl bg-gray-100 dark:bg-[#2a2f3a] shadow-sm">
{% if critique.id_question != None %}
{% if quiz.user_id == request.user %}
<a href="{% url 'library:edit_question' critique.id_question %}" class="text-blue-600 font-bold hover:underline">{{critique.question_criticism}}</a>:
{% else %}
<span class="font-bold">{{critique.question_criticism}}</span>:
{% endif %}
{% endif %}
<span class="dark:text-white dark:bg-transparent">
{{ critique.criticism }}
</span>
<p class="text-sm italic dark:text-white dark:bg-transparent ">
Kritik von User {{ critique.user }}
</p>
<div class="max-w-full p-4 mt-8 rounded-2xl bg-gray-100 dark:bg-transparent shadow-sm">
<div class="flex justify-end">
<p class="text-xs italic dark:text-white dark:bg-transparent ">
{{ critique.creation_date }}
</p>
</div>
{% if quiz.user_id == request.user %}
<form method="POST" class="space-y-6" enctype="multipart/form-data" action="{% url 'library:delete_critique' critique.id quiz.id %}">
{% csrf_token %}
<div class="flex border-t-2 border-gray-200 mt-2">
<button type="submit" class=" mt-2
px-4 py-2 border border-transparent shadow-sm text-sm
font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700 cursor-pointer
focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
Fehler von mir behoben!
</button>
</div>
</form>
{% endif %}
</div>
{% endfor %}
</details>
{% endif %}
</div>
<summary class="list-none">
<div class="flex items-center gap-3 mt-12">
<p class="text-lg font-bold text-blue-600 dark:text-white">Informationen über das Quiz</p>
<div class="h-0.5 flex-grow bg-gradient-to-r from-blue-600 to-transparent rounded-full"></div>
</div>
</summary>
<details>
<div class="max-w-full p-4 mt-4 rounded-2xl bg-gray-100 dark:bg-transparent shadow-sm">
<p class="text-lg font-bold text-gray-800 dark:text-white dark:bg-transparent mb-3">
Quiz-Infos
</p>
@@ -348,16 +415,12 @@
</div>
<div class="flex">
<p class="text-gray-600 dark:text-white">Quiz ID:<span class="font-bold"> {{ quiz.pk }}</span></p>
</div>
{% if quiz.reference_quizzes.all %}
<div class="flex">
<p class="text-gray-600 dark:text-white">Verweis auf andere Quizze:
@@ -373,7 +436,7 @@
</div>
<div class="max-w-full p-4 mt-8 rounded-2xl bg-gray-100 dark:bg-transparent shadow-sm">
<div class="max-w-full p-4 mt-4 rounded-2xl bg-gray-100 dark:bg-transparent shadow-sm">
<div class="flex flex-col max-w-full">
<p class="text-lg font-bold text-gray-800 dark:text-white dark:bg-transparent mb-3">
Credits
@@ -411,7 +474,7 @@
</div>
<div class="max-w-full p-4 mt-8 rounded-2xl bg-gray-100 dark:bg-transparent shadow-sm">
<div class="max-w-full p-4 mt-4 rounded-2xl bg-gray-100 dark:bg-transparent shadow-sm">
<p class="text-lg font-bold text-gray-800 dark:text-white dark:bg-transparent mb-3">
Quiz-Statistik
</p>
@@ -435,23 +498,36 @@
</div>
</div>
</details>
{% if user.is_authenticated %}
{% if quiz.user_id != request.user %}
<summary class="list-none">
<div class="flex items-center gap-3 mt-12">
<p class="text-lg font-bold text-red-800 dark:text-white">Dieses Quiz kritisieren</p>
<div class="h-0.5 flex-grow bg-gradient-to-r from-red-600 to-transparent rounded-full"></div>
</div>
</summary>
<details>
<form method="post" class="space-y-6" enctype="multipart/form-data">
{% csrf_token %}
<div class="max-w-full p-4 mt-8 rounded-2xl bg-gray-100 dark:bg-transparent shadow-sm">
<div class="max-w-full p-4 mt-4 rounded-2xl bg-gray-100 dark:bg-transparent shadow-sm">
<p class="text-lg font-bold text-red-800 dark:text-white dark:bg-transparent ">
Quiz kritisieren
</p>
<p class="text-xs opacity-50 mb-3">
<p class="text-xs opacity-50 mb-3 dark:text-white dark:bg-transparent">
Sie haben einen Fehler in dem Quiz entdeckt oder halten eine Frage für nicht angemessen? <br>
Dann weisen Sie den Autor gern darauf hin.
</p>
<select name="question_id" required
class="w-full rounded-lg border-gray-300 p-2 dark:bg-gray-800 dark:text-white">
<option value="">Kritik an einer bestimmten Frage?</option>
<option value="">Kritik an einer bestimmten Frage oder am Quiz(formular)?</option>
<option value="whole_quiz">
Kritik am Quiz(formular) {{ quiz.name|truncatechars:60 }}
</option>
{% for question in questions %}
<option value="{{ question.id }}">
@@ -476,7 +552,13 @@
</option>
<option value="inappropriate_error">
Die Frage oder die Antworten sind unangemessen.
Die Frage, die Antworten oder Bilder sind unangemessen.
</option>
<option value="not_completed_error">
Die Antworten sind unvollständig oder es wurde keine richtige Antwort ausgewählt.
</option>
<option value="quiz_error">
Das Quiz(formular) selbst ist unangebracht, falsch oder nicht verständlich.
</option>
</select>
@@ -486,43 +568,29 @@
focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500">
Abschicken
</button>
{% endif %}
{% elif quiz.user_id != request.user %}
<div class="max-w-full p-4 mt-8 rounded-2xl bg-gray-100 dark:bg-transparent shadow-sm">
<p class="text-lg font-bold text-red-800 dark:text-white dark:bg-transparent ">
Quiz kritisieren
</p>
<p class="text-xs opacity-50 mb-3">
<div class="text-xs opacity-50 mb-3 dark:text-white dark:bg-transparent">
Sie haben einen Fehler in dem Quiz entdeckt oder halten eine Frage für nicht angemessen? <br>
Dann weisen Sie den Autor gern darauf hin.
</p>
Sie können nur Quizze anderer User kritisieren.
</div>
<a class="inline-flex items-center
px-4 py-2 border border-transparent shadow-sm text-sm
font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700
focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500" href="{% url 'accounts:login' %}">Anmelden</a>
</div>
{% endif %}
</div>
</form>
</details>
{% for critique in quiz.criticism_quiz.all %}
<div class="max-w-full p-4 mt-8 rounded-2xl bg-gray-100 dark:bg-transparent shadow-sm">
Frage {{critique.question.data.question}}: {{ critique.criticism }}
<p class="text-xs dark:text-white dark:bg-transparent ">
von User {{ critique.user }}
</p>
<p class="text-xs font-bold text-red-800 dark:text-white dark:bg-transparent ">
{{ critique.creation_date }}
</p>
{% endfor %}
</div>
</div>
{% endblock %}