type = FILL_IN_BLANKS; } /** * function which redifines Question::createAnswersForm * @param the formvalidator instance */ function createAnswersForm ($form) { $defaults = array(); 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 $pre_array = explode('::', $objAnswer->selectAnswer(1)); $is_set_switchable = explode('@', $pre_array[1]); if ($is_set_switchable[1]) { $defaults['multiple_answer']=1; } else { $defaults['multiple_answer']=0; } $defaults['answer'] = $pre_array[0]; $a_weightings = explode(',',$is_set_switchable[0]); } else { $defaults['answer'] = get_lang('DefaultTextInBlanks'); } // javascript echo ' '; // answer $form -> addElement ('html', '

'.get_lang('TypeTextBelow').', '.get_lang('And').' '.get_lang('UseTagForBlank').'
'); $form -> addElement ('textarea', 'answer',get_lang('Answer'),'id="answer" cols="65" rows="6" onkeyup="updateBlanks(this)"'); $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','
'); $form -> setDefaults($defaults); } /** * abstract function which creates the form to create / edit the answers of the question * @param the formvalidator instance */ function processAnswersCreation($form) { $answer = $form -> getSubmitValue('answer'); //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 = 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(); } } endif; ?>