MDL-34993 questions: convert numeric fields to float on load.

NUMBER(X,Y) typically come back from the DB as strings. If you don't
convert them to float, then when you display them, it appears as
1.0000000, which is not normally what you want.

Also, increase the size of the field on the edit form, so if you
question does have default mark 0.1234567, you can see that!
This commit is contained in:
Tim Hunt 2012-08-21 14:11:13 +01:00
parent bac15e5782
commit 7f8d657531
2 changed files with 9 additions and 1 deletions

View file

@ -780,14 +780,22 @@ function question_load_questions($questionids, $extrafields = '', $join = '') {
*/
function _tidy_question($question, $loadtags = false) {
global $CFG;
// Load question-type specific fields.
if (!question_bank::is_qtype_installed($question->qtype)) {
$question->questiontext = html_writer::tag('p', get_string('warningmissingtype',
'qtype_missingtype')) . $question->questiontext;
}
question_bank::get_qtype($question->qtype)->get_question_options($question);
// Convert numeric fields to float. (Prevents these being displayed as 1.0000000.)
$question->defaultmark += 0;
$question->penalty += 0;
if (isset($question->_partiallyloaded)) {
unset($question->_partiallyloaded);
}
if ($loadtags && !empty($CFG->usetags)) {
require_once($CFG->dirroot . '/tag/lib.php');
$question->tags = tag_get_tags_array('question', $question->id);

View file

@ -190,7 +190,7 @@ abstract class question_edit_form extends question_wizard_form {
$mform->setType('questiontext', PARAM_RAW);
$mform->addElement('text', 'defaultmark', get_string('defaultmark', 'question'),
array('size' => 3));
array('size' => 7));
$mform->setType('defaultmark', PARAM_FLOAT);
$mform->setDefault('defaultmark', 1);
$mform->addRule('defaultmark', null, 'required', null, 'client');