MDL-33532 quiz editing: let uses enter locale floats.

So, for example, Croatian users can set the maximum grade to 65,5.
This commit is contained in:
Tim Hunt 2012-06-07 12:55:53 +01:00
parent 4db061680e
commit 7f5f384477
2 changed files with 10 additions and 2 deletions

View File

@ -132,6 +132,14 @@ define('PARAM_FILE', 'file');
/**
* PARAM_FLOAT - a real/floating point number.
*
* Note that you should not use PARAM_FLOAT for numbers typed in by the user.
* It does not work for languages that use , as a decimal separator.
* Instead, do something like
* $rawvalue = required_param('name', PARAM_RAW);
* // ... other code including require_login, which sets current lang ...
* $realvalue = unformat_float($rawvalue);
* // ... then use $realvalue
*/
define('PARAM_FLOAT', 'float');

View File

@ -318,7 +318,7 @@ if (optional_param('savechanges', false, PARAM_BOOL) && confirm_sesskey()) {
if (preg_match('!^g([0-9]+)$!', $key, $matches)) {
// Parse input for question -> grades.
$questionid = $matches[1];
$quiz->grades[$questionid] = clean_param($value, PARAM_FLOAT);
$quiz->grades[$questionid] = unformat_float($value);
quiz_update_question_instance($quiz->grades[$questionid], $questionid, $quiz);
$deletepreviews = true;
$recomputesummarks = true;
@ -385,7 +385,7 @@ if (optional_param('savechanges', false, PARAM_BOOL) && confirm_sesskey()) {
}
// If rescaling is required save the new maximum.
$maxgrade = optional_param('maxgrade', -1, PARAM_FLOAT);
$maxgrade = unformat_float(optional_param('maxgrade', -1, PARAM_RAW));
if ($maxgrade >= 0) {
quiz_set_grade($maxgrade, $quiz);
}