Commit c7218aef authored by Colin Chambers's avatar Colin Chambers Committed by Tim Hunt
Browse files

MDL-36570 question editing: group answer/choice fields better.

parent d8201d49
......@@ -25,6 +25,7 @@
$string['addmorechoiceblanks'] = 'Blanks for {no} more choices';
$string['addcategory'] = 'Add category';
$string['adminreport'] = 'Report on possible problems in your question database.';
$string['answers'] = 'Answers';
$string['availableq'] = 'Available?';
$string['badbase'] = 'Bad base before **: {$a}**';
$string['behaviour'] = 'Behaviour';
......
......@@ -54,9 +54,9 @@ class qtype_calculated_edit_form extends qtype_numerical_edit_form {
$this->question = $question;
$this->reload = optional_param('reload', false, PARAM_BOOL);
if (!$this->reload) { // use database data as this is first pass
if (!$this->reload) { // Use database data as this is first pass.
if (isset($this->question->id)) {
// remove prefix #{..}# if exists
// Remove prefix #{..}# if exists.
$this->initialname = $question->name;
$regs= array();
if (preg_match('~#\{([^[:space:]]*)#~', $question->name , $regs)) {
......@@ -72,27 +72,49 @@ class qtype_calculated_edit_form extends qtype_numerical_edit_form {
$repeated = parent::get_per_answer_fields($mform, $label, $gradeoptions,
$repeatedoptions, $answersoption);
// 1 is the answer. 3 is tolerance.
$repeated[1]->setLabel(get_string('correctanswerformula', 'qtype_calculated') . '=');
$repeated[3]->setLabel(get_string('tolerance', 'qtype_calculated') . '=');
// Reorganise answer options group. 0 is the answer. 1 is tolerance. 2 is Grade.
$answeroptions = $repeated[0]->getElements();
// Tolerance field will be part of its own group.
$tolerance = $answeroptions[1];
// Update Answer options group to contain only answer and grade fields.
$answeroptions = array($answeroptions[0], $answeroptions[2]);
$repeated[0]->setElements($answeroptions);
// Update answer field and group label.
$repeated[0]->setLabel(get_string('answerformula', 'qtype_calculated', '{no}') . ' =');
$answeroptions[0]->setLabel(get_string('answerformula', 'qtype_calculated', '{no}') . ' =');
// Get feedback field to re append later.
$feedback = array_pop($repeated);
// Create tolerance group.
$answertolerance = array();
$tolerance->setLabel(get_string('tolerance', 'qtype_calculated') . '=');
$answertolerance[] = $tolerance;
$answertolerance[] = $mform->createElement('select', 'tolerancetype',
get_string('tolerancetype', 'qtype_calculated'), $this->qtypeobj->tolerance_types());
$repeated[] = $mform->createElement('group', 'answertolerance',
get_string('tolerance', 'qtype_calculated'), $answertolerance, null, false);
$repeatedoptions['tolerance']['default'] = 0.01;
$addrepeated = array();
$addrepeated[] = $mform->createElement('select', 'tolerancetype',
get_string('tolerancetype', 'qtype_numerical'), $this->qtypeobj->tolerance_types());
$addrepeated[] = $mform->createElement('select', 'correctanswerlength',
get_string('correctanswershows', 'qtype_calculated'), range(0, 9));
// Create display group.
$answerdisplay = array();
$answerdisplay[] = $mform->createElement('select', 'correctanswerlength',
get_string('answerdisplay', 'qtype_calculated'), range(0, 9));
$repeatedoptions['correctanswerlength']['default'] = 2;
$answerlengthformats = array(
'1' => get_string('decimalformat', 'qtype_numerical'),
'2' => get_string('significantfiguresformat', 'qtype_calculated')
);
$addrepeated[] = $mform->createElement('select', 'correctanswerformat',
$answerdisplay[] = $mform->createElement('select', 'correctanswerformat',
get_string('correctanswershowsformat', 'qtype_calculated'), $answerlengthformats);
$repeated[] = $mform->createElement('group', 'answerdisplay',
get_string('answerdisplay', 'qtype_calculated'), $answerdisplay, null, false);
array_splice($repeated, 4, 0, $addrepeated);
// Add feedback.
$repeated[] = $feedback;
return $repeated;
}
......@@ -124,7 +146,7 @@ class qtype_calculated_edit_form extends qtype_numerical_edit_form {
$mform->createElement('submit', $addfieldsname, $addstring), 'listcategory');
$mform->registerNoSubmitButton('createoptionbutton');
//editing as regular
// Editing as regular.
$mform->setType('single', PARAM_INT);
$mform->addElement('hidden', 'shuffleanswers', '1');
......@@ -141,7 +163,7 @@ class qtype_calculated_edit_form extends qtype_numerical_edit_form {
$this->add_unit_fields($mform, $this);
$this->add_interactive_settings();
// Hidden elements
// Hidden elements.
$mform->addElement('hidden', 'synchronize', '');
$mform->setType('synchronize', PARAM_INT);
$mform->addElement('hidden', 'wizard', 'datasetdefinitions');
......@@ -190,7 +212,7 @@ class qtype_calculated_edit_form extends qtype_numerical_edit_form {
public function validation($data, $files) {
// verifying for errors in {=...} in question text;
// Verifying for errors in {=...} in question text.
$qtext = "";
$qtextremaining = $data['questiontext']['text'];
$possibledatasets = $this->qtypeobj->find_dataset_names($data['questiontext']['text']);
......
......@@ -26,6 +26,8 @@
$string['additem'] = 'Add item';
$string['addmoreanswerblanks'] = 'Add another answer blank.';
$string['addsets'] = 'Add set(s)';
$string['answerformula'] = 'Answer {$a} formula';
$string['answerdisplay'] = 'Answer display';
$string['answerhdr'] = 'Answer';
$string['answerstoleranceparam'] = 'Answers tolerance parameters';
$string['answerwithtolerance'] = '{$a->answer} (±{$a->tolerance} {$a->tolerancetype})';
......@@ -129,6 +131,7 @@ $string['synchronizeno']='Do not synchronize';
$string['synchronizeyes']='Synchronize';
$string['synchronizeyesdisplay']='Synchronize and display the shared datasets name as prefix of the question name';
$string['tolerance'] = 'Tolerance ±';
$string['tolerancetype'] = 'Type';
$string['trueanswerinsidelimits'] = 'Correct answer : {$a->correct} inside limits of true value {$a->true}';
$string['trueansweroutsidelimits'] = '<span class="error">ERROR Correct answer : {$a->correct} outside limits of true value {$a->true}</span>';
$string['uniform'] = 'Uniform';
......
......@@ -20,3 +20,56 @@
direction: ltr;
text-align: left;
}
/* Editing form. */
body#page-question-type-calculated div[id^=fgroup_id_][id*=answeroptions_],
body#page-question-type-calculatedmulti div[id^=fgroup_id_][id*=answeroptions_] {
background: #EEE;
margin-top: 0;
margin-bottom: 0;
padding-bottom: 5px;
padding-top: 5px;
border: 1px solid #BBB;
border-bottom: 0;
}
body#page-question-type-calculated div[id^=fgroup_id_][id*=answeroptions_] .fgrouplabel label,
body#page-question-type-calculatedmulti div[id^=fgroup_id_][id*=answeroptions_] .fgrouplabel label {
font-weight: bold;
}
body#page-question-type-calculated div[id^=fgroup_id_][id*=answeroptions_] label[for^='id_answer_'],
body#page-question-type-calculated div[id^=fgroup_id_][id*=answertolerance_] label[for^='id_tolerance_'],
body#page-question-type-calculated div[id^=fgroup_id_][id*=answerdisplay_] label[for^='id_correctanswerlength_'],
body#page-question-type-calculatedmulti div[id^=fgroup_id_][id*=answeroptions_] label[for^='id_answer_'],
body#page-question-type-calculatedmulti div[id^=fgroup_id_][id*=answerdisplay_] label[for^='id_correctanswerlength_'] {
position: absolute;
left: -10000px;
font-weight: normal;
font-size: 1em;
}
body#page-question-type-calculated div[id^=fgroup_id_][id*=answertolerance_],
body#page-question-type-calculated div[id^=fgroup_id_][id*=answerdisplay_],
body#page-question-type-calculatedmulti div[id^=fgroup_id_][id*=answertolerance_],
body#page-question-type-calculatedmulti div[id^=fgroup_id_][id*=answerdisplay_] {
background: #EEE;
margin-bottom: 0;
margin-top: 0;
padding-bottom: 5px;
padding-top: 5px;
border: 1px solid #BBB;
border-top: 0;
border-bottom: 0;
}
body#page-question-type-calculated div[id^=fitem_id_][id*=feedback_],
body#page-question-type-calculatedmulti div[id^=fitem_id_][id*=feedback_] {
background: #EEE;
margin-bottom: 2em;
margin-top: 0;
padding-bottom: 5px;
padding-top: 5px;
border: 1px solid #BBB;
border-top: 0;
}
......@@ -50,9 +50,9 @@ class qtype_calculatedmulti_edit_form extends question_edit_form {
$this->qtypeobj = question_bank::get_qtype('calculatedmulti');
$this->reload = optional_param('reload', false, PARAM_BOOL);
if (!$this->reload) {
// use database data as this is first pass
// Use database data as this is first pass.
if (isset($this->question->id)) {
// remove prefix #{..}# if exists
// Remove prefix #{..}# if exists.
$this->initialname = $question->name;
$regs= array();
if (preg_match('~#\{([^[:space:]]*)#~', $question->name , $regs)) {
......@@ -66,13 +66,16 @@ class qtype_calculatedmulti_edit_form extends question_edit_form {
public function get_per_answer_fields($mform, $label, $gradeoptions,
&$repeatedoptions, &$answersoption) {
$repeated = array();
$repeated[] = $mform->createElement('header', 'answerhdr', $label);
$repeated[] = $mform->createElement('text', 'answer',
get_string('answer', 'question'), array('size' => 50));
$repeated[] = $mform->createElement('select', 'fraction',
$answeroptions = array();
$answeroptions[] = $mform->createElement('text', 'answer',
$label, array('size' => 50));
$answeroptions[] = $mform->createElement('select', 'fraction',
get_string('grade'), $gradeoptions);
$repeated[] = $mform->createElement('editor', 'feedback',
get_string('feedback', 'question'), null, $this->editoroptions);
$repeated[] = $mform->createElement('group', 'answeroptions',
$label, $answeroptions, null, false);
// Added answeroptions help button in definition_inner() after called to add_per_answer_fields.
$repeatedoptions['answer']['type'] = PARAM_RAW;
$repeatedoptions['fraction']['default'] = 0;
$answersoption = 'answers';
......@@ -85,18 +88,24 @@ class qtype_calculatedmulti_edit_form extends question_edit_form {
$repeatedoptions['tolerance']['type'] = PARAM_FLOAT;
$repeatedoptions['tolerance']['default'] = 0.01;
$addrepeated[] = $mform->createElement('select', 'correctanswerlength',
get_string('correctanswershows', 'qtype_calculated'), range(0, 9));
// Create display group.
$answerdisplay = array();
$answerdisplay[] = $mform->createElement('select', 'correctanswerlength',
get_string('answerdisplay', 'qtype_calculated'), range(0, 9));
$repeatedoptions['correctanswerlength']['default'] = 2;
$answerlengthformats = array(
'1' => get_string('decimalformat', 'qtype_numerical'),
'2' => get_string('significantfiguresformat', 'qtype_calculated')
);
$addrepeated[] = $mform->createElement('select', 'correctanswerformat',
$answerdisplay[] = $mform->createElement('select', 'correctanswerformat',
get_string('correctanswershowsformat', 'qtype_calculated'), $answerlengthformats);
array_splice($repeated, 3, 0, $addrepeated);
$repeated[1]->setLabel('...<strong>{={x}+..}</strong>...');
$repeated[] = $mform->createElement('group', 'answerdisplay',
get_string('answerdisplay', 'qtype_calculated'), $answerdisplay, null, false);
// Add feedback.
$repeated[] = $mform->createElement('editor', 'feedback',
get_string('feedback', 'question'), null, $this->editoroptions);
return $repeated;
}
......@@ -145,6 +154,7 @@ class qtype_calculatedmulti_edit_form extends question_edit_form {
$this->add_per_answer_fields($mform, get_string('choiceno', 'qtype_multichoice', '{no}'),
question_bank::fraction_options_full(), max(5, QUESTION_NUMANS_START));
$mform->addHelpButton('answeroptions[0]', 'answeroptions', 'qtype_calculatedmulti');
$repeated = array();
// if ($this->editasmultichoice == 1) {
......@@ -166,7 +176,7 @@ class qtype_calculatedmulti_edit_form extends question_edit_form {
$this->add_interactive_settings(true, true);
//hidden elements
// Hidden elements.
$mform->addElement('hidden', 'synchronize', '');
$mform->setType('synchronize', PARAM_INT);
if (isset($this->question->options) && isset($this->question->options->synchronize)) {
......@@ -221,7 +231,7 @@ class qtype_calculatedmulti_edit_form extends question_edit_form {
public function validation($data, $files) {
$errors = parent::validation($data, $files);
//verifying for errors in {=...} in question text;
// Verifying for errors in {=...} in question text.
$qtext = '';
$qtextremaining = $data['questiontext']['text'];
$possibledatasets = $this->qtypeobj->find_dataset_names($data['questiontext']['text']);
......@@ -268,7 +278,7 @@ class qtype_calculatedmulti_edit_form extends question_edit_form {
$errors['fraction['.$key.']'] = get_string('errgradesetanswerblank', 'qtype_multichoice');
}
if ($trimmedanswer != '' || $answercount == 0) {
//verifying for errors in {=...} in answer text;
// Verifying for errors in {=...} in answer text.
$qanswer = '';
$qanswerremaining = $trimmedanswer;
$possibledatasets = $this->qtypeobj->find_dataset_names($trimmedanswer);
......@@ -318,7 +328,7 @@ class qtype_calculatedmulti_edit_form extends question_edit_form {
$errors['answer[1]'] = get_string('notenoughanswers', 'qtype_multichoice', 2);
}
/// Perform sanity checks on fractional grades
// Perform sanity checks on fractional grades.
if ($data['single']== 1 ) {
if ($maxfraction != 1) {
$errors['fraction[0]'] = get_string('errfractionsnomax', 'qtype_multichoice',
......
......@@ -22,7 +22,8 @@
* @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string['answeroptions'] = 'Choice options';
$string['answeroptions_help'] = 'The suggested choice formula is ...<strong>{={x}+..}</strong>...';
$string['pluginname'] = 'Calculated multichoice';
$string['pluginname_help'] = 'Calculated multichoice questions are like multichoice questions which in their choice elements can be included numerical formula results using wildcards in curly brackets that are substituted with individual values when the quiz is taken. For example, if the question "What is the area of a rectangle of length {l} and width {w}?" one of the choice is {={l}*{w}} (where * denotes multiplication). ';
$string['pluginname_link'] = 'question/type/calculatedmulti';
......
......@@ -6,3 +6,49 @@
.que.calculatedsimple .answer input[type="text"] {
width: 30%;
}
/* Editing form. */
body#page-question-type-calculatedsimple div[id^=fgroup_id_][id*=answeroptions_] {
background: #EEE;
margin-top: 0;
margin-bottom: 0;
padding-bottom: 5px;
padding-top: 5px;
border: 1px solid #BBB;
border-bottom: 0;
}
body#page-question-type-calculatedsimple div[id^=fgroup_id_][id*=answeroptions_] .fgrouplabel label{
font-weight: bold;
}
body#page-question-type-calculatedsimple div[id^=fgroup_id_][id*=answeroptions_] label[for^='id_answer_'],
body#page-question-type-calculatedsimple div[id^=fgroup_id_][id*=answertolerance_] label[for^='id_tolerance_'],
body#page-question-type-calculatedsimple div[id^=fgroup_id_][id*=answerdisplay_] label[for^='id_correctanswerlength_'] {
position: absolute;
left: -10000px;
font-weight: normal;
font-size: 1em;
}
body#page-question-type-calculatedsimple div[id^=fgroup_id_][id*=answertolerance_],
body#page-question-type-calculatedsimple div[id^=fgroup_id_][id*=answerdisplay_] {
background: #EEE;
margin-bottom: 0;
margin-top: 0;
padding-bottom: 5px;
padding-top: 5px;
border: 1px solid #BBB;
border-top: 0;
border-bottom: 0;
}
body#page-question-type-calculatedsimple div[id^=fitem_id_][id*=feedback_] {
background: #EEE;
margin-bottom: 2em;
margin-top: 0;
padding-bottom: 5px;
padding-top: 5px;
border: 1px solid #BBB;
border-top: 0;
}
......@@ -138,7 +138,7 @@ abstract class question_edit_form extends question_wizard_form {
$contexts = $this->contexts->having_cap('moodle/question:add');
}
// Adding question
// Adding question.
$mform->addElement('questioncategory', 'category', get_string('category', 'question'),
array('contexts' => $contexts));
} else if (!($this->question->formoptions->canmove ||
......@@ -153,14 +153,14 @@ abstract class question_edit_form extends question_wizard_form {
array('contexts' => $this->contexts->having_cap('moodle/question:add')));
} else {
// Editing question with permission to move from category or save as new q
// Editing question with permission to move from category or save as new q.
$currentgrp = array();
$currentgrp[0] = $mform->createElement('questioncategory', 'category',
get_string('categorycurrent', 'question'),
array('contexts' => array($this->categorycontext)));
if ($this->question->formoptions->canedit ||
$this->question->formoptions->cansaveasnew) {
//not move only form
// Not move only form.
$currentgrp[1] = $mform->createElement('checkbox', 'usecurrentcat', '',
get_string('categorycurrentuse', 'question'));
$mform->setDefault('usecurrentcat', 1);
......@@ -175,7 +175,7 @@ abstract class question_edit_form extends question_wizard_form {
array('contexts' => array($this->categorycontext)));
if ($this->question->formoptions->canedit ||
$this->question->formoptions->cansaveasnew) {
//not move only form
// Not move only form.
$mform->disabledIf('categorymoveto', 'usecurrentcat', 'checked');
}
}
......@@ -242,7 +242,7 @@ abstract class question_edit_form extends question_wizard_form {
$buttonarray = array();
if (!empty($this->question->id)) {
// Editing / moving question
// Editing / moving question.
if ($this->question->formoptions->movecontext) {
$buttonarray[] = $mform->createElement('submit', 'submitbutton',
get_string('moveq', 'question'));
......@@ -256,7 +256,7 @@ abstract class question_edit_form extends question_wizard_form {
}
$buttonarray[] = $mform->createElement('cancel');
} else {
// Adding new question
// Adding new question.
$buttonarray[] = $mform->createElement('submit', 'submitbutton',
get_string('savechanges'));
$buttonarray[] = $mform->createElement('cancel');
......@@ -294,11 +294,13 @@ abstract class question_edit_form extends question_wizard_form {
protected function get_per_answer_fields($mform, $label, $gradeoptions,
&$repeatedoptions, &$answersoption) {
$repeated = array();
$repeated[] = $mform->createElement('header', 'answerhdr', $label);
$repeated[] = $mform->createElement('text', 'answer',
get_string('answer', 'question'), array('size' => 80));
$repeated[] = $mform->createElement('select', 'fraction',
$answeroptions = array();
$answeroptions[] = $mform->createElement('text', 'answer',
$label, array('size' => 40));
$answeroptions[] = $mform->createElement('select', 'fraction',
get_string('grade'), $gradeoptions);
$repeated[] = $mform->createElement('group', 'answeroptions',
$label, $answeroptions, null, false);
$repeated[] = $mform->createElement('editor', 'feedback',
get_string('feedback', 'question'), array('rows' => 5), $this->editoroptions);
$repeatedoptions['answer']['type'] = PARAM_RAW;
......@@ -319,6 +321,9 @@ abstract class question_edit_form extends question_wizard_form {
*/
protected function add_per_answer_fields(&$mform, $label, $gradeoptions,
$minoptions = QUESTION_NUMANS_START, $addoptions = QUESTION_NUMANS_ADD) {
$mform->addElement('header', 'answerhdr',
get_string('answers', 'question'), '');
$mform->setExpanded('answerhdr', 1);
$answersoption = '';
$repeatedoptions = array();
$repeated = $this->get_per_answer_fields($mform, $label, $gradeoptions,
......@@ -332,7 +337,7 @@ abstract class question_edit_form extends question_wizard_form {
$this->repeat_elements($repeated, $repeatsatstart, $repeatedoptions,
'noanswers', 'addanswers', $addoptions,
$this->get_more_choices_string());
$this->get_more_choices_string(), true);
}
/**
......@@ -449,7 +454,7 @@ abstract class question_edit_form extends question_wizard_form {
public function set_data($question) {
question_bank::get_qtype($question->qtype)->set_default_options($question);
// prepare question text
// Prepare question text.
$draftid = file_get_submitted_draft_itemid('questiontext');
if (!empty($question->questiontext)) {
......@@ -468,7 +473,7 @@ abstract class question_edit_form extends question_wizard_form {
editors_get_preferred_format() : $question->questiontextformat;
$question->questiontext['itemid'] = $draftid;
// prepare general feedback
// Prepare general feedback.
$draftid = file_get_submitted_draft_itemid('generalfeedback');
if (empty($question->generalfeedback)) {
......@@ -504,7 +509,7 @@ abstract class question_edit_form extends question_wizard_form {
}
}
// subclass adds data_preprocessing code here
// Subclass adds data_preprocessing code here.
$question = $this->data_preprocessing($question);
parent::set_data($question);
......@@ -534,7 +539,7 @@ abstract class question_edit_form extends question_wizard_form {
$key = 0;
foreach ($question->options->answers as $answer) {
if ($withanswerfiles) {
// Prepare the feedback editor to display files in draft area
// Prepare the feedback editor to display files in draft area.
$draftitemid = file_get_submitted_draft_itemid('answer['.$key.']');
$question->answer[$key]['text'] = file_prepare_draft_area(
$draftitemid, // draftid
......@@ -562,10 +567,10 @@ abstract class question_edit_form extends question_wizard_form {
// that ->_defaultValues['fraction[0]'] has already been set, but we
// are using object notation here, so we will be setting
// ->_defaultValues['fraction'][0]. That does not work, so we have
// to unset ->_defaultValues['fraction[0]']
// to unset ->_defaultValues['fraction[0]'].
unset($this->_form->_defaultValues["fraction[$key]"]);
// Prepare the feedback editor to display files in draft area
// Prepare the feedback editor to display files in draft area.
$draftitemid = file_get_submitted_draft_itemid('feedback['.$key.']');
$question->feedback[$key]['text'] = file_prepare_draft_area(
$draftitemid, // draftid
......@@ -637,7 +642,7 @@ abstract class question_edit_form extends question_wizard_form {
foreach ($question->hints as $hint) {
$question->hint[$key] = array();
// prepare feedback editor to display files in draft area
// Prepare feedback editor to display files in draft area.
$draftitemid = file_get_submitted_draft_itemid('hint['.$key.']');
$question->hint[$key]['text'] = file_prepare_draft_area(
$draftitemid, // draftid
......
......@@ -36,10 +36,13 @@ class qtype_match_edit_form extends question_edit_form {
protected function get_per_answer_fields($mform, $label, $gradeoptions,
&$repeatedoptions, &$answersoption) {
$mform->addElement('static', 'answersinstruct',
get_string('availablechoices', 'qtype_match'),
get_string('filloutthreeqsandtwoas', 'qtype_match'));
$repeated = array();
$repeated[] = $mform->createElement('header', 'answerhdr', $label);
$repeated[] = $mform->createElement('editor', 'subquestions',
get_string('question'), array('rows'=>3), $this->editoroptions);
$label, array('rows'=>3), $this->editoroptions);
$repeated[] = $mform->createElement('text', 'subanswers',
get_string('answer', 'question'), array('size'=>50));
$repeatedoptions['subquestions']['type'] = PARAM_RAW;
......@@ -59,11 +62,6 @@ class qtype_match_edit_form extends question_edit_form {
$mform->addHelpButton('shuffleanswers', 'shuffle', 'qtype_match');
$mform->setDefault('shuffleanswers', 1);
$mform->addElement('static', 'answersinstruct',
get_string('availablechoices', 'qtype_match'),
get_string('filloutthreeqsandtwoas', 'qtype_match'));
$mform->closeHeaderBefore('answersinstruct');
$this->add_per_answer_fields($mform, get_string('questionno', 'question', '{no}'), 0);
$this->add_combined_feedback_fields(true);
......
......@@ -4,3 +4,29 @@
.que.match .feedback .rightanswer script {
display: none;
}
/* Editing form. */
body#page-question-type-match div[id^=fitem_id_][id*=subquestions_] {
background: #EEE;
margin-top: 0;
margin-bottom: 0;
padding-bottom: 5px;
padding-top: 5px;
border: 1px solid #BBB;
border-bottom: 0;
}
body#page-question-type-match div[id^=fitem_id_][id*=subquestions_] .fitemtitle {
font-weight: bold;
}
body#page-question-type-match div[id^=fitem_id_][id*=subanswers_] {
background: #EEE;
margin-bottom: 2em;
margin-top: 0;
padding-bottom: 5px;
padding-top: 5px;
border: 1px solid #BBB;
border-top: 0;
}
......@@ -70,9 +70,8 @@ class qtype_multichoice_edit_form extends question_edit_form {
protected function get_per_answer_fields($mform, $label, $gradeoptions,
&$repeatedoptions, &$answersoption) {
$repeated = array();
$repeated[] = $mform->createElement('header', 'answerhdr', $label);
$repeated[] = $mform->createElement('editor', 'answer',
get_string('answer', 'question'), array('rows' => 1), $this->editoroptions);
$label, array('rows' => 1), $this->editoroptions);
$repeated[] = $mform->createElement('select', 'fraction',
get_string('grade'), $gradeoptions);
$repeated[] = $mform->createElement('editor', 'feedback',
......
......@@ -16,3 +16,39 @@
.que.multichoice .feedback .rightanswer * {
display: inline;
}
/* Editing form. */
body#page-question-type-multichoice div[id^=fitem_id_][id*=answer_] {
background: #EEE;
margin-top: 0;
margin-bottom: 0;
padding-bottom: 5px;
padding-top: 5px;
border: 1px solid #BBB;
border-bottom: 0;
}
body#page-question-type-multichoice div[id^=fitem_id_][id*=answer_] .fitemtitle {
font-weight: bold;
}
body#page-question-type-multichoice div[id^=fitem_id_][id*=fraction_] {
background: #EEE;
margin-bottom: 0;
margin-top: 0;
padding-bottom: 5px;
padding-top: 5px;
border: 1px solid #BBB