From fd97082c5948c1d3e9646160490e5ca34055e557 Mon Sep 17 00:00:00 2001 From: pichetp Date: Mon, 24 Nov 2008 04:10:43 +0000 Subject: [PATCH] MDL-17264 Adding control of usecase for the shortanswer type using SHORTANSER_C or SAC or MWC --- .../type/multianswer/edit_multianswer_form.php | 15 +++++++++++++++ question/type/multianswer/questiontype.php | 8 ++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/question/type/multianswer/edit_multianswer_form.php b/question/type/multianswer/edit_multianswer_form.php index 6af136e4ea..d698dd7c62 100644 --- a/question/type/multianswer/edit_multianswer_form.php +++ b/question/type/multianswer/edit_multianswer_form.php @@ -66,6 +66,10 @@ class question_edit_multianswer_form extends question_edit_form { $mform->addElement('static', 'sub_'.$sub."_".'defaultgrade', get_string('defaultgrade', 'quiz')); $mform->setDefault('sub_'.$sub."_".'defaultgrade',$this->questiondisplay->options->questions[$sub]->defaultgrade); + if ($this->questiondisplay->options->questions[$sub]->qtype =='shortanswer' ) { + $mform->addElement('static', 'sub_'.$sub."_".'usecase', get_string('casesensitive', 'quiz')); + } + if ($this->questiondisplay->options->questions[$sub]->qtype =='multichoice' ) { $mform->addElement('static', 'sub_'.$sub."_".'layout', get_string('layout', 'qtype_multianswer'),array('cols'=>60, 'rows'=>1)) ;//, $gradeoptions); } @@ -151,6 +155,17 @@ class question_edit_multianswer_form extends question_edit_form { $answercount = 0; $maxgrade = false; $maxfraction = -1; + if ($subquestion->qtype =='shortanswer' ) { + switch ($subquestion->usecase) { + case '1': + $default_values[$prefix.'usecase']= get_string('caseyes', 'quiz'); + break; + case '0': + default : + $default_values[$prefix.'usecase']= get_string('caseno', 'quiz'); + } + } + if ($subquestion->qtype == 'multichoice' ) { $default_values[$prefix.'layout'] = $subquestion->layout ; switch ($subquestion->layout) { diff --git a/question/type/multianswer/questiontype.php b/question/type/multianswer/questiontype.php index e8efa05464..0842b5261d 100644 --- a/question/type/multianswer/questiontype.php +++ b/question/type/multianswer/questiontype.php @@ -953,7 +953,7 @@ define("NUMERICAL_ABS_ERROR_MARGIN", 6); // Remaining ANSWER regexes define("ANSWER_TYPE_DEF_REGEX", - '(NUMERICAL|NM)|(MULTICHOICE|MC)|(MULTICHOICE_V|MCV)|(MULTICHOICE_H|MCH)|(SHORTANSWER|SA|MW)'); + '(NUMERICAL|NM)|(MULTICHOICE|MC)|(MULTICHOICE_V|MCV)|(MULTICHOICE_H|MCH)|(SHORTANSWER|SA|MW)|(SHORTANSWER_C|SAC|MWC)'); define("ANSWER_START_REGEX", '\{([0-9]*):(' . ANSWER_TYPE_DEF_REGEX . '):'); @@ -971,7 +971,8 @@ define("ANSWER_REGEX_ANSWER_TYPE_MULTICHOICE", 4); define("ANSWER_REGEX_ANSWER_TYPE_MULTICHOICE_REGULAR", 5); define("ANSWER_REGEX_ANSWER_TYPE_MULTICHOICE_HORIZONTAL", 6); define("ANSWER_REGEX_ANSWER_TYPE_SHORTANSWER", 7); -define("ANSWER_REGEX_ALTERNATIVES", 8); +define("ANSWER_REGEX_ANSWER_TYPE_SHORTANSWER_C", 8); +define("ANSWER_REGEX_ALTERNATIVES", 9); function qtype_multianswer_extract_question($text) { $question = new stdClass; @@ -993,6 +994,9 @@ function qtype_multianswer_extract_question($text) { } else if(!empty($answerregs[ANSWER_REGEX_ANSWER_TYPE_SHORTANSWER])) { $wrapped->qtype = 'shortanswer'; $wrapped->usecase = 0; + } else if(!empty($answerregs[ANSWER_REGEX_ANSWER_TYPE_SHORTANSWER_C])) { + $wrapped->qtype = 'shortanswer'; + $wrapped->usecase = 1; } else if(!empty($answerregs[ANSWER_REGEX_ANSWER_TYPE_MULTICHOICE])) { $wrapped->qtype = 'multichoice'; $wrapped->single = 1; -- 2.39.5