Browse Source

Merge branch '1.10.x' of github.com:chamilo/chamilo-lms into 1.10.x

Yannick Warnier 10 years ago
parent
commit
edf8cac57d

+ 6 - 6
main/exercice/multiple_answer.class.php

@@ -141,17 +141,17 @@ class MultipleAnswer extends Question
 
         $form->add_multiple_required_rule($boxes_names, get_lang('ChooseAtLeastOneCheckbox'), 'multiple_required');
 
+        $buttonGroup = [];
+
         global $text, $class;
         if ($obj_ex->edit_exercise_in_lp == true) {
             // setting the save button here and not in the question class.php
-            $form->addButtonDelete(get_lang('LessAnswer'), 'lessAnswers');
-            $form->addButtonCreate(get_lang('PlusAnswer'), 'moreAnswers');
-            $form->addButtonSave($text, 'submitQuestion');
+            $buttonGroup[] = $form->addButtonDelete(get_lang('LessAnswer'), 'lessAnswers', true);
+            $buttonGroup[] = $form->addButtonCreate(get_lang('PlusAnswer'), 'moreAnswers', true);
+            $buttonGroup[] = $form->addButtonSave($text, 'submitQuestion', true);
         }
 
-        $renderer->setElementTemplate('<div class="form-group"><div class="col-sm-offset-2">{element}', 'lessAnswers');
-        $renderer->setElementTemplate('{element}', 'moreAnswers');
-        $renderer->setElementTemplate('{element}</div></div>', 'submitQuestion');
+        $form->addGroup($buttonGroup);
 
         $defaults['correct'] = $correct;
 

+ 157 - 110
main/exercice/multiple_answer_combination.class.php

@@ -26,131 +26,178 @@ 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= '<table class="data_table">
-					<tr style="text-align: center;">
-						<th width="10px">
-							'.get_lang('Number').'
-						</th>
-						<th width="10px">
-							'.get_lang('True').'
-						</th>
-						<th width="50%">
-							'.get_lang('Answer').'
-						</th>';
-						// show column comment when feedback is enable
-                        $html .='<th>'.get_lang('Comment').'</th>';
-						$html .= '</tr>';
-        $form -> addElement ('label', get_lang('Answers').'<br /> <img src="../img/fill_field.png">', $html);
-
-		$defaults = array();
-		$correct = 0;
+        $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 = '<table class="table table-striped table-hover">';
+        $html .= '<thead>';
+        $html .= '<tr>';
+        $html .= '<th width="10">' . get_lang('Number') . '</th>';
+        $html .= '<th width="10">' . get_lang('True') . '</th>';
+        $html .= '<th width="50%">' . get_lang('Comment') . '</th>';
+        $html .= '<th width="50%">' . get_lang('Answer') . '</th>';
+        $html .= '</tr>';
+        $html .= '</thead>';
+        $html .= '<tbody>';
+
+        $form->addHeader(get_lang('Answers'));
+        $form->addHtml($html);
+
+        $defaults = array();
+        $correct = 0;
         $answer = false;
-		if(!empty($this -> id))	{
-			$answer = new Answer($this -> id);
-			$answer -> read();
-			if (count($answer->nbrAnswers)>0 && !$form->isSubmitted()) {
-				$nb_answers = $answer->nbrAnswers;
-			}
-		}
-
-		$form -> addElement('hidden', 'nb_answers');
-		$boxes_names = array();
-
-		if ($nb_answers < 1) {
-			$nb_answers = 1;
-			Display::display_normal_message(get_lang('YouHaveToCreateAtLeastOneAnswer'));
-		}
-
-		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;
-			}
-			$renderer = & $form->defaultRenderer();
 
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'correct['.$i.']');
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'counter['.$i.']');
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'answer['.$i.']');
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', '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) {
+            $form->addHtml('<tr>');
 
-            $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"');
+            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;
 
-			$form -> addElement ('html', '</tr>');
-		}
-		$form -> addElement ('html', '</table>');
-		$form -> addElement ('html', '<br />');
+                $defaults['answer[2]'] = get_lang('DefaultMultipleAnswer1');
+                $defaults['comment[2]'] = get_lang('DefaultMultipleComment1');
+                $defaults['correct[2]'] = false;
+            }
 
-		$form -> add_multiple_required_rule ($boxes_names , get_lang('ChooseAtLeastOneCheckbox') , 'multiple_required');
+            $renderer = & $form->defaultRenderer();
 
-		//only 1 answer the all deal ...
-		$form->addElement('text', 'weighting[1]', get_lang('Score'), array('class' => "span1", 'value' => '10'));
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'correct[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'counter[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'answer[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'comment[' . $i . ']'
+            );
 
-		$navigator_info = api_get_navigator();
-		global $text, $class;
-		//ie6 fix
-		if ($obj_ex->edit_exercise_in_lp == true) {
-			if ($navigator_info['name']=='Internet Explorer' &&  $navigator_info['version']=='6') {
+            $answer_number = $form->addElement('text', 'counter[' . $i . ']', null, 'value="' . $i . '"');
+            $answer_number->freeze();
 
-                $form->addElement('submit', 'lessAnswers', get_lang('LessAnswer'),'class="btn minus"');
-                $form->addElement('submit', 'moreAnswers', get_lang('PlusAnswer'),'class="btn plus"');
-                $form->addElement('submit', 'submitQuestion', $text, 'class="'.$class.'"');
-			} else {
+			$form->addElement('checkbox',
+                'correct[' . $i . ']',
+                null,
+                null,
+                'class="checkbox" style="margin-left: 0em;"'
+            );
+			$boxes_names[] = 'correct[' . $i . ']';
 
-                $form->addElement('style_submit_button', 'lessAnswers', get_lang('LessAnswer'),'class="btn minus"');
-                $form->addElement('style_submit_button', 'moreAnswers', get_lang('PlusAnswer'),'class="btn plus"');
-                $form->addElement('style_submit_button', 'submitQuestion',$text, 'class="'.$class.'"');
-				// setting the save button here and not in the question class.php
-			}
-		}
-
-		$renderer->setElementTemplate('{element}&nbsp;','lessAnswers');
-		$renderer->setElementTemplate('{element}&nbsp;','submitQuestion');
-		$renderer->setElementTemplate('{element}&nbsp;','moreAnswers');
-		$form -> addElement ('html', '</div></div>');
-		$defaults['correct'] = $correct;
-		if (!empty($this->id)) {
-			$form -> setDefaults($defaults);
-		} else {
-			if ($this -> isContent == 1) {
-				$form -> setDefaults($defaults);
-			}
-		}
-		$form->setConstants(array('nb_answers' => $nb_answers));
-	}
+			$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->addHtml('</tr>');
+        }
+
+        $form->addElement('html', '</tbody></table>');
+
+        $form->add_multiple_required_rule($boxes_names, get_lang('ChooseAtLeastOneCheckbox'), 'multiple_required');
+
+        //only 1 answer the all deal ...
+        $form->addText('weighting[1]', get_lang('Score'), false, ['value' => 10]);
+
+        $navigator_info = api_get_navigator();
+
+        global $text, $class;
+        //ie6 fix
+        if ($obj_ex->edit_exercise_in_lp == true) {
+            $buttonGroup = [];
+
+            if ($navigator_info['name'] == 'Internet Explorer' && $navigator_info['version'] == '6') {
+                $buttonGroup[] = $form->createElement(
+                    'submit',
+                    'lessAnswers',
+                    get_lang('LessAnswer'),
+                    'class="btn minus"'
+                );
+                $buttonGroup[] = $form->createElement(
+                    'submit',
+                    'moreAnswers',
+                    get_lang('PlusAnswer'),
+                    'class="btn plus"'
+                );
+                $buttonGroup[] = $form->createElement(
+                    'submit',
+                    'submitQuestion',
+                    $text,
+                    'class="' . $class . '"'
+                );
+            } else {
+                // setting the save button here and not in the question class.php
+                $buttonGroup[] = $form->addButtonDelete(get_lang('LessAnswer'), 'lessAnswers', true);
+                $buttonGroup[] = $form->addButtonCreate(get_lang('PlusAnswer'), 'moreAnswers', true);
+                $buttonGroup[] = $form->addButtonSave($text, 'submitQuestion', true);
+            }
+
+            $form->addGroup($buttonGroup);
+        }
+
+        $defaults['correct'] = $correct;
+
+        if (!empty($this->id)) {
+            $form->setDefaults($defaults);
+        } else {
+            if ($this->isContent == 1) {
+                $form->setDefaults($defaults);
+            }
+        }
+
+        $form->setConstants(array('nb_answers' => $nb_answers));
+    }
+
+    /**
 	 * abstract function which creates the form to create / edit the answers of the question
 	 * @param the formvalidator instance
 	 * @param the answers number to display

+ 167 - 117
main/exercice/multiple_answer_true_false.class.php

@@ -27,177 +27,227 @@ class MultipleAnswerTrueFalse extends Question
 	}
 
 	/**
-	 * function which redefines Question::createAnswersForm
-	 * @param FormValidator $form
-	 */
+     * function which redefines Question::createAnswersForm
+     * @param FormValidator $form
+     */
     public function createAnswersForm($form)
     {
-		$nb_answers  = isset($_POST['nb_answers']) ? $_POST['nb_answers'] : 4;
-		// The previous default value was 2. See task #1759.
-		$nb_answers += (isset($_POST['lessAnswers']) ? -1 : (isset($_POST['moreAnswers']) ? 1 : 0));
+        $nb_answers = isset($_POST['nb_answers']) ? $_POST['nb_answers'] : 4;
+        // The previous default value was 2. See task #1759.
+        $nb_answers += (isset($_POST['lessAnswers']) ? -1 : (isset($_POST['moreAnswers']) ? 1 : 0));
 
         $course_id = api_get_course_int_id();
-		$obj_ex = $_SESSION['objExercise'];
+        $obj_ex = $_SESSION['objExercise'];
         $renderer = & $form->defaultRenderer();
         $defaults = array();
 
-		$html = '<table class="data_table">
-					<tr style="text-align: center;">
-						<th>
-							'.get_lang('Number').'
-						</th>
-						<th>
-							'.get_lang('True').'
-						</th>
-                        <th>
-                            '.get_lang('False').'
-                        </th>
-						<th>
-							'.get_lang('Answer').'
-						</th>';
+        $html = '<table class="table table-striped table-hover">';
+        $html .= '<thead>';
+        $html .= '<tr>';
+        $html .= '<th>' . get_lang('Number') . '</th>';
+        $html .= '<th>' . get_lang('True') . '</th>';
+        $html .= '<th>' . get_lang('False') . '</th>';
+        $html .= '<th>' . get_lang('Answer') . '</th>';
+
         // show column comment when feedback is enable
-        if ($obj_ex->selectFeedbackType() != EXERCISE_FEEDBACK_TYPE_EXAM ) {
-            $html .='<th>'.get_lang('Comment').'</th>';
+        if ($obj_ex->selectFeedbackType() != EXERCISE_FEEDBACK_TYPE_EXAM) {
+            $html .= '<th>' . get_lang('Comment') . '</th>';
         }
+
         $html .= '</tr>';
-        $form -> addElement('label', get_lang('Answers').'<br /> <img src="../img/fill_field.png">', $html);
+        $html .= '</thead>';
+        $html .= '<tbody>';
 
-		$correct = 0;
+        $form->addHeader(get_lang('Answers'));
+        $form->addHtml($html);
+
+        $correct = 0;
         $answer = null;
-		if (!empty($this -> id)) {
-			$answer = new Answer($this -> id);
-			$answer->read();
-			if (count($answer->nbrAnswers) > 0 && !$form->isSubmitted()) {
-				$nb_answers = $answer->nbrAnswers;
-			}
-		}
 
-		$form -> addElement('hidden', 'nb_answers');
-		$boxes_names = array();
+        if (!empty($this->id)) {
+            $answer = new Answer($this->id);
+            $answer->read();
 
-		if ($nb_answers < 1) {
-			$nb_answers = 1;
-			Display::display_normal_message(get_lang('YouHaveToCreateAtLeastOneAnswer'));
-		}
+            if (count($answer->nbrAnswers) > 0 && !$form->isSubmitted()) {
+                $nb_answers = $answer->nbrAnswers;
+            }
+        }
 
-        // Can be more options
-        $option_data = Question::readQuestionOption($this->id, $course_id);
+        $form->addElement('hidden', 'nb_answers');
+        $boxes_names = array();
 
-		for ($i = 1 ; $i <= $nb_answers ; ++$i) {
+        if ($nb_answers < 1) {
+            $nb_answers = 1;
+            Display::display_normal_message(get_lang('YouHaveToCreateAtLeastOneAnswer'));
+        }
 
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'correct['.$i.']');
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'counter['.$i.']');
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'answer['.$i.']');
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'comment['.$i.']');
+        // Can be more options
+        $option_data = Question::readQuestionOption($this->id, $course_id);
 
-            $answer_number=$form->addElement('text', 'counter['.$i.']',null,'value="'.$i.'"');
+        for ($i = 1; $i <= $nb_answers; ++$i) {
+            $form->addHtml('<tr>');
+
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'correct[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'counter[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'answer[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'comment[' . $i . ']'
+            );
+
+            $answer_number = $form->addElement('text', 'counter[' . $i . ']', null, 'value="' . $i . '"');
             $answer_number->freeze();
 
-			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);
+            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);
 
                 $correct = $answer->correct[$i];
-                $defaults['correct['.$i.']']    = $correct;
+                $defaults['correct[' . $i . ']'] = $correct;
 
                 $j = 1;
                 if (!empty($option_data)) {
                     foreach ($option_data as $id => $data) {
-                        $form->addElement('radio', 'correct['.$i.']', null, null, $id);
+                        $form->addElement('radio', 'correct[' . $i . ']', null, null, $id);
+
                         $j++;
+
                         if ($j == 3) {
-                        	break;
+                            break;
                         }
                     }
                 }
-			} else {
-                $form->addElement('radio', 'correct['.$i.']', null, null, 1);
-                $form->addElement('radio', 'correct['.$i.']', null, null, 2);
-
-                $defaults['answer['.$i.']']     = '';
-                $defaults['comment['.$i.']']    = '';
-                $defaults['correct['.$i.']']    = '';
-			}
+            } else {
+                $form->addElement('radio', 'correct[' . $i . ']', null, null, 1);
+                $form->addElement('radio', 'correct[' . $i . ']', null, null, 2);
 
-			$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');
-
-			// show comment when feedback is enable
-			if ($obj_ex->selectFeedbackType() != EXERCISE_FEEDBACK_TYPE_EXAM) {
-				$form->addElement('html_editor', 'comment['.$i.']',null, array(), array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100'));
-			}
-			$form->addElement ('html', '</tr>');
-		}
-
-		$form->addElement('html', '</table>');
-		$form->addElement('html', '<br />');
+                $defaults['answer[' . $i . ']'] = '';
+                $defaults['comment[' . $i . ']'] = '';
+                $defaults['correct[' . $i . ']'] = '';
+            }
 
-        $form->addElement('html', '<table><tr><td></td><td>'.get_lang('Correct').'</td><td>'.get_lang('Wrong').'</td><td>'.get_lang('DoubtScore').'</td></tr>');
+            $boxes_names[] = 'correct[' . $i . ']';
+
+            $form->addHtmlEditor(
+                "answer[$i]",
+                get_lang('ThisFieldIsRequired'),
+                true,
+                true,
+                ['ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100']
+            );
+
+            // show comment when feedback is enable
+            if ($obj_ex->selectFeedbackType() != EXERCISE_FEEDBACK_TYPE_EXAM) {
+                $form->addElement(
+                    'html_editor',
+                    'comment[' . $i . ']',
+                    null,
+                    array(),
+                    array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100')
+                );
+            }
 
-        $renderer->setElementTemplate('<tr><td><span class="form_required">*</span>'.get_lang('Score').'&nbsp;&nbsp;&nbsp;&nbsp;</td><td>{element} &nbsp;&nbsp; <br /><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --></td>', 'option[1]');
-        $renderer->setElementTemplate('<td>{element} &nbsp;&nbsp;<br /><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --></td>', 'option[2]');
-        $renderer->setElementTemplate('<td>{element} &nbsp;&nbsp;<br /><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --></td>', 'option[3]');
+            $form->addHtml('</tr>');
+        }
 
+        $form->addHtml('</tbody></table>');
+
+        $correctInputTemplate = '<div class="form-group">';
+        $correctInputTemplate .= '<label class="col-sm-2 control-label">';
+        $correctInputTemplate .= '<span class="form_required">*</span>' . get_lang('Score');
+        $correctInputTemplate .= '</label>';
+        $correctInputTemplate .= '<div class="col-sm-8">';
+        $correctInputTemplate .= '<table>';
+        $correctInputTemplate .= '<tr>';
+        $correctInputTemplate .= '<td>';
+        $correctInputTemplate .= get_lang('Correct') . '{element}';
+        $correctInputTemplate .= '<!-- BEGIN error --><span class="form_error">{error}</span><!-- END error -->';
+        $correctInputTemplate .= '</td>';
+
+        $wrongInputTemplate = '<td>';
+        $wrongInputTemplate .= get_lang('Wrong') . '{element}';
+        $wrongInputTemplate .= '<!-- BEGIN error --><span class="form_error">{error}</span><!-- END error -->';
+        $wrongInputTemplate .= '</td>';
+
+        $doubtScoreInputTempalte = '<td>' . get_lang('DoubtScore') . '<br>{element}';
+        $doubtScoreInputTempalte .= '<!-- BEGIN error --><span class="form_error">{error}</span><!-- END error -->';
+        $doubtScoreInputTempalte .= '</td>';
+        $doubtScoreInputTempalte .= '</tr>';
+        $doubtScoreInputTempalte .= '</table>';
+        $doubtScoreInputTempalte .= '</div>';
+        $doubtScoreInputTempalte .= '</div>';
+
+        $renderer->setElementTemplate($correctInputTemplate, 'option[1]');
+        $renderer->setElementTemplate($wrongInputTemplate, 'option[2]');
+        $renderer->setElementTemplate($doubtScoreInputTempalte, 'option[3]');
+ 
         // 3 scores
-        $form->addElement('text', 'option[1]', get_lang('Correct'),   array('class'=>'span1','value'=>'1'));
-        $form->addElement('text', 'option[2]', get_lang('Wrong'),     array('class'=>'span1','value'=>'-0.5'));
-        $form->addElement('text', 'option[3]', get_lang('DoubtScore'),array('class'=>'span1','value'=>'0'));
+        $form->addElement('text', 'option[1]', get_lang('Correct'), array('class' => 'span1', 'value' => '1'));
+        $form->addElement('text', 'option[2]', get_lang('Wrong'), array('class' => 'span1', 'value' => '-0.5'));
+        $form->addElement('text', 'option[3]', get_lang('DoubtScore'), array('class' => 'span1', 'value' => '0'));
 
         $form->addRule('option[1]', get_lang('ThisFieldIsRequired'), 'required');
         $form->addRule('option[2]', get_lang('ThisFieldIsRequired'), 'required');
         $form->addRule('option[3]', get_lang('ThisFieldIsRequired'), 'required');
 
-        $form -> addElement ('html', '</tr><table>');
-        $form -> addElement('hidden', 'options_count', 3);
-        $form -> addElement ('html', '</table><br /><br />');
+        $form->addElement('hidden', 'options_count', 3);
 
         //Extra values True, false,  Dont known
         if (!empty($this->extra)) {
-            $scores = explode(':',$this->extra);
+            $scores = explode(':', $this->extra);
+
             if (!empty($scores)) {
-                for ($i = 1; $i <=3; $i++) {
-                    $defaults['option['.$i.']']	= $scores[$i-1];
+                for ($i = 1; $i <= 3; $i++) {
+                    $defaults['option[' . $i . ']'] = $scores[$i - 1];
                 }
             }
         }
 
-		$navigator_info = api_get_navigator();
+        $navigator_info = api_get_navigator();
 
-		global $text, $class;
-		if ($obj_ex->edit_exercise_in_lp == true) {
-			//ie6 fix
-			if ($navigator_info['name']=='Internet Explorer' &&  $navigator_info['version']=='6') {
+        global $text, $class;
 
-                $form->addElement('submit', 'lessAnswers', get_lang('LessAnswer'),'class="btn minus"');
-                $form->addElement('submit', 'moreAnswers', get_lang('PlusAnswer'),'class="btn plus"');
-                $form->addElement('submit', 'submitQuestion',$text, 'class="'.$class.'"');
-			} else {
+        if ($obj_ex->edit_exercise_in_lp == true) {
+            $buttonGroup = [];
+
+            //ie6 fix
+            if ($navigator_info['name'] == 'Internet Explorer' && $navigator_info['version'] == '6') {
+                $buttonGroup[] = $form->addElement('submit', 'lessAnswers', get_lang('LessAnswer'), 'class="btn minus"');
+                $buttonGroup[] = $form->addElement('submit', 'moreAnswers', get_lang('PlusAnswer'), 'class="btn plus"');
+                $buttonGroup[] = $form->addElement('submit', 'submitQuestion', $text, 'class="' . $class . '"');
+            } else {
                 // setting the save button here and not in the question class.php
+                $buttonGroup[] = $form->addButtonDelete(get_lang('LessAnswer'), 'lessAnswers', true);
+                $buttonGroup[] = $form->addButtonCreate(get_lang('PlusAnswer'), 'moreAnswers', true);
+                $buttonGroup[] = $form->addButtonSave($text, 'submitQuestion', true);
+            }
 
-                $form->addElement('style_submit_button', 'lessAnswers', get_lang('LessAnswer'),'class="btn minus"');
-                $form->addElement('style_submit_button', 'moreAnswers', get_lang('PlusAnswer'),'class="btn plus"');
-                $form->addElement('style_submit_button', 'submitQuestion',$text, 'class="'.$class.'"');
-			}
-		}
-		$renderer->setElementTemplate('{element}&nbsp;','lessAnswers');
-		$renderer->setElementTemplate('{element}&nbsp;','submitQuestion');
-		$renderer->setElementTemplate('{element}&nbsp;','moreAnswers');
-		$form -> addElement ('html', '</div></div>');
-		$defaults['correct'] = $correct;
-
-		if (!empty($this -> id)) {
-			$form -> setDefaults($defaults);
-		} else {
-			//if ($this -> isContent == 1) {
-				$form -> setDefaults($defaults);
-			//}
-		}
-		$form->setConstants(array('nb_answers' => $nb_answers));
-	}
+            $form->addGroup($buttonGroup);
+        }
 
-	/**
+        $defaults['correct'] = $correct;
+
+        if (!empty($this->id)) {
+            $form->setDefaults($defaults);
+        } else {
+            //if ($this -> isContent == 1) {
+            $form->setDefaults($defaults);
+            //}
+        }
+        $form->setConstants(array('nb_answers' => $nb_answers));
+    }
+
+    /**
 	 * abstract function which creates the form to create / edit the answers of the question
 	 * @param FormValidator $form
 	 */

+ 14 - 22
main/exercice/unique_answer.class.php

@@ -59,20 +59,18 @@ class UniqueAnswer extends Question
 
         if ($obj_ex->selectFeedbackType() == EXERCISE_FEEDBACK_TYPE_DIRECT) {
             //Scenario
-            $editor_config['Width'] = '250';
-            $editor_config['Height'] = '110';
-            $comment_title = '<th width="50%" >' . get_lang('Comment') . '</th>';
-            $feedback_title = '<th width="50%" >' . get_lang('Scenario') . '</th>';
+            $comment_title = '<th>' . get_lang('Comment') . '</th>';
+            $feedback_title = '<th>' . get_lang('Scenario') . '</th>';
         } else {
-            $comment_title = '<th width="50%">' . get_lang('Comment') . '</th>';
+            $comment_title = '<th >' . get_lang('Comment') . '</th>';
         }
 
         $html = '<table class="table table-striped table-hover">
             <thead>
                 <tr style="text-align: center;">
                     <th width="10">' . get_lang('Number') . '</th>
-                    <th width="10" >' . get_lang('True') . '</th>
-                    <th width="50%">' . get_lang('Answer') . '</th>
+                    <th>' . get_lang('True') . '</th>
+                    <th>' . get_lang('Answer') . '</th>
                         ' . $comment_title . '
                         ' . $feedback_title . '
                     <th width="10">' . get_lang('Weighting') . '</th>
@@ -265,38 +263,32 @@ class UniqueAnswer extends Question
 
         global $text, $class;
 
+        $buttonGroup = [];
         //ie6 fix
         if ($obj_ex->edit_exercise_in_lp == true) {
             if ($navigator_info['name'] == 'Internet Explorer' && $navigator_info['version'] == '6') {
-                $form->addElement(
+                $buttonGroup[] = $form->createElement(
                     'submit',
                     'lessAnswers',
                     get_lang('LessAnswer'),
                     'class="btn btn-primary"'
                 );
-                $form->addElement(
+                $buttonGroup[] = $form->createElement(
                     'submit',
                     'moreAnswers',
                     get_lang('PlusAnswer'),
                     'class="btn btn-primary"'
                 );
-                $form->addElement(
-                    'submit',
-                    'submitQuestion',
-                    $text,
-                    'class="' . $class . '"'
-                );
+                $buttonGroup[] = $form->createElement('submit', 'submitQuestion', $text, 'class="' . $class . '"');
             } else {
                 //setting the save button here and not in the question class.php
-                $form->addButtonDelete(get_lang('LessAnswer'), 'lessAnswers');
-                $form->addButtonCreate(get_lang('PlusAnswer'), 'moreAnswers');
-                $form->addButtonSave($text, 'submitQuestion');
+                $buttonGroup[] = $form->addButtonDelete(get_lang('LessAnswer'), 'lessAnswers', true);
+                $buttonGroup[] = $form->addButtonCreate(get_lang('PlusAnswer'), 'moreAnswers', true);
+                $buttonGroup[] = $form->addButtonSave($text, 'submitQuestion', true);
             }
-        }
 
-        $renderer->setElementTemplate('<div class="form-group"><div class="col-sm-offset-2">{element}', 'lessAnswers');
-        $renderer->setElementTemplate('{element}', 'moreAnswers');
-        $renderer->setElementTemplate('{element}</div></div>', 'submitQuestion');
+            $form->addGroup($buttonGroup);
+        }
 
         // We check the first radio button to be sure a radio button will be check
         if ($correct == 0) {

+ 197 - 177
main/exercice/unique_answer_no_option.class.php

@@ -27,78 +27,72 @@ class UniqueAnswerNoOption extends Question
 	}
 
 	/**
-	 * function which redifines Question::createAnswersForm
-	 * @param the formvalidator instance
-	 * @param the answers number to display
-	 */
-	function createAnswersForm ($form)
+     * function which redifines Question::createAnswersForm
+     * @param the formvalidator instance
+     * @param the answers number to display
+     */
+    function createAnswersForm($form)
     {
-		// getting the exercise list
-		$obj_ex = $_SESSION['objExercise'];
-
-		$editor_config = array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '125');
-
-		//this line define how many question by default appear when creating a choice question
-		$nb_answers  = isset($_POST['nb_answers']) ? (int) $_POST['nb_answers'] : 3;  // The previous default value was 2. See task #1759.
-		$nb_answers += (isset($_POST['lessAnswers']) ? -1 : (isset($_POST['moreAnswers']) ? 1 : 0));
-
-		/*
-	 		Types of Feedback
-	 		$feedback_option[0]=get_lang('Feedback');
-			$feedback_option[1]=get_lang('DirectFeedback');
-			$feedback_option[2]=get_lang('NoFeedback');
-	 	*/
-
-		$feedback_title='';
-		$comment_title='';
-
-		if ($obj_ex->selectFeedbackType()==1) {
-			$editor_config['Width']  = '250';
-			$editor_config['Height'] = '110';
-			$comment_title = '<th width="500" >'.get_lang('Comment').'</th>';
-			$feedback_title = '<th width="350px" >'.get_lang('Scenario').'</th>';
-		}
-        else {
-            $comment_title = '<th>'.get_lang('Comment').'</th>';
+        // getting the exercise list
+        $obj_ex = $_SESSION['objExercise'];
+
+        $editor_config = array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '125');
+
+        //this line define how many question by default appear when creating a choice question
+        $nb_answers = isset($_POST['nb_answers']) ? (int) $_POST['nb_answers'] : 3;  // The previous default value was 2. See task #1759.
+        $nb_answers += (isset($_POST['lessAnswers']) ? -1 : (isset($_POST['moreAnswers']) ? 1 : 0));
+
+        /*
+          Types of Feedback
+          $feedback_option[0]=get_lang('Feedback');
+          $feedback_option[1]=get_lang('DirectFeedback');
+          $feedback_option[2]=get_lang('NoFeedback');
+         */
+
+        $feedback_title = '';
+        $comment_title = '';
+
+        if ($obj_ex->selectFeedbackType() == 1) {
+            $editor_config['Width'] = '250';
+            $editor_config['Height'] = '110';
+            $comment_title = '<th width="50%" >' . get_lang('Comment') . '</th>';
+            $feedback_title = '<th width="50%" >' . get_lang('Scenario') . '</th>';
+        } else {
+            $comment_title = '<th width="50%">' . get_lang('Comment') . '</th>';
         }
 
-		$html='<table class="data_table">
-				<tr style="text-align: center;">
-					<th width="10px">
-						'.get_lang('Number').'
-					</th>
-					<th width="10px" >
-						'.get_lang('True').'
-					</th>
-					<th width="50%">
-						'.get_lang('Answer').'
-					</th>
-						'.$comment_title.'
-						'.$feedback_title.'
-					<th width="60px">
-						'.get_lang('Weighting').'
-					</th>
-				</tr>';
-
-        $form->addElement('label', get_lang('Answers').'<br /> <img src="../img/fill_field.png">', $html);
-
-		$defaults = array();
-		$correct = 0;
+        $html = '<table class="table table-striped table-hover">';
+        $html .= '<thead>';
+        $html .= '<tr>';
+        $html .= '<th>' . get_lang('Number') . '</th>';
+        $html .= '<th>' . get_lang('True') . '</th>';
+        $html .= '<th width="50%">' . get_lang('Answer') . '</th>';
+        $html .= $comment_title . $feedback_title;
+        $html .= '<th>' . get_lang('Weighting') . '</th>';
+        $html .= '</tr>';
+        $html .= '</thead>';
+        $html .= '<tbody>';
+
+        $form->addHeader(get_lang('Answers'));
+        $form->addHtml($html);
+
+        $defaults = array();
+        $correct = 0;
         $answer = false;
-		if (!empty($this -> id)) {
-			$answer = new Answer($this -> id);
-			$answer -> read();
-			if (count($answer->nbrAnswers)>0 && !$form->isSubmitted()) {
-				$nb_answers = $answer->nbrAnswers;
-			}
-		}
+        if (!empty($this->id)) {
+            $answer = new Answer($this->id);
+            $answer->read();
+            if (count($answer->nbrAnswers) > 0 && !$form->isSubmitted()) {
+                $nb_answers = $answer->nbrAnswers;
+            }
+        }
 
-		$temp_scenario = array();
+        $temp_scenario = array();
 
-		if ($nb_answers < 1) {
-			$nb_answers = 1;
-			Display::display_normal_message(get_lang('YouHaveToCreateAtLeastOneAnswer'));
-		}
+        if ($nb_answers < 1) {
+            $nb_answers = 1;
+            Display::display_normal_message(get_lang('YouHaveToCreateAtLeastOneAnswer'));
+        }
         $editQuestion = isset($_GET['editQuestion']) ? $_GET['editQuestion'] : false;
         if ($editQuestion) {
             //fixing $nb_answers
@@ -106,173 +100,199 @@ class UniqueAnswerNoOption extends Question
             $count = 1;
             if (isset($_POST['lessAnswers'])) {
                 if (!isset($_SESSION['less_answer'])) {
-                    $_SESSION['less_answer'] = $this -> id;
+                    $_SESSION['less_answer'] = $this->id;
                     $nb_answers--;
                 }
             }
-            for ($k = 1 ; $k <= $nb_answers; ++$k) {
+            for ($k = 1; $k <= $nb_answers; ++$k) {
                 if ($answer->position[$k] != '666') {
                     $new_list[$count] = $count;
                     $count++;
                 }
             }
         } else {
-            for ($k = 1 ; $k <= $nb_answers; ++$k) {
+            for ($k = 1; $k <= $nb_answers; ++$k) {
                 $new_list[$k] = $k;
             }
         }
 
         $i = 1;
-		//for ($k = 1 ; $k <= $real_nb_answers; $k++) {
+        //for ($k = 1 ; $k <= $real_nb_answers; $k++) {
         foreach ($new_list as $key) {
             $i = $key;
-			$form -> addElement ('html', '<tr>');
-
-			if (is_object($answer)) {
-			    if($answer->position[$i] == 666) {
-			        //we set nothing
-			    } else {
-    				if ($answer->correct[$i]) {
-    					$correct = $i;
-    				}
+            $form->addElement('html', '<tr>');
+
+            if (is_object($answer)) {
+                if ($answer->position[$i] == 666) {
+                    //we set nothing
+                } else {
+                    if ($answer->correct[$i]) {
+                        $correct = $i;
+                    }
                     $answer_result = $answer->answer[$i];
                     $weight_result = float_format($answer->weighting[$i], 1);
                     if ($nb_answers == $i) {
                         $weight_result = '0';
                     }
 
-    				$defaults['answer['.$i.']']    = $answer_result;
-    				$defaults['comment['.$i.']']   = $answer->comment[$i];
-    				$defaults['weighting['.$i.']'] = $weight_result;
-
-    				$item_list=explode('@@',$answer -> destination[$i]);
-
-    				$try       = $item_list[0];
-    				$lp        = $item_list[1];
-    				$list_dest = $item_list[2];
-    				$url       = $item_list[3];
-
-    				if ($try==0)
-    					$try_result=0;
-    				else
-    					$try_result=1;
+                    $defaults['answer[' . $i . ']'] = $answer_result;
+                    $defaults['comment[' . $i . ']'] = $answer->comment[$i];
+                    $defaults['weighting[' . $i . ']'] = $weight_result;
 
-    				if ($url==0)
-    					$url_result='';
-    				else
-    					$url_result=$url;
+                    $item_list = explode('@@', $answer->destination[$i]);
 
-    				$temp_scenario['url'.$i]        = $url_result;
-    				$temp_scenario['try'.$i]        = $try_result;
-    				$temp_scenario['lp'.$i]         = $lp;
-    				$temp_scenario['destination'.$i]= $list_dest;
-			    }
-			}
+                    $try = $item_list[0];
+                    $lp = $item_list[1];
+                    $list_dest = $item_list[2];
+                    $url = $item_list[3];
 
-			$defaults['scenario']=$temp_scenario;
-			$renderer = & $form->defaultRenderer();
+                    if ($try == 0)
+                        $try_result = 0;
+                    else
+                        $try_result = 1;
 
-			$renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'correct');
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'counter['.$i.']');
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'answer['.$i.']');
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'comment['.$i.']');
-            $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'weighting['.$i.']');
+                    if ($url == 0)
+                        $url_result = '';
+                    else
+                        $url_result = $url;
 
+                    $temp_scenario['url' . $i] = $url_result;
+                    $temp_scenario['try' . $i] = $try_result;
+                    $temp_scenario['lp' . $i] = $lp;
+                    $temp_scenario['destination' . $i] = $list_dest;
+                }
+            }
 
-			$answer_number=$form->addElement('text', 'counter['.$i.']', null,'value="'.$i.'"');
-			$answer_number->freeze();
-
-
-			$form->addElement('radio', 'correct', null, null, $i, 'class="checkbox" style="margin-left: 0em;"');
-			$form->addElement('html_editor', 'answer['.$i.']', null, array(), $editor_config);
-
-            $form->addElement('html_editor', 'comment['.$i.']', null, array(), $editor_config);
-			$form->addElement('text', 'weighting['.$i.']', null, array('class' => "span1", 'value' => '0'));
-			$form->addElement('html', '</tr>');
+            $defaults['scenario'] = $temp_scenario;
+            $renderer = & $form->defaultRenderer();
+
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'correct'
+            );
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'counter[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'answer[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'comment[' . $i . ']'
+            );
+            $renderer->setElementTemplate(
+                '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+                'weighting[' . $i . ']'
+            );
+
+            $answer_number = $form->addElement('text', 'counter[' . $i . ']', null, 'value="' . $i . '"');
+            $answer_number->freeze();
+
+
+            $form->addElement('radio', 'correct', null, null, $i, 'class="checkbox" style="margin-left: 0em;"');
+            $form->addElement('html_editor', 'answer[' . $i . ']', null, array(), $editor_config);
+
+            $form->addElement('html_editor', 'comment[' . $i . ']', null, array(), $editor_config);
+            $form->addElement('text', 'weighting[' . $i . ']', null, array('class' => "span1", 'value' => '0'));
+            $form->addElement('html', '</tr>');
             $i++;
-		}
+        }
 
-		if (empty($this -> id)) {
-		    $form->addElement('hidden', 'new_question', 1);
-		}
+        if (empty($this->id)) {
+            $form->addElement('hidden', 'new_question', 1);
+        }
 
         //Adding the "I don't know" question answer
         //if (empty($this -> id)) {
         $i = 666;
-        $form -> addElement ('html', '<tr>');
+        $form->addHtml('<tr>');
 
-        $defaults['answer['.$i.']']     = get_lang('DontKnow');
-        $defaults['weighting['.$i.']']  = 0;
-        $defaults['scenario']=$temp_scenario;
+        $defaults['answer[' . $i . ']'] = get_lang('DontKnow');
+        $defaults['weighting[' . $i . ']'] = 0;
+        $defaults['scenario'] = $temp_scenario;
         $renderer = & $form->defaultRenderer();
 
-        $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'correct');
-        $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'counter['.$i.']');
-        $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'answer['.$i.']');
-        $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'comment['.$i.']');
-        $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'weighting['.$i.']');
-
-        $answer_number=$form->addElement('text', 'counter['.$i.']',null,'value="-"');
+        $renderer->setElementTemplate(
+            '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+            'correct'
+        );
+        $renderer->setElementTemplate(
+            '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+            'counter[' . $i . ']'
+        );
+        $renderer->setElementTemplate(
+            '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+            'answer[' . $i . ']'
+        );
+        $renderer->setElementTemplate(
+            '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+            'comment[' . $i . ']'
+        );
+        $renderer->setElementTemplate(
+            '<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>',
+            'weighting[' . $i . ']'
+        );
+
+        $answer_number = $form->addElement('text', 'counter[' . $i . ']', null, 'value="-"');
         $answer_number->freeze();
 
-        $form->addElement('hidden', 'position['.$i.']', '666');
+        $form->addElement('hidden', 'position[' . $i . ']', '666');
 
         $form->addElement('radio', 'correct', null, null, $i, 'class="checkbox" style="margin-left: 0em;"');
-        $form->addElement('html_editor', 'answer['.$i.']', null, array(), $editor_config);
+        $form->addElement('html_editor', 'answer[' . $i . ']', null, array(), $editor_config);
 
-        $form->addRule('answer['.$i.']', get_lang('ThisFieldIsRequired'), 'required');
+        $form->addRule('answer[' . $i . ']', get_lang('ThisFieldIsRequired'), 'required');
 
 
-        $form->addElement('html_editor', 'comment['.$i.']', null, array(), $editor_config);
+        $form->addElement('html_editor', 'comment[' . $i . ']', null, array(), $editor_config);
 
         //$form->addElement('select', 'destination'.$i, get_lang('SelectQuestion').' : ',$select_question,'multiple');
 
-        $form->addElement('text', 'weighting['.$i.']', null, array('class' => "span1", 'value' => '0', 'readonly' =>'readonly'));
-        $form->addElement ('html', '</tr>');
+        $form->addText("weighting[$i]", null, false, ['value' => 0, 'readonly' => 'readonly']);
+        
+        $form->addHTml('</tr>');
+        $form->addHtml('</tbody></table>');
 
+        $navigator_info = api_get_navigator();
 
-		$form -> addElement ('html', '</table>');
-		$form -> addElement ('html', '<br />');
-		$navigator_info = api_get_navigator();
+        $buttonGroup = [];
 
-		global $text, $class;
-		//ie6 fix
-		if ($obj_ex->edit_exercise_in_lp == true) {
-			if ($navigator_info['name']=='Internet Explorer' &&  $navigator_info['version']=='6') {
-                $form->addElement('submit', 'moreAnswers', get_lang('PlusAnswer'),'class="btn plus"');
-				$form->addElement('submit', 'lessAnswers', get_lang('LessAnswer'),'class="btn minus"');
-                $form->addElement('submit','submitQuestion',$text, 'class="'.$class.'"');
-			} else {
+        global $text, $class;
+        //ie6 fix
+        if ($obj_ex->edit_exercise_in_lp == true) {
+            if ($navigator_info['name'] == 'Internet Explorer' && $navigator_info['version'] == '6') {
+                $buttonGroup[] = $form->createElement('submit', 'moreAnswers', get_lang('PlusAnswer'), 'class="btn plus"');
+                $buttonGroup[] = $form->createElement('submit', 'lessAnswers', get_lang('LessAnswer'), 'class="btn minus"');
+                $buttonGroup[] = $form->createElement('submit', 'submitQuestion', $text, 'class="' . $class . '"');
+            } else {
                 //setting the save button here and not in the question class.php
-                $form->addElement('style_submit_button', 'lessAnswers', get_lang('LessAnswer'),'class="btn minus"');
-                $form->addElement('style_submit_button', 'moreAnswers', get_lang('PlusAnswer'),'class="btn plus"');
-                $form->addElement('style_submit_button','submitQuestion',$text, 'class="'.$class.'"');
-			}
-		}
-		$renderer->setElementTemplate('{element}&nbsp;','submitQuestion');
-		$renderer->setElementTemplate('{element}&nbsp;','lessAnswers');
-		$renderer->setElementTemplate('{element}&nbsp;','moreAnswers');
-
-		$form -> addElement ('html', '</div></div>');
+                $buttonGroup[] = $form->addButtonDelete(get_lang('LessAnswer'), 'lessAnswers', true);
+                $buttonGroup[] = $form->addButtonCreate(get_lang('PlusAnswer'), 'moreAnswers', true);
+                $buttonGroup[] = $form->addButtonSave($text, 'submitQuestion', true);
+            }
 
-		//We check the first radio button to be sure a radio button will be check
-		if ($correct==0) {
-			$correct=1;
-		}
-		$defaults['correct'] = $correct;
+            $form->addGroup($buttonGroup);
+        }
 
-		if (!empty($this -> id)) {
-			$form -> setDefaults($defaults);
-		} else {
-            $form -> setDefaults($defaults);
-		}
+        //We check the first radio button to be sure a radio button will be check
+        if ($correct == 0) {
+            $correct = 1;
+        }
+        $defaults['correct'] = $correct;
 
-		$form->addElement('hidden', 'nb_answers');
-	    $form->setConstants(array('nb_answers' => $nb_answers));
-	}
+        if (!empty($this->id)) {
+            $form->setDefaults($defaults);
+        } else {
+            $form->setDefaults($defaults);
+        }
 
+        $form->addElement('hidden', 'nb_answers');
+        $form->setConstants(array('nb_answers' => $nb_answers));
+    }
 
-	/**
+    /**
 	 * Function which creates the form to create / edit the answers of the question
 	 * @param the formvalidator instance
 	 * @param the answers number to display

+ 1 - 1
plugin/advanced_subscription/views/css/style.css

@@ -82,5 +82,5 @@
 }
 
 .advanced-subscription-decision-column {
-    width: 165px;
+    width: 200px;
 }