From 8b9dfc2bf693eba83c4a8be56f66450b1e976776 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Thu, 13 Jan 2011 17:16:36 +0000 Subject: [PATCH] MDL-20636 Fix editing of multichoice questions. --- question/type/edit_question_form.php | 19 +++++++++++++------ .../multichoice/edit_multichoice_form.php | 2 +- question/type/multichoice/questiontype.php | 2 ++ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/question/type/edit_question_form.php b/question/type/edit_question_form.php index 82f55da0728..47bd0e0f5b2 100644 --- a/question/type/edit_question_form.php +++ b/question/type/edit_question_form.php @@ -486,8 +486,8 @@ abstract class question_edit_form extends moodleform { foreach (array('correctfeedback', 'partiallycorrectfeedback', 'incorrectfeedback') as $feedbackname) { $draftid = file_get_submitted_draft_itemid($feedbackname); - $question->$feedbackname = array(); - $question->$feedbackname['text'] = file_prepare_draft_area( + $feedback = array(); + $feedback['text'] = file_prepare_draft_area( $draftid, // draftid $this->context->id, // context 'qtype_multichoice', // component @@ -497,8 +497,10 @@ abstract class question_edit_form extends moodleform { $question->options->$feedbackname // text ); $feedbackformat = $feedbackname . 'format'; - $question->$feedbackname['format'] = $question->options->$feedbackformat; - $question->$feedbackname['itemid'] = $draftid; + $feedback['format'] = $question->options->$feedbackformat; + $feedback['itemid'] = $draftid; + + $question->$feedbackname = $feedback; } if ($withshownumcorrect) { @@ -531,9 +533,14 @@ abstract class question_edit_form extends moodleform { $question->hint[$key]['itemid'] = $draftitemid; $question->hint[$key]['format'] = $hint->hintformat; $key++; - } - // TODO $withclearwrong, $withshownumpartscorrect + if ($withclearwrong) { + $question->hintclearwrong[] = $hint->clearwrong; + } + if ($withshownumpartscorrect) { + $question->hintshownumcorrect[] = $hint->shownumcorrect; + } + } return $question; } diff --git a/question/type/multichoice/edit_multichoice_form.php b/question/type/multichoice/edit_multichoice_form.php index a1cf2e58c35..18274625a1a 100644 --- a/question/type/multichoice/edit_multichoice_form.php +++ b/question/type/multichoice/edit_multichoice_form.php @@ -67,7 +67,7 @@ class question_edit_multichoice_form extends question_edit_form { $question = parent::data_preprocessing($question); $question = $this->data_preprocessing_answers($question, true); $question = $this->data_preprocessing_combined_feedback($question, true); - $question = $this->data_preprocessing_hints($question); + $question = $this->data_preprocessing_hints($question, true, true); if (!empty($question->options)) { $question->single = $question->options->single; diff --git a/question/type/multichoice/questiontype.php b/question/type/multichoice/questiontype.php index 1374e06a46a..68d3492370c 100644 --- a/question/type/multichoice/questiontype.php +++ b/question/type/multichoice/questiontype.php @@ -140,6 +140,8 @@ class qtype_multichoice extends question_type { $DB->update_record('question_multichoice', $options); + $this->save_hints($question, true); + /// Perform sanity checks on fractional grades if ($options->single) { if ($maxfraction != 1) {