Skip to content

Commit 53afc48

Browse files
committed
update the feedback summary tables for the new feedback settings
1 parent 118f441 commit 53afc48

5 files changed

Lines changed: 66 additions & 48 deletions

File tree

numbas_lti/models.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -306,12 +306,12 @@ def resolve_feedback_setting(setting):
306306
}[setting]
307307

308308
info = [
309-
(_('Maximum available score'), get(feedback,'showTotalMark', 'always')),
310-
(_('Whether answers are correct'), get(feedback,'showAnswerState', 'always')),
311-
(_('Awarded scores'), get(feedback,'showActualMark', 'always')),
312-
(_('Feedback messages for each question part'), get(feedback, 'showPartFeedbackMessages', 'always')),
313-
(_('Expected answers to each part'), get(feedback, 'revealExpectedAnswers', 'inreview')),
314-
(_('Advice for each question'), get(feedback, 'revealAdvice', 'inreview')),
309+
(_('Maximum available score'), get(feedback,'showTotalMarkWhen', 'always')),
310+
(_('Whether answers are correct'), get(feedback,'showAnswerStateWhen', 'always')),
311+
(_('Awarded scores'), get(feedback,'showActualMarkWhen', 'always')),
312+
(_('Feedback messages for each question part'), get(feedback, 'showPartFeedbackMessagesWhen', 'always')),
313+
(_('Expected answers to each part'), get(feedback, 'showExpectedAnswersWhen', 'inreview')),
314+
(_('Advice for each question'), get(feedback, 'showAdviceWhen', 'inreview')),
315315
]
316316

317317
return info

numbas_lti/static/numbas_lti.css

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,13 @@ input:not([type="hidden"]), select, textarea {
131131
width: 100%;
132132
}
133133

134+
input[type="number"] {
135+
width: 5em;
136+
text-align: center;
137+
}
138+
139+
140+
134141
textarea {
135142
resize: vertical;
136143
}
@@ -229,8 +236,18 @@ table.fixed {
229236
}
230237

231238
table.sticky-header thead th {
232-
position: sticky;
233-
top: 0;
239+
position: sticky;
240+
top: 0;
241+
}
242+
243+
th {
244+
max-width: var(--readable-label-width);
245+
}
246+
247+
caption {
248+
font-weight: bold;
249+
padding: var(--spacing);
250+
font-size: 1.2em;
234251
}
235252

236253

