);
$mform->addElement('select', 'unitrole',
get_string('unithandling', 'qtype_numerical'), $unitoptions);
+ $mform->setDefault('unitrole', $this->get_default_value('unitrole', qtype_numerical::UNITNONE));
$penaltygrp = array();
$penaltygrp[] = $mform->createElement('float', 'unitpenalty',
get_string('unitpenalty', 'qtype_numerical'), array('size' => 6));
- $mform->setDefault('unitpenalty', 0.1000000);
+ $mform->setDefault('unitpenalty', $this->get_default_value('unitpenalty', 0.1000000));
$unitgradingtypes = array(
qtype_numerical::UNITGRADEDOUTOFMARK =>
get_string('decfractionofquestiongrade', 'qtype_numerical'),
);
$penaltygrp[] = $mform->createElement('select', 'unitgradingtypes', '', $unitgradingtypes);
- $mform->setDefault('unitgradingtypes', 1);
+ $mform->setDefault('unitgradingtypes',
+ $this->get_default_value('unitgradingtypes', qtype_numerical::UNITGRADEDOUTOFMARK));
$mform->addGroup($penaltygrp, 'penaltygrp',
get_string('unitpenalty', 'qtype_numerical'), ' ', false);
);
$mform->addElement('select', 'multichoicedisplay',
get_string('studentunitanswer', 'qtype_numerical'), $unitinputoptions);
+ $mform->setDefault('multichoicedisplay',
+ $this->get_default_value('multichoicedisplay', qtype_numerical::UNITINPUT));
$unitsleftoptions = array(
0 => get_string('rightexample', 'qtype_numerical'),
);
$mform->addElement('select', 'unitsleft',
get_string('unitposition', 'qtype_numerical'), $unitsleftoptions);
- $mform->setDefault('unitsleft', 0);
+ $mform->setDefault('unitsleft', $this->get_default_value('unitsleft', 0));
$mform->disabledIf('penaltygrp', 'unitrole', 'eq', qtype_numerical::UNITNONE);
$mform->disabledIf('penaltygrp', 'unitrole', 'eq', qtype_numerical::UNITOPTIONAL);
return true;
}
+ public function save_defaults_for_new_questions(stdClass $fromform): void {
+ parent::save_defaults_for_new_questions($fromform);
+ $this->set_default_value('unitrole', $fromform->unitrole);
+ $this->set_default_value('unitpenalty', $fromform->unitpenalty);
+ $this->set_default_value('unitgradingtypes', $fromform->unitgradingtypes);
+ $this->set_default_value('multichoicedisplay', $fromform->multichoicedisplay);
+ $this->set_default_value('unitsleft', $fromform->unitsleft);
+ }
+
/**
* Save the units and the answers associated with this question.
*/
| id_tolerance_2 | 0 |
| id_fraction_2 | 100% |
Then I should see "Numerical-001"
+
+ @javascript
+ Scenario: Create a Numerical question with units
+ Given I add a "Numerical" question filling the form with:
+ | Question name | Numerical-002 |
+ | Question text | How many meter is 1m + 20cm + 50mm? |
+ | Default mark | 1 |
+ | General feedback | The correct answer is 1.25m |
+ | id_answer_0 | 1.25 |
+ | id_tolerance_0 | 0 |
+ | id_fraction_0 | 100% |
+ | id_answer_1 | 125 |
+ | id_tolerance_1 | 0 |
+ | id_fraction_1 | 0% |
+ | id_answer_2 | 1250 |
+ | id_tolerance_2 | 0 |
+ | id_fraction_2 | 0% |
+ | id_unitrole | The unit must be given, and will be graded. |
+ | id_unitpenalty | 0.15 |
+ | id_unitgradingtypes | as a fraction (0-1) of the question grade |
+ | id_unitsleft | on the right, for example 1.00cm or 1.00km |
+ | id_multichoicedisplay | a drop-down menu |
+ | id_unit_0 | m |
+ And I should see "Numerical-002"
+ # Checking that the next new question form displays user preferences settings.
+ When I press "Create a new question ..."
+ And I set the field "item_qtype_numerical" to "1"
+ And I click on "Add" "button" in the "Choose a question type to add" "dialogue"
+ Then the following fields match these values:
+ | id_unitrole | The unit must be given, and will be graded. |
+ | id_unitpenalty | 0#15 |
+ | id_unitgradingtypes | as a fraction (0-1) of the question grade |
+ | id_multichoicedisplay | a drop-down menu |
+ | id_unitsleft | on the right, for example 1.00cm or 1.00km |