Refactor question detail view for improved layout and styling
This commit is contained in:
@@ -1,132 +1,157 @@
|
||||
{% extends 'sbas/base.html' %}
|
||||
|
||||
{% block content %}
|
||||
<div class="question">
|
||||
<a href="{% url 'sbas:question_update' question.id %}" title="Edit the Question">Edit</a>
|
||||
<a href="{% url 'sbas:question_clone' question.id %}" title="Clone the Question">Clone</a>
|
||||
<a href="{% url 'sbas:question_delete' pk=question.pk %}" title="Delete the Question">Delete</a>
|
||||
<a href="{% url 'admin:sbas_question_change' question.id %}"
|
||||
title="Edit the Question using the admin interface">Admin Edit</a>
|
||||
<a href="#" onclick="return window.create_popup_window('{% url 'feedback_create' question_type='sbas' pk=question.pk %}')"> Add Note</a>
|
||||
<div class="date">
|
||||
Created: {{ question.created_date|date:"d/m/Y"}}
|
||||
</div>
|
||||
<div>
|
||||
<h2>Title: {{ question.title|default:"(No title set)" }}</h2>
|
||||
</div>
|
||||
{% autoescape off %}
|
||||
<span>{{question.stem}}</span>
|
||||
<div>
|
||||
<ol class="abcde">
|
||||
<li><strong>{{ question.a_answer }}</strong>
|
||||
{% if question.a_feedback %}<p>Feedback:<i>{{ question.a_feedback|default:''|safe }}</i> </p>{% endif %}
|
||||
</li>
|
||||
<li><strong>{{ question.b_answer }}</strong>
|
||||
{% if question.b_feedback %}<p>Feedback:<i>{{ question.b_feedback|default:''|safe }}</i> </p>{% endif %}
|
||||
</li>
|
||||
<li><strong>{{ question.c_answer }}</strong>
|
||||
{% if question.c_feedback %}<p>Feedback:<i>{{ question.c_feedback|default:''|safe }}</i> </p>{% endif %}
|
||||
</li>
|
||||
<li><strong>{{ question.d_answer }}</strong>
|
||||
{% if question.d_feedback %}<p>Feedback:<i>{{ question.d_feedback|default:''|safe }}</i> </p>{% endif %}
|
||||
</li>
|
||||
<li><strong>{{ question.e_answer }}</strong>
|
||||
{% if question.e_feedback %}<p>Feedback:<i>{{ question.e_feedback|default:''|safe }}</i> </p>{% endif %}
|
||||
</li>
|
||||
</ol>
|
||||
Best answer: {{ question.best_answer }} ({{question.get_correct_answer_stripped}})
|
||||
<div class="card mb-4">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-start mb-3 flex-column flex-md-row">
|
||||
<div>
|
||||
<h2 class="h4 mb-1">{{ question.title|default:"(No title set)" }}</h2>
|
||||
<div class="text-muted small">Created: {{ question.created_date|date:"d/m/Y" }}</div>
|
||||
</div>
|
||||
<div class="btn-group mt-3 mt-md-0" role="group" aria-label="Actions">
|
||||
<a class="btn btn-sm btn-outline-primary" href="{% url 'sbas:question_update' question.id %}">Edit</a>
|
||||
<a class="btn btn-sm btn-outline-secondary" href="{% url 'sbas:question_clone' question.id %}">Clone</a>
|
||||
<a class="btn btn-sm btn-outline-danger" href="{% url 'sbas:question_delete' pk=question.pk %}">Delete</a>
|
||||
<a class="btn btn-sm btn-outline-light" href="{% url 'admin:sbas_question_change' question.id %}">Admin</a>
|
||||
<button class="btn btn-sm btn-outline-info" onclick="return window.create_popup_window('{% url 'feedback_create' question_type='sbas' pk=question.pk %}')">Add Note</button>
|
||||
</div>
|
||||
</div>
|
||||
{% endautoescape %}
|
||||
<div>
|
||||
Feedback: {{ question.feedback|linebreaks }}
|
||||
</div>
|
||||
<div>
|
||||
Sources:
|
||||
{% if question.sources %}
|
||||
<ul>
|
||||
{% for source in question.sources %}
|
||||
<li>{{ source }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
None
|
||||
{% endif %}
|
||||
<div>
|
||||
Examinations: {% for exam in question.exams.all %}
|
||||
<a href="{% url 'sbas:exam_overview' pk=exam.pk %}">{{ exam }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div>
|
||||
Findings: {% if question.finding.exists %}
|
||||
<ul>
|
||||
{% for f in question.finding.all %}
|
||||
<li>{{ f.get_link|safe }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
None
|
||||
{% endif %}
|
||||
</div>
|
||||
<div>
|
||||
Structures: {% if question.structure.exists %}
|
||||
<ul>
|
||||
{% for s in question.structure.all %}
|
||||
<li>{{ s.get_link|safe }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
None
|
||||
{% endif %}
|
||||
</div>
|
||||
<div>
|
||||
Conditions: {% if question.condition.exists %}
|
||||
<ul>
|
||||
{% for c in question.condition.all %}
|
||||
<li>{{ c.get_link|safe }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
None
|
||||
{% endif %}
|
||||
</div>
|
||||
<div>
|
||||
Presentations: {% if question.presentation.exists %}
|
||||
<ul>
|
||||
{% for p in question.presentation.all %}
|
||||
<li>{{ p.get_link|safe }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
None
|
||||
{% endif %}
|
||||
</div>
|
||||
<div>
|
||||
Subspecialties: {% if question.subspecialty.exists %}
|
||||
<ul>
|
||||
{% for ss in question.subspecialty.all %}
|
||||
<li>{{ ss.get_link|safe }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
None
|
||||
{% endif %}
|
||||
</div>
|
||||
<div>
|
||||
Category: {{ question.category }}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Author(s):
|
||||
{% if question.author.exists %}
|
||||
{% for u in question.author.all %}
|
||||
{{ u.get_full_name|default:u.username }}{% if not forloop.last %}, {% endif %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
Unknown
|
||||
{% endif %}
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-8">
|
||||
<div class="mb-3">
|
||||
{% autoescape off %}
|
||||
<div class="card p-3 bg-body-secondary">{{ question.stem }}</div>
|
||||
<ol class="abcde list-group list-group-numbered mt-3">
|
||||
<li class="list-group-item"><strong>{{ question.a_answer }}</strong>
|
||||
{% if question.a_feedback %}<div class="small text-muted mt-1">Feedback: <em>{{ question.a_feedback|safe }}</em></div>{% endif %}
|
||||
</li>
|
||||
<li class="list-group-item"><strong>{{ question.b_answer }}</strong>
|
||||
{% if question.b_feedback %}<div class="small text-muted mt-1">Feedback: <em>{{ question.b_feedback|safe }}</em></div>{% endif %}
|
||||
</li>
|
||||
<li class="list-group-item"><strong>{{ question.c_answer }}</strong>
|
||||
{% if question.c_feedback %}<div class="small text-muted mt-1">Feedback: <em>{{ question.c_feedback|safe }}</em></div>{% endif %}
|
||||
</li>
|
||||
<li class="list-group-item"><strong>{{ question.d_answer }}</strong>
|
||||
{% if question.d_feedback %}<div class="small text-muted mt-1">Feedback: <em>{{ question.d_feedback|safe }}</em></div>{% endif %}
|
||||
</li>
|
||||
<li class="list-group-item"><strong>{{ question.e_answer }}</strong>
|
||||
{% if question.e_feedback %}<div class="small text-muted mt-1">Feedback: <em>{{ question.e_feedback|safe }}</em></div>{% endif %}
|
||||
</li>
|
||||
</ol>
|
||||
<div class="mt-2">Correct: <span class="badge bg-success">{{ question.get_correct_answer_stripped }}</span></div>
|
||||
{% endautoescape %}
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<h5 class="h6">Feedback</h5>
|
||||
<div>{{ question.feedback|linebreaks }}</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<h5 class="h6">Sources</h5>
|
||||
{% if question.sources %}
|
||||
<ul class="list-unstyled">
|
||||
{% for source in question.sources %}
|
||||
<li class="small">{{ source }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<div class="small text-muted">None</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% include 'question_notes.html' %}
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-lg-4">
|
||||
<div class="mb-3">
|
||||
<h5 class="h6">Metadata</h5>
|
||||
<div class="mb-2"><strong>Category:</strong> {{ question.category }}</div>
|
||||
<div class="mb-2"><strong>Examinations:</strong>
|
||||
<div>
|
||||
{% for exam in question.exams.all %}
|
||||
<a class="d-inline-block badge bg-secondary text-decoration-none mb-1 me-1" href="{% url 'sbas:exam_overview' pk=exam.pk %}">{{ exam }}</a>
|
||||
{% empty %}
|
||||
<span class="small text-muted">None</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-2"><strong>Authors:</strong>
|
||||
<div>
|
||||
{% if question.author.all %}
|
||||
{% for u in question.author.all %}
|
||||
<span class="d-inline-block small">{{ u.get_full_name|default:u.username }}</span>{% if not forloop.last %}, {% endif %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<span class="small text-muted">Unknown</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-2"><strong>Findings</strong>
|
||||
<div>
|
||||
{% if question.finding.exists %}
|
||||
{% for f in question.finding.all %}
|
||||
<a class="badge bg-info text-dark text-decoration-none mb-1 me-1" href="{{ f.get_absolute_url }}">{{ f.name }}</a>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<div class="small text-muted">None</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-2"><strong>Structures</strong>
|
||||
<div>
|
||||
{% if question.structure.exists %}
|
||||
{% for s in question.structure.all %}
|
||||
<a class="badge bg-warning text-dark text-decoration-none mb-1 me-1" href="{{ s.get_absolute_url }}">{{ s.name }}</a>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<div class="small text-muted">None</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-2"><strong>Conditions</strong>
|
||||
<div>
|
||||
{% if question.condition.exists %}
|
||||
{% for c in question.condition.all %}
|
||||
<a class="badge bg-primary text-decoration-none mb-1 me-1" href="{{ c.get_absolute_url }}">{{ c.name }}</a>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<div class="small text-muted">None</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-2"><strong>Presentations</strong>
|
||||
<div>
|
||||
{% if question.presentation.exists %}
|
||||
{% for p in question.presentation.all %}
|
||||
<a class="badge bg-secondary text-decoration-none mb-1 me-1" href="{{ p.get_absolute_url }}">{{ p.name }}</a>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<div class="small text-muted">None</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-2"><strong>Subspecialties</strong>
|
||||
<div>
|
||||
{% if question.subspecialty.exists %}
|
||||
{% for ss in question.subspecialty.all %}
|
||||
<a class="badge bg-dark text-decoration-none mb-1 me-1" href="{{ ss.get_absolute_url }}">{{ ss.name }}</a>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<div class="small text-muted">None</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% include 'question_notes.html' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user