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));
//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 ('html', '
'.get_lang('TypeTextBelow').', '.get_lang('And').' '.get_lang('UseTagForBlank').'
');
$form -> addElement ('html_editor', 'answer', '','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','');
global $text, $class;
// setting the save button here and not in the question class.php
$form->addElement('style_submit_button','submitQuestion',$text, 'class="'.$class.'"');
$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();
}
}
endif;
?>