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;
?>