diff --git a/main/exercice/multiple_answer_true_false.class.php b/main/exercice/multiple_answer_true_false.class.php index 1a4000bc16..3da34ed08a 100755 --- a/main/exercice/multiple_answer_true_false.class.php +++ b/main/exercice/multiple_answer_true_false.class.php @@ -27,177 +27,213 @@ 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 = ' + $html = '
- - - - '; + + + + '; // show column comment when feedback is enable - if ($obj_ex->selectFeedbackType() != EXERCISE_FEEDBACK_TYPE_EXAM ) { - $html .=''; + if ($obj_ex->selectFeedbackType() != EXERCISE_FEEDBACK_TYPE_EXAM) { + $html .=''; } $html .= ''; - $form -> addElement('label', get_lang('Answers').'
', $html); - $correct = 0; + $form->addElement('label', get_lang('Answers') . '
', $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('', 'correct['.$i.']'); - $renderer->setElementTemplate('', 'counter['.$i.']'); - $renderer->setElementTemplate('', 'answer['.$i.']'); - $renderer->setElementTemplate('', '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) { + $renderer->setElementTemplate( + '', + 'correct[' . $i . ']' + ); + $renderer->setElementTemplate( + '', + 'counter[' . $i . ']' + ); + $renderer->setElementTemplate( + '', + 'answer[' . $i . ']' + ); + $renderer->setElementTemplate( + '', + '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.']'] = ''; - } - - $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'); + } else { + $form->addElement('radio', 'correct[' . $i . ']', null, null, 1); + $form->addElement('radio', 'correct[' . $i . ']', null, null, 2); - // 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', ''); - } + $defaults['answer[' . $i . ']'] = ''; + $defaults['comment[' . $i . ']'] = ''; + $defaults['correct[' . $i . ']'] = ''; + } - $form->addElement('html', '
- '.get_lang('Number').' - - '.get_lang('True').' - - '.get_lang('False').' - - '.get_lang('Answer').' - ' . get_lang('Number') . '' . get_lang('True') . '' . get_lang('False') . '' . get_lang('Answer') . ''.get_lang('Comment').'' . get_lang('Comment') . '
{error}
{element}
{error}
{element}
{error}
{element}
{error}
{element}
{error}
{element}
{error}
{element}
{error}
{element}
{error}
{element}
'); - $form->addElement('html', '
'); + $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', ''); + $form->addElement('html', ''); + } - $renderer->setElementTemplate('', 'option[1]'); - $renderer->setElementTemplate('', 'option[2]'); - $renderer->setElementTemplate('', 'option[3]'); + $form->addElement('html', '
'.get_lang('Correct').''.get_lang('Wrong').''.get_lang('DoubtScore').'
*'.get_lang('Score').'    {element}   
{error}
{element}   
{error}
{element}   
{error}
'); + $form->addElement('html', '
'); + + $form->addElement( + 'html', + '' + ); + + $renderer->setElementTemplate( + '', + 'option[1]' + ); + $renderer->setElementTemplate( + '', + 'option[2]' + ); + $renderer->setElementTemplate( + '', + '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', '
' . get_lang('Correct') . '' . get_lang('Wrong') . '' . get_lang('DoubtScore') . '
*' . get_lang('Score') . '    {element}   
{error}
{element}   
{error}
{element}   
{error}
'); - $form -> addElement('hidden', 'options_count', 3); - $form -> addElement ('html', '


'); + $form->addElement('html', ''); + $form->addElement('hidden', 'options_count', 3); + $form->addElement('html', '


'); //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) { + //ie6 fix + if ($navigator_info['name'] == 'Internet Explorer' && $navigator_info['version'] == '6') { + $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 { // 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} ','lessAnswers'); - $renderer->setElementTemplate('{element} ','submitQuestion'); - $renderer->setElementTemplate('{element} ','moreAnswers'); - $form -> addElement ('html', ''); - $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('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} ', 'lessAnswers'); + $renderer->setElementTemplate('{element} ', 'submitQuestion'); + $renderer->setElementTemplate('{element} ', 'moreAnswers'); + + $form->addElement('html', ''); + $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 */