Refactor exam overview: enhance question display with improved layout and feedback visibility

This commit is contained in:
Ross
2025-11-17 22:09:49 +00:00
parent feb5a85af2
commit 2dd9f4af32
+83 -52
View File
@@ -7,70 +7,101 @@
{% block content %}
{% load thumbnail %}
<div class="physics">
<div class="container physics my-3">
This exam will be available to take <a href="{% url 'physics:exam_start' pk=exam.pk %}">here</a> (when active).
<p class="mb-3">This exam will be available to take <a href="{% url 'physics:exam_start' pk=exam.pk %}">here</a> (when active).</p>
{% autoescape off %}
<ol id="full-question-list-physics">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="mb-0">Questions <small class="text-muted">({{ questions.count }})</small></h5>
<div class="text-muted small">Exam: {{ exam.title }}</div>
</div>
<ul class="list-group list-group-flush" id="full-question-list-physics">
{% for question in questions.all %}
<li class="list-group-item">
<div class="d-flex align-items-start">
<div class="me-3">
<span class="badge bg-secondary">{{ forloop.counter }}</span>
</div>
<div class="flex-grow-1">
<div class="fw-bold mb-2">{{ question.stem|safe }}</div>
<li>
{{ question.stem }}
<ol type="a" class="abcde">
<li class="question-a">
<span class="question-text">{{ question.a }}</span>: <span class="question-answer">{{ question.a_answer }}</span>
{% if question.a_feedback %}
<span class="question-feedback">{{question.a_feedback}}</span>
{% endif %}
</li>
<li class="question-b">
<span class="question-text">{{ question.b }}</span>: <span class="question-answer">{{ question.b_answer }}</span>
{% if question.b_feedback %}
<span class="question-feedback">{{question.b_feedback}}</span>
{% endif %}
</li>
<li class="question-c">
<span class="question-text">{{ question.c }}</span>: <span class="question-answer">{{ question.c_answer }}</span>
{% if question.c_feedback %}
<span class="question-feedback">{{question.c_feedback}}</span>
{% endif %}
</li>
<li class="question-d">
<span class="question-text">{{ question.d }}</span>: <span class="question-answer">{{ question.d_answer }}</span>
{% if question.d_feedback %}
<span class="question-feedback">{{question.d_feedback}}</span>
{% endif %}
</li>
<li class="question-e">
<span class="question-text">{{ question.e }}</span>: <span class="question-answer">{{ question.e_answer }}</span>
{% if question.e_feedback %}
<span class="question-feedback">{{question.e_feedback}}</span>
{% endif %}
</li>
</ol>
Category: {{ question.category }}, <a href="{% url 'physics:question_detail' pk=question.pk %}">View [id: {{question.pk}}]</a> <a
href="{% url 'admin:physics_question_change' question.id %}">Edit</a>
<div class="mb-2">
<ol type="a" class="mb-0">
<li class="d-flex justify-content-between align-items-start py-1">
<div><span class="me-2">a)</span><span>{{ question.a }}</span></div>
<div class="text-end">
<div class="text-primary fw-semibold">{{ question.a_answer }}</div>
{% if question.a_feedback %}
<div class="text-muted small">Feedback: {{ question.a_feedback }}</div>
{% endif %}
</div>
</li>
<li class="d-flex justify-content-between align-items-start py-1">
<div><span class="me-2">b)</span><span>{{ question.b }}</span></div>
<div class="text-end">
<div class="text-primary fw-semibold">{{ question.b_answer }}</div>
{% if question.b_feedback %}
<div class="text-muted small">Feedback: {{ question.b_feedback }}</div>
{% endif %}
</div>
</li>
<li class="d-flex justify-content-between align-items-start py-1">
<div><span class="me-2">c)</span><span>{{ question.c }}</span></div>
<div class="text-end">
<div class="text-primary fw-semibold">{{ question.c_answer }}</div>
{% if question.c_feedback %}
<div class="text-muted small">Feedback: {{ question.c_feedback }}</div>
{% endif %}
</div>
</li>
<li class="d-flex justify-content-between align-items-start py-1">
<div><span class="me-2">d)</span><span>{{ question.d }}</span></div>
<div class="text-end">
<div class="text-primary fw-semibold">{{ question.d_answer }}</div>
{% if question.d_feedback %}
<div class="text-muted small">Feedback: {{ question.d_feedback }}</div>
{% endif %}
</div>
</li>
<li class="d-flex justify-content-between align-items-start py-1">
<div><span class="me-2">e)</span><span>{{ question.e }}</span></div>
<div class="text-end">
<div class="text-primary fw-semibold">{{ question.e_answer }}</div>
{% if question.e_feedback %}
<div class="text-muted small">Feedback: {{ question.e_feedback }}</div>
{% endif %}
</div>
</li>
</ol>
</div>
<div class="small text-muted">
Category: {{ question.category }}
<a href="{% url 'physics:question_detail' pk=question.pk %}">View</a>
<a href="{% url 'admin:physics_question_change' question.id %}" class="ms-2">Edit</a>
</div>
</div>
</div>
</li>
{% empty %}
<li class="list-group-item text-muted">No questions available.</li>
{% endfor %}
</ol>
{% endautoescape %}
</ul>
</div>
</div>
{% include 'exam_overview_js.html' %}
{% endblock %}
{% block css %}
<style>
.question-answer {
font-weight: bolder;
}
.question-feedback {
opacity: 50%;
float: right
}
.question-feedback::before {
content: "Feedback: ";
}
/* Small visual tweaks on top of Bootstrap */
.question-feedback { opacity: 0.7; }
.list-group-item ol { margin: 0; padding-left: 1.4rem; }
.list-group-item li { list-style-position: inside; }
</style>
{% endblock %}