@@ -353,6 +370,7 @@ form.big .fieldsets {
353370

354371
form.big label {
355372
margin: 0;
373+
max-width: var(--readable-label-width);
356374
}
357375

358376
dl {

numbas_lti/static/variables.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
:root {
22
--readable-width: 80ch;
3+
--readable-label-width: 30ch;
34
--font-size: 18px;
45
--font-family: sans-serif;
56
--spacing: 0.5rem;

numbas_lti/templates/numbas_lti/management/dashboard.html

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -104,22 +104,25 @@ <h1>{% translate "Dashboard" %}
104104
{% if exam_info.navigateMode == 'menu' %}
105105
<p>{% blocktranslate %}This exam is in <strong>choose from a menu mode</strong>, best for formative material.{% endblocktranslate %}</p>
106106
{% endif %}
107+
{% if exam_info.navigateMode == 'diagnostic' %}
108+
<p>{% blocktranslate %}This exam is in <strong>diagnostic mode</strong>.{% endblocktranslate %}</p>
109+
{% endif %}
107110

108111
{% if resource.max_attempts == 0 %}
109112
<p>{% blocktranslate %}Students are allowed to start as many attempts as they like.{% endblocktranslate %}</p>
110113
{% else %}
111114
<p>{% blocktranslate count counter=resource.max_attempts with max_attempts=resource.max_attempts %}Students may make <strong>one</strong> attempt.{% plural %}Students may start <strong>{{max_attempts}}</strong> attempts.{% endblocktranslate %}</p>
112115
{% endif %}
113116

114-
<p>{% blocktranslate %}Students will be shown the following information:{% endblocktranslate %}</p>
115-
116117
<table class="settings-table">
118+
<caption>{% blocktranslate %}Feedback settings{% endblocktranslate %}</caption>
119+
117120
<thead>
118121
<tr>
119122
<td class="empty"></td>
120123
<th scope="col">{% translate "During an attempt" %}</th>
121124
<th scope="col">{% translate "Immediately after finishing an attempt" %}</th>
122-
<th scope="col">{% translate "When viewing an attempt in review mode" %}</th>
125+
<th scope="col">{% translate "When returning to an attempt in review mode" %}</th>
123126
</tr>
124127
</thead>
125128
<tbody>
@@ -129,36 +132,15 @@ <h1>{% translate "Dashboard" %}
129132
{% if resource.show_marks_when == 'always' or resource.show_marks_when == 'complete' %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
130133
{% if resource.show_marks_when != 'never' %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
131134
</tr>
135+
136+
{% for label, stages in exam_info.feedback_info %}
132137
<tr>
133-
<th scope="row">{% translate "Part and question maximum scores" %}</th>
134-
{% if exam_info.showTotalMark %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
135-
{% if exam_info.showTotalMark or exam_info.completionShowResultsPage %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
136-
{% if exam_info.showTotalMark or exam_info.reviewShowResultsPage %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
137-
</tr>
138-
<tr>
139-
<th scope="row">{% translate "Awarded scores" %}</th>
140-
{% if exam_info.showActualMark %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
141-
{% if exam_info.showActualMark or exam_info.completionShowResultsPage %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
142-
{% if exam_info.showActualMark or exam_info.reviewShowScore %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
143-
</tr>
144-
<tr>
145-
<th scope="row">{% translate "Expected answers" %}</th>
146-
{% if exam_info.allowRevealAnswer %}<td class="success">{% translate "Available" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
147-
{% if exam_info.completionShowResultsPage and exam_info.reviewShowExpectedAnswer %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
148-
{% if exam_info.reviewShowResultsPage and exam_info.reviewShowExpectedAnswer %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
149-
</tr>
150-
<tr>
151-
<th scope="row">{% translate "Question advice" %}</th>
152-
{% if exam_info.allowRevealAnswer %}<td class="success">{% translate "Available" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
153-
{% if exam_info.completionShowResultsPage and exam_info.reviewShowAdvice %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
154-
{% if exam_info.reviewShowResultsPage and exam_info.reviewShowAdvice %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
155-
</tr>
156-
<tr>
157-
<th scope="row">{% translate "Part feedback" %}</th>
158-
{% if exam_info.showAnswerState %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
159-
{% if exam_info.showAnswerState or exam_info.completionShowResultsPage and exam_info.reviewShowFeedback %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
160-
{% if exam_info.showAnswerState or exam_info.reviewShowResultsPage and exam_info.reviewShowFeedback %}<td class="success">{% translate "Shown" %}</td>{% else %}<td class="danger">{% translate "Not shown" %}</td>{% endif %}
138+
<th scope="row">{{label}}</th>
139+
{% for shown in stages %}
140+
<td class="{% if shown %}success{% else %}danger{% endif %}">{% if shown %}{% translate "Shown" %}{% else %}{% translate "Not shown" %}{% endif %}</td>
141+
{% endfor %}
161142
</tr>
143+
{% endfor %}
162144
<tr>
163145
<th scope="row">{% translate "Print a transcript" %}</th>
164146
{% if exam_info.allowPrinting %}<td class="success">{% translate "Allowed" %}</td>{% else %}<td class="danger">{% translate "Not allowed" %}</td>{% endif %}
@@ -168,10 +150,9 @@ <h1>{% translate "Dashboard" %}
168150
</tbody>
169151
</table>
170152

171-
<p>{% blocktranslate %}During an attempt, students:{% endblocktranslate %}</p>
172-
173153
<div class="flex-row">
174154
<table class="settings-table">
155+
<caption>{% translate "During an exam" %}</caption>
175156
<thead>
176157
<tr>
177158
<th scope="col">{% translate "Action" %}</th>
@@ -216,6 +197,7 @@ <h1>{% translate "Dashboard" %}
216197
</table>
217198

218199
<table class="settings-table">
200+
<caption>{% translate "Important times" %}</caption>
219201
<thead>
220202
<tr>
221203
<th scope="col">{% translate "This will happen" %}</th>

numbas_lti/views/resource.py

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ def get(node, attr, default=None):
150150
showResultsPage = get(nav,'showResultsPage', 'oncompletion')
151151
duration = get(content,'duration', 0)
152152
percentPass = get(content,'percentPass', 0)
153+
153154
info = {
154155
'hasPercentPass': percentPass and percentPass != '0',
155156
'percentPass': percentPass,
@@ -172,15 +173,31 @@ def get(node, attr, default=None):
172173

173174
'allowPause': get(timing,'allowPause', False),
174175

175-
'showActualMark': get(feedback,'showActualMark', False),
176-
'showTotalMark': get(feedback,'showTotalMark', False),
177-
'showAnswerState': get(feedback,'showAnswerState', False),
176+
'showActualMarkWhen': get(feedback,'showActualMarkWhen', 'always'),
177+
'showTotalMarkWhen': get(feedback,'showTotalMarkWhen', 'always'),
178+
'showAnswerStateWhen': get(feedback,'showAnswerStateWhen', 'always'),
179+
'showPartFeedbackMessagesWhen': get(feedback, 'showPartFeedbackMessagesWhen', 'always'),
178180
'allowRevealAnswer': get(feedback,'allowRevealAnswer', False),
179-
'reviewShowScore': get(feedback,'reviewShowScore', True),
180-
'reviewShowFeedback': get(feedback,'reviewShowFeedback', True),
181-
'reviewShowAdvice': get(feedback,'reviewShowAdvice', True),
182-
'reviewShowExpectedAnswer': get(feedback,'reviewShowExpectedAnswer', True),
181+
'enterReviewModeImmediately': get(feedback, 'enterReviewModeImmediately', True),
182+
'showExpectedAnswersWhen': get(feedback, 'showExpectedAnswersWhen', 'inreview'),
183+
'showAdviceWhen': get(feedback, 'showAdviceWhen', 'inreview'),
184+
}
185+
enterReviewModeImmediately = info['enterReviewModeImmediately']
186+
feedback_stages = {
187+
'always': (True, True, True),
188+
'oncompletion': (False, True, True),
189+
'inreview': (False, enterReviewModeImmediately, True),
190+
'never': (False, False, False),
183191
}
192+
info['feedback_info'] = [
193+
(_('Answer correctness'), feedback_stages[info['showAnswerStateWhen']]),
194+
(_('Awarded scores'), feedback_stages[info['showActualMarkWhen']]),
195+
(_('Maximum scores'), feedback_stages[info['showTotalMarkWhen']]),
196+
(_('Part feedback messages'), feedback_stages[info['showPartFeedbackMessagesWhen']]),
197+
(_('Expected answers'), feedback_stages[info['showExpectedAnswersWhen']]),
198+
(_('Question advice'), feedback_stages[info['showAdviceWhen']]),
199+
]
200+
184201
return info
185202

186203
def get_context_data(self,*args,**kwargs):

0 commit comments

Comments
 (0)