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

So, for example, Croatian users can set the maximum grade to 65,5.

Conflicts:

	mod/quiz/edit.php
This commit is contained in:
Tim Hunt
2012-06-07 12:58:39 +01:00
parent fbbb4cc708
commit a41848a445
2 changed files with 11 additions and 3 deletions
+8
View File
@@ -133,6 +133,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');
+3 -3
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;
@@ -384,8 +384,8 @@ if (optional_param('savechanges', false, PARAM_BOOL) && confirm_sesskey()) {
$deletepreviews = true;
}
// If rescaling is required save the new maximum
$maxgrade = optional_param('maxgrade', -1, PARAM_FLOAT);
// If rescaling is required save the new maximum.
$maxgrade = unformat_float(optional_param('maxgrade', -1, PARAM_RAW));
if ($maxgrade >= 0) {
quiz_set_grade($maxgrade, $quiz);
}