type = FILL_IN_BLANKS; $this->isContent = $this->getIsContent(); } /** * function which redifines Question::createAnswersForm * @param \FormValidator instance */ public function createAnswersForm($form) { $defaults = array(); $a_weightings = null; if (!empty($this->id)) { $objAnswer = new Answer($this->id); // the question is encoded like this. // [A] B [C] D [E] F::10,10,10@1 // number 1 before the "@" means that is a switchable fill in blank question // [A] B [C] D [E] F::10,10,10@ or [A] B [C] D [E] F::10,10,10 // means that is a normal fill blank question $answer_id = $objAnswer->getRealAnswerIdFromList(1); $pre_array = explode('::', $objAnswer->selectAnswer($answer_id)); //make sure we only take the last bit to find special marks $sz = count($pre_array); $is_set_switchable = explode('@', $pre_array[$sz - 1]); if ($is_set_switchable[1]) { $defaults['multiple_answer'] = 1; } else { $defaults['multiple_answer'] = 0; } //take the complete string except after the last '::' $defaults['answer'] = ''; for ($i = 0; $i < ($sz - 1); $i++) { $defaults['answer'] .= $pre_array[$i]; } $a_weightings = explode(',', $is_set_switchable[0]); } else { $defaults['answer'] = get_lang('DefaultTextInBlanks'); } // javascript echo ''; // answer $form->addElement( 'label', null, '

'.get_lang('TypeTextBelow').', '.get_lang('And').' '.get_lang('UseTagForBlank') ); $form->addElement('html_editor','answer', Display::return_icon('fill_field.png'), 'id="answer" cols="122" rows="6" onkeyup="javascript: updateBlanks(this);"', array('ToolbarSet' => 'TestQuestionDescription', 'Width' => '100%', 'Height' => '350')); $form->addRule('answer', get_lang('GiveText'), 'required'); $form->addRule('answer', get_lang('DefineBlanks'), 'regex', '/\[.*\]/'); //added multiple answers $form->addElement('checkbox', 'multiple_answer', '', get_lang('FillInBlankSwitchable')); $form->addElement('html', '
'); // setting the save button here and not in the question class.php $form->addElement('style_submit_button', 'submitQuestion', $this->submitText, 'class="'.$this->submitClass.'"'); if (!empty($this->id)) { $form->setDefaults($defaults); } else { if ($this->isContent == 1) { $form->setDefaults($defaults); } } } /** * abstract function which creates the form to create / edit the answers of the question * @param the formvalidator instance */ function processAnswersCreation($form) { global $charset; $answer = $form->getSubmitValue('answer'); //Due the fckeditor transform the elements to their HTML value $answer = api_html_entity_decode($answer, ENT_QUOTES, $charset); //remove the :: eventually written by the user $answer = str_replace('::', '', $answer); // get the blanks weightings $nb = preg_match_all('/\[[^\]]*\]/', $answer, $blanks); if (isset($_GET['editQuestion'])) { $this->weighting = 0; } if ($nb > 0) { $answer .= '::'; for ($i = 0; $i < $nb; ++$i) { $answer .= $form->getSubmitValue('weighting['.$i.']').','; $this->weighting += $form->getSubmitValue('weighting['.$i.']'); } $answer = api_substr($answer, 0, -1); } $is_multiple = $form->getSubmitValue('multiple_answer'); $answer .= '@'.$is_multiple; $this->save(); $objAnswer = new answer($this->id); $objAnswer->createAnswer($answer, 0, '', 0, ''); $objAnswer->save(); } /** * {@inheritdoc} */ function return_header($feedback_type = null, $counter = null, $score = null, $show_media = false, $hideTitle = 0) { $header = parent::return_header($feedback_type, $counter, $score, $show_media, $hideTitle); $header .= ''; return $header; } }
'.get_lang("Answer").'