Commit 93a7b061 by Xavier Antoviaque

Implements quizz submit() workflow, Adds per-sublock completion criteria

parent 00fb2cc2
......@@ -66,7 +66,10 @@ class AnswerBlock(XBlock):
if not self.read_only:
self.student_input = submission[0]['value']
log.info(u'Answer submitted for`{}`: "{}"'.format(self.name, self.student_input))
return self.student_input
return {
'student_input': self.student_input,
'completed': bool(self.student_input),
}
def save(self):
"""
......
......@@ -88,7 +88,7 @@ class MentoringBlock(XBlock):
child = child_map[input_name]
submit_results[input_name] = child.submit(submission)
child.save()
completed = completed and submit_results[input_name]
completed = completed and submit_results[input_name]['completed']
self.completed = bool(completed)
......
......@@ -87,7 +87,16 @@ class QuizzBlock(XBlock):
def submit(self, submission):
# TODO
log.info(u'submission: %s', submission)
completed = bool(submission)
return {
'submission': submission,
'completed': completed,
'tip': 'submission: {}, completed: {}'.format(submission, completed)
}
#self.student_input = submission[0]['value']
#log.info(u'Answer submitted for`{}`: "{}"'.format(self.name, self.student_input))
return self.student_input
#return self.student_choice
......@@ -6,4 +6,5 @@
<span class="progress" data-completed="{{ self.completed }}">
<span class='indicator'></span>
</span>
<div class="quizz-tips"></div>
</div>
......@@ -15,6 +15,8 @@ function MentoringBlock(runtime, element) {
}
function handleSubmitResults(results) {
$('.quizz-tips', element).empty();
$.each(results.submitResults || {}, function(input, result) {
callIfExists(runtime.childMap(element, input), 'handleSubmit', result);
});
......
function QuizzBlock(runtime, element) {
return {
submit: function() {
return $(element).find(':input').serializeArray();
var checked_radio = $('input[type=radio]:checked', element);
if(checked_radio.length) {
return checked_radio.val();
} else {
return null;
}
},
handleSubmit: function(result) {
$(element).find('.message').text((result || {}).error || '');
var tips_dom = $(element).parent().find('.quizz-tips'),
tip_text = (result || {}).tip || '';
if(tip_text) {
tips_dom.append('<div class="quizz_tip">' + tip_text + '</div>');
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment