From 6c361cf374771cf4b7bab6da69eb83ebb77828e2 Mon Sep 17 00:00:00 2001 From: Jake Dallimore Date: Wed, 25 May 2016 08:45:36 +0800 Subject: [PATCH] MDL-51806 mod_workshop: Add locale support for grade values. --- mod/workshop/lib.php | 16 ++++++++++++++++ mod/workshop/mod_form.php | 31 +++++++++++++++++++++++-------- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php index e553500a797..a266e1e7393 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -81,6 +81,14 @@ function workshop_add_instance(stdclass $workshop) { $workshop->phaseswitchassessment = (int)!empty($workshop->phaseswitchassessment); $workshop->evaluation = 'best'; + if (isset($workshop->gradinggradepass)) { + $workshop->gradinggradepass = unformat_float($workshop->gradinggradepass); + } + + if (isset($workshop->submissiongradepass)) { + $workshop->submissiongradepass = unformat_float($workshop->submissiongradepass); + } + // insert the new record so we get the id $workshop->id = $DB->insert_record('workshop', $workshop); @@ -141,6 +149,14 @@ function workshop_update_instance(stdclass $workshop) { $workshop->latesubmissions = (int)!empty($workshop->latesubmissions); $workshop->phaseswitchassessment = (int)!empty($workshop->phaseswitchassessment); + if (isset($workshop->gradinggradepass)) { + $workshop->gradinggradepass = unformat_float($workshop->gradinggradepass); + } + + if (isset($workshop->submissiongradepass)) { + $workshop->submissiongradepass = unformat_float($workshop->submissiongradepass); + } + // todo - if the grading strategy is being changed, we may want to replace all aggregated peer grades with nulls $DB->update_record('workshop', $workshop); diff --git a/mod/workshop/mod_form.php b/mod/workshop/mod_form.php index f5a2f9f4023..7aee3393ba4 100644 --- a/mod/workshop/mod_form.php +++ b/mod/workshop/mod_form.php @@ -100,8 +100,7 @@ class mod_workshop_mod_form extends moodleform_mod { $mform->addElement('text', 'submissiongradepass', get_string('gradetopasssubmission', 'workshop')); $mform->addHelpButton('submissiongradepass', 'gradepass', 'grades'); $mform->setDefault('submissiongradepass', ''); - $mform->setType('submissiongradepass', PARAM_FLOAT); - $mform->addRule('submissiongradepass', null, 'numeric', null, 'client'); + $mform->setType('submissiongradepass', PARAM_RAW); $label = get_string('gradinggrade', 'workshop'); $mform->addGroup(array( @@ -114,8 +113,7 @@ class mod_workshop_mod_form extends moodleform_mod { $mform->addElement('text', 'gradinggradepass', get_string('gradetopassgrading', 'workshop')); $mform->addHelpButton('gradinggradepass', 'gradepass', 'grades'); $mform->setDefault('gradinggradepass', ''); - $mform->setType('gradinggradepass', PARAM_FLOAT); - $mform->addRule('gradinggradepass', null, 'numeric', null, 'client'); + $mform->setType('gradinggradepass', PARAM_RAW); $options = array(); for ($i=5; $i>=0; $i--) { @@ -372,11 +370,28 @@ class mod_workshop_mod_form extends moodleform_mod { } } - if ($data['submissiongradepass'] > $data['grade']) { - $errors['submissiongradepass'] = get_string('gradepassgreaterthangrade', 'grades', $data['grade']); + // Check that the submission grade pass is a valid number. + if (isset($data['submissiongradepass'])) { + $submissiongradefloat = unformat_float($data['submissiongradepass'], true); + if ($submissiongradefloat === false || $submissiongradefloat === null) { + $errors['submissiongradepass'] = get_string('err_numeric', 'form'); + } else { + if ($submissiongradefloat > $data['grade']) { + $errors['submissiongradepass'] = get_string('gradepassgreaterthangrade', 'grades', $data['grade']); + } + } } - if ($data['gradinggradepass'] > $data['gradinggrade']) { - $errors['gradinggradepass'] = get_string('gradepassgreaterthangrade', 'grades', $data['gradinggrade']); + + // Check that the grade pass is a valid number. + if (isset($data['gradinggradepass'])) { + $gradepassfloat = unformat_float($data['gradinggradepass'], true); + if ($gradepassfloat === false || $gradepassfloat === null) { + $errors['gradinggradepass'] = get_string('err_numeric', 'form'); + } else { + if ($gradepassfloat > $data['gradinggrade']) { + $errors['gradinggradepass'] = get_string('gradepassgreaterthangrade', 'grades', $data['gradinggrade']); + } + } } return $errors;