diff --git a/question/type/multianswer/edit_multianswer_form.php b/question/type/multianswer/edit_multianswer_form.php
index 1aa744864db..cf87c827bf3 100644
--- a/question/type/multianswer/edit_multianswer_form.php
+++ b/question/type/multianswer/edit_multianswer_form.php
@@ -66,6 +66,9 @@ 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 =='multichoice' ) {
+ $mform->addElement('static', 'sub_'.$sub."_".'layout', get_string('layout', 'quiz'),array('cols'=>60, 'rows'=>1)) ;//, $gradeoptions);
+ }
foreach ($this->questiondisplay->options->questions[$sub]->answer as $key =>$ans) {
$mform->addElement('static', 'sub_'.$sub."_".'answer['.$key.']', get_string('answer', 'quiz'), array('cols'=>60, 'rows'=>1));
@@ -147,7 +150,22 @@ class question_edit_multianswer_form extends question_edit_form {
$answercount = 0;
$maxgrade = false;
$maxfraction = -1;
-
+ if ($subquestion->qtype == 'multichoice' ) {
+ $default_values[$prefix.'layout'] = $subquestion->layout ;
+ switch ($subquestion->layout) {
+ case '0':
+ $default_values[$prefix.'layout']= get_string('selectelement', 'qtype_multianswer');
+ break;
+ case '1':
+ $default_values[$prefix.'layout']= get_string('verticallayout', 'qtype_multianswer');
+ break;
+ case '2':
+ $default_values[$prefix.'layout']= get_string('horizontallayout', 'qtype_multianswer');
+ break;
+ default:
+ $default_values[$prefix.'layout']= get_string('unknownlayout', 'qtype_multianswer');
+ }
+ }
foreach ($subquestion->answer as $key=>$answer) {
if ( $subquestion->qtype == 'numerical' && $key == 0 ) {
$default_values[$prefix.'tolerance['.$key.']'] = $subquestion->tolerance[0] ;
diff --git a/question/type/multianswer/questiontype.php b/question/type/multianswer/questiontype.php
index 54d5a8867d5..358714e264a 100644
--- a/question/type/multianswer/questiontype.php
+++ b/question/type/multianswer/questiontype.php
@@ -417,6 +417,7 @@ class embedded_cloze_qtype extends default_questiontype {
echo $feedbackimg;
break;
case 'multichoice':
+ if ($wrapped->options->layout == 0 ){
$outputoptions = ''; // Default empty option
foreach ($answers as $mcanswer) {
$selected = '';
@@ -441,6 +442,98 @@ class embedded_cloze_qtype extends default_questiontype {
echo "
pixpath/i/feedback.gif\" alt=\"$feedback\" />";
}
echo $feedbackimg;
+ }else if ($wrapped->options->layout == 1 || $wrapped->options->layout == 2){
+ $ordernumber=0;
+ $anss = Array();
+ foreach ($answers as $mcanswer) {
+ $ordernumber++;
+ $checked = '';
+ $chosen = false;
+ $type = 'type="radio"';
+ $name = "name=\"{$inputname}\"";
+ if ($response == $mcanswer->id) {
+ $checked = 'checked="checked"';
+ $chosen = true;
+ }
+ $a = new stdClass;
+ $a->id = $question->name_prefix . $mcanswer->id;
+ $a->class = '';
+ $a->feedbackimg = '';
+
+ // Print the control
+ $a->control = "id\" $name $checked $type value=\"$mcanswer->id\" />";
+ if ($options->correct_responses && $mcanswer->fraction > 0) {
+ $a->class = question_get_feedback_class(1);
+ }
+ if (($options->feedback && $chosen) || $options->correct_responses) {
+ if ($type == ' type="checkbox" ') {
+ $a->feedbackimg = question_get_feedback_image($mcanswer->fraction > 0 ? 1 : 0, $chosen && $options->feedback);
+ } else {
+ $a->feedbackimg = question_get_feedback_image($mcanswer->fraction, $chosen && $options->feedback);
+ }
+ }
+
+ // Print the answer text
+ $a->text = '' . $ordernumber . '. ' .
+ format_text($mcanswer->answer, FORMAT_MOODLE, $formatoptions, $cmoptions->course);
+
+ // Print feedback if feedback is on
+ if (($options->feedback || $options->correct_responses) && ($checked )) { //|| $options->readonly
+ $a->feedback = format_text($mcanswer->feedback, true, $formatoptions, $cmoptions->course);
+ } else {
+ $a->feedback = '';
+ }
+
+ $anss[] = clone($a);
+ }
+ ?>
+ options->layout == 1 ){
+ ?>
+
+
+
+ |
+ control; ?>
+ |
+
+
+ |
+
+ feedback; ?>
+ |
+
+
+
+ options->layout == 2 ){
+ ?>
+
+
+
+
+ |
+ control; ?>
+ |
+
+
+ |
+
+ feedback; ?>
+ |
+
+
+
+ correctfeedback = '';
$wrapped->partiallycorrectfeedback = '';
$wrapped->incorrectfeedback = '';
+ $wrapped->layout = 0;
+ } else if(!empty($answerregs[ANSWER_REGEX_ANSWER_TYPE_MULTICHOICE_REGULAR])) {
+ $wrapped->qtype = 'multichoice';
+ $wrapped->single = 1;
+ $wrapped->answernumbering = 0;
+ $wrapped->correctfeedback = '';
+ $wrapped->partiallycorrectfeedback = '';
+ $wrapped->incorrectfeedback = '';
+ $wrapped->layout = 1;
+ } else if(!empty($answerregs[ANSWER_REGEX_ANSWER_TYPE_MULTICHOICE_HORIZONTAL])) {
+ $wrapped->qtype = 'multichoice';
+ $wrapped->single = 1;
+ $wrapped->answernumbering = 0;
+ $wrapped->correctfeedback = '';
+ $wrapped->partiallycorrectfeedback = '';
+ $wrapped->incorrectfeedback = '';
+ $wrapped->layout = 2;
} else {
print_error('unknownquestiontype', 'question', '', $answerregs[2]);
return false;
diff --git a/question/type/multichoice/questiontype.php b/question/type/multichoice/questiontype.php
index 1134c689b5f..6549a530235 100644
--- a/question/type/multichoice/questiontype.php
+++ b/question/type/multichoice/questiontype.php
@@ -104,6 +104,9 @@ class question_multichoice_qtype extends default_questiontype {
}
$options->answers = implode(",",$answers);
$options->single = $question->single;
+ if(isset($question->layout)){
+ $options->layout = $question->layout;
+ }
$options->answernumbering = $question->answernumbering;
$options->shuffleanswers = $question->shuffleanswers;
$options->correctfeedback = trim($question->correctfeedback);