Commit 93a7b061 by Xavier Antoviaque

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

parent 00fb2cc2
...@@ -66,7 +66,10 @@ class AnswerBlock(XBlock): ...@@ -66,7 +66,10 @@ class AnswerBlock(XBlock):
if not self.read_only: if not self.read_only:
self.student_input = submission[0]['value'] self.student_input = submission[0]['value']
log.info(u'Answer submitted for`{}`: "{}"'.format(self.name, self.student_input)) 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): def save(self):
""" """
......
...@@ -88,7 +88,7 @@ class MentoringBlock(XBlock): ...@@ -88,7 +88,7 @@ class MentoringBlock(XBlock):
child = child_map[input_name] child = child_map[input_name]
submit_results[input_name] = child.submit(submission) submit_results[input_name] = child.submit(submission)
child.save() child.save()
completed = completed and submit_results[input_name] completed = completed and submit_results[input_name]['completed']
self.completed = bool(completed) self.completed = bool(completed)
......
...@@ -87,7 +87,16 @@ class QuizzBlock(XBlock): ...@@ -87,7 +87,16 @@ class QuizzBlock(XBlock):
def submit(self, submission): def submit(self, submission):
# TODO # 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'] #self.student_input = submission[0]['value']
#log.info(u'Answer submitted for`{}`: "{}"'.format(self.name, self.student_input)) #log.info(u'Answer submitted for`{}`: "{}"'.format(self.name, self.student_input))
return self.student_input #return self.student_choice
...@@ -6,4 +6,5 @@ ...@@ -6,4 +6,5 @@
<span class="progress" data-completed="{{ self.completed }}"> <span class="progress" data-completed="{{ self.completed }}">
<span class='indicator'></span> <span class='indicator'></span>
</span> </span>
<div class="quizz-tips"></div>
</div> </div>
...@@ -15,6 +15,8 @@ function MentoringBlock(runtime, element) { ...@@ -15,6 +15,8 @@ function MentoringBlock(runtime, element) {
} }
function handleSubmitResults(results) { function handleSubmitResults(results) {
$('.quizz-tips', element).empty();
$.each(results.submitResults || {}, function(input, result) { $.each(results.submitResults || {}, function(input, result) {
callIfExists(runtime.childMap(element, input), 'handleSubmit', result); callIfExists(runtime.childMap(element, input), 'handleSubmit', result);
}); });
......
function QuizzBlock(runtime, element) { function QuizzBlock(runtime, element) {
return { return {
submit: function() { 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) { 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