Permalink
Browse files

MDL-30006 Workshop / Number of errors grading: force graders to actua…

…lly answer the form

QuickForms do not distinguish non-checked radio from the checked radio
with the value "0". So we map the database grade value "0" to a value
"-1" when displaying the form and vice versa when saving the form. This
allowed us to have none radios checked by default and force the grader
to actually answer the form themselves, using the 'required' rule.
  • Loading branch information...
1 parent 112f7d4 commit 08fb23840ebdb531a05bed3c8fae2691c595659f @mudrd8mz mudrd8mz committed Oct 30, 2011
Showing with 7 additions and 5 deletions.
  1. +5 −3 mod/workshop/form/numerrors/assessment_form.php
  2. +2 −2 mod/workshop/form/numerrors/lib.php
@@ -71,9 +71,11 @@ protected function definition_inner(&$mform) {
// evaluation of the assertion
$label = get_string('dimensiongrade', 'workshopform_numerrors');
- $mform->addElement('radio', 'grade__idx_' . $i, get_string('yourassessment', 'workshop'), $fields->{'grade0__idx_'.$i}, 0);
- $mform->addElement('radio', 'grade__idx_' . $i, '', $fields->{'grade1__idx_'.$i}, 1);
- $mform->setDefault('grade__idx_' . $i, 0);
+ $mform->addGroup(array(
+ $mform->createElement('radio', 'grade__idx_' . $i, '', $fields->{'grade0__idx_'.$i}, -1),
+ $mform->createElement('radio', 'grade__idx_' . $i, '', $fields->{'grade1__idx_'.$i}, 1),
+ ), 'group_grade__idx_' . $i, get_string('yourassessment', 'workshop'), '<br />', false);
+ $mform->addRule('group_grade__idx_' . $i, get_string('required'), 'required');
// comment
$label = get_string('dimensioncomment', 'workshopform_numerrors');
@@ -252,7 +252,7 @@ public function get_assessment_form(moodle_url $actionurl=null, $mode='preview',
$dimid = $fields->{'dimensionid__idx_'.$i};
if (isset($grades[$dimid])) {
$current->{'gradeid__idx_'.$i} = $grades[$dimid]->id;
- $current->{'grade__idx_'.$i} = $grades[$dimid]->grade;
+ $current->{'grade__idx_'.$i} = ($grades[$dimid]->grade == 0 ? -1 : 1);
$current->{'peercomment__idx_'.$i} = $grades[$dimid]->peercomment;
}
}
@@ -294,7 +294,7 @@ public function save_assessment(stdclass $assessment, stdclass $data) {
$grade->assessmentid = $assessment->id;
$grade->strategy = 'numerrors';
$grade->dimensionid = $data->{'dimensionid__idx_' . $i};
- $grade->grade = $data->{'grade__idx_' . $i};
+ $grade->grade = ($data->{'grade__idx_' . $i} <= 0 ? 0 : 1);
$grade->peercomment = $data->{'peercomment__idx_' . $i};
$grade->peercommentformat = FORMAT_HTML;
if (empty($grade->id)) {

0 comments on commit 08fb238

Please sign in to comment.