From 1b383c0177f71c74927df203d0e8b336d17570b7 Mon Sep 17 00:00:00 2001 From: Jake Dallimore Date: Wed, 25 May 2016 09:07:11 +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 9dc499b269d..01e5701101b 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); + } + if (isset($workshop->submissionfiletypes)) { $workshop->submissionfiletypes = workshop::clean_file_extensions($workshop->submissionfiletypes); } @@ -149,6 +157,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); + } + if (isset($workshop->submissionfiletypes)) { $workshop->submissionfiletypes = workshop::clean_file_extensions($workshop->submissionfiletypes); } diff --git a/mod/workshop/mod_form.php b/mod/workshop/mod_form.php index 64b9ac0eb23..9fcaf277986 100644 --- a/mod/workshop/mod_form.php +++ b/mod/workshop/mod_form.php @@ -99,8 +99,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( @@ -113,8 +112,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--) { @@ -397,11 +395,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;