diff --git a/main/exercice/multiple_answer_combination.class.php b/main/exercice/multiple_answer_combination.class.php index 84ffc6d8f0..b5603530bf 100755 --- a/main/exercice/multiple_answer_combination.class.php +++ b/main/exercice/multiple_answer_combination.class.php @@ -26,131 +26,157 @@ class MultipleAnswerCombination extends Question } /** - * function which redifines Question::createAnswersForm - * @param $form FormValidator - * @param the answers number to display - */ - function createAnswersForm ($form) + * function which redifines Question::createAnswersForm + * @param $form FormValidator + * @param the answers number to display + */ + function createAnswersForm($form) { - $nb_answers = isset($_POST['nb_answers']) ? $_POST['nb_answers'] : 2; - $nb_answers += (isset($_POST['lessAnswers']) ? -1 : (isset($_POST['moreAnswers']) ? 1 : 0)); - $obj_ex = $_SESSION['objExercise']; - $html= '
| - '.get_lang('Number').' - | -- '.get_lang('True').' - | -- '.get_lang('Answer').' - | '; - // show column comment when feedback is enable - $html .=''.get_lang('Comment').' | '; - $html .= '' . get_lang('Number') . ' | +' . get_lang('True') . ' | +' . get_lang('Answer') . ' | '; + // show column comment when feedback is enable + $html .='' . get_lang('Comment') . ' | '; + $html .= ''; + $form->addElement('label', get_lang('Answers') . '{error} {element}  | ', 'correct['.$i.']');
-            $renderer->setElementTemplate('{error} {element}  | ', 'counter['.$i.']');
-            $renderer->setElementTemplate('{error} {element}  | ', 'answer['.$i.']');
-            $renderer->setElementTemplate('{error} {element}  | ', 'comment['.$i.']');
+        if (!empty($this->id)) {
+            $answer = new Answer($this->id);
+            $answer->read();
+            if (count($answer->nbrAnswers) > 0 && !$form->isSubmitted()) {
+                $nb_answers = $answer->nbrAnswers;
+            }
+        }
 
-			$answer_number=$form->addElement('text', 'counter['.$i.']', null,'value="'.$i.'"');
-			$answer_number->freeze();
+        $form->addElement('hidden', 'nb_answers');
+        $boxes_names = array();
 
-			$form->addElement('checkbox', 'correct['.$i.']', null, null, 'class="checkbox" style="margin-left: 0em;"');
-			$boxes_names[] = 'correct['.$i.']';
+        if ($nb_answers < 1) {
+            $nb_answers = 1;
+            Display::display_normal_message(get_lang('YouHaveToCreateAtLeastOneAnswer'));
+        }
 
-			$form->addElement('html_editor', 'answer['.$i.']',null, array(), array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100'));
-			$form->addRule('answer['.$i.']', get_lang('ThisFieldIsRequired'), 'required');
+        for ($i = 1; $i <= $nb_answers; ++$i) {
+            if (is_object($answer)) {
+                $defaults['answer[' . $i . ']'] = $answer->answer[$i];
+                $defaults['comment[' . $i . ']'] = $answer->comment[$i];
+                $defaults['weighting[' . $i . ']'] = float_format($answer->weighting[$i], 1);
+                $defaults['correct[' . $i . ']'] = $answer->correct[$i];
+            } else {
+                $defaults['answer[1]'] = get_lang('DefaultMultipleAnswer2');
+                $defaults['comment[1]'] = get_lang('DefaultMultipleComment2');
+                $defaults['correct[1]'] = true;
+                $defaults['weighting[1]'] = 10;
+
+                $defaults['answer[2]'] = get_lang('DefaultMultipleAnswer1');
+                $defaults['comment[2]'] = get_lang('DefaultMultipleComment1');
+                $defaults['correct[2]'] = false;
+            }
 
-            $form->addElement('html_editor', 'comment['.$i.']',null, array(), array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100'));
-			//only 1 answer the all deal ...
-			//$form->addElement('text', 'weighting['.$i.']',null, 'style="vertical-align:middle;margin-left: 0em;" size="5" value="10"');
+            $renderer = & $form->defaultRenderer();
+
+            $renderer->setElementTemplate(
+                '{error} {element}  | ',
+                'correct[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '{error} {element}  | ',
+                'counter[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '{error} {element}  | ',
+                'answer[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '{error} {element}  | ',
+                'comment[' . $i . ']'
+            );
+
+            $answer_number = $form->addElement('text', 'counter[' . $i . ']', null, 'value="' . $i . '"');
+            $answer_number->freeze();
+
+			$form->addElement('checkbox',
+                'correct[' . $i . ']',
+                null,
+                null,
+                'class="checkbox" style="margin-left: 0em;"'
+            );
+			$boxes_names[] = 'correct[' . $i . ']';
+
+			$form->addElement(
+                'html_editor',
+                'answer[' . $i . ']',
+                null,
+                array(),
+                array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100')
+            );
+			$form->addRule('answer[' . $i . ']', get_lang('ThisFieldIsRequired'), 'required');
+
+            $form->addElement(
+                'html_editor',
+                'comment[' . $i . ']',
+                null,
+                array(),
+                array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100')
+            );
+            //only 1 answer the all deal ...
+            //$form->addElement('text', 'weighting['.$i.']',null, 'style="vertical-align:middle;margin-left: 0em;" size="5" value="10"');
+
+            $form->addElement('html', '');
+        }
 
-			$form -> addElement ('html', '');
-		}
-		$form -> addElement ('html', '
|---|