[svn r11066] changes for unique answer and multiple answers :

- update formvalidator : use templates now
 - check empty answers and display errors

fix 2 bugs
skala
Julian Prud'homme 19 years ago
parent 2e376777f0
commit bb39bc4cac
  1. 6
      main/exercice/exercice.php
  2. 4
      main/exercice/exercise_show.php
  3. 39
      main/exercice/multiple_answer.class.php
  4. 8
      main/exercice/question.class.php
  5. 6
      main/exercice/question_admin.inc.php
  6. 38
      main/exercice/unique_answer.class.php

@ -24,7 +24,7 @@
* @author Olivier Brouckaert, original author * @author Olivier Brouckaert, original author
* @author Denes Nagy, HotPotatoes integration * @author Denes Nagy, HotPotatoes integration
* @author Wolfgang Schneider, code/html cleanup * @author Wolfgang Schneider, code/html cleanup
* @version $Id: exercice.php 11058 2007-02-05 13:25:41Z elixir_julian $ * @version $Id: exercice.php 11066 2007-02-07 09:39:47Z elixir_julian $
*/ */
@ -188,10 +188,6 @@ include_once(api_get_path(LIBRARY_PATH).'statsUtils.lib.inc.php');
//Display::display_introduction_section(TOOL_QUIZ); //Display::display_introduction_section(TOOL_QUIZ);
// defines answer type for previous versions of Claroline, may be removed in Claroline 1.5
$sql="UPDATE $TBL_QUESTIONS SET position='1',type='2' WHERE position IS NULL OR position<'1' OR type='0'";
api_sql_query($sql,__FILE__,__LINE__);
// selects $limitExPage exercises at the same time // selects $limitExPage exercises at the same time
$from=$page*$limitExPage; $from=$page*$limitExPage;
// $sql="SELECT id,title,type,active FROM $TBL_EXERCICES ORDER BY title LIMIT $from,".($limitExPage+1); // $sql="SELECT id,title,type,active FROM $TBL_EXERCICES ORDER BY title LIMIT $from,".($limitExPage+1);

@ -804,6 +804,10 @@ $result =api_sql_query($query, __FILE__, __LINE__);
</select> </select>
</form></div><?php </form></div><?php
} }
else{
$arrmarks[] = $questionId;
echo '<div id="'.$marksname.'" style="visibility:hidden"><form name="marksform_'.$questionId.'" method="post" action=""><select name="marks" id="marks" style="display:none;"><option>'.$questionScore.'</option></select></form></div>';
}
}?> }?>
</td><tr><td></td><td align="right"><b><?php echo get_lang('Score')." : $questionScore/$questionWeighting"; ?></b></td> </td><tr><td></td><td align="right"><b><?php echo get_lang('Score')." : $questionScore/$questionWeighting"; ?></b></td>

@ -92,11 +92,12 @@ class MultipleAnswer extends Question {
<td> <td>
'.get_lang('Weighting').' '.get_lang('Weighting').'
</td> </td>
<td width="0"></td>
</tr>'; </tr>';
$form -> addElement ('html', $html); $form -> addElement ('html', $html);
$defaults = array(); $defaults = array();
$correct = 0;
if(!empty($this -> id)) if(!empty($this -> id))
{ {
$answer = new Answer($this -> id); $answer = new Answer($this -> id);
@ -120,31 +121,31 @@ class MultipleAnswer extends Question {
$defaults['correct['.$i.']'] = $answer -> correct[$i]; $defaults['correct['.$i.']'] = $answer -> correct[$i];
} }
$form -> addElement ('html', '<tr><td>'); $renderer = & $form->defaultRenderer();
$renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>');
$group = array();
$puce = FormValidator :: createElement ('text', null,null,'value="1"');
$puce->freeze();
$group[] = $puce;
$group[] = FormValidator :: createElement ('checkbox', 'correct['.$i.']', null, null, $i);
$group[] = FormValidator :: createElement ('html_editor', 'answer['.$i.']',null, 'style="vertical-align:middle" cols="30"');
$group[] = FormValidator :: createElement ('html_editor', 'comment['.$i.']',null, 'style="vertical-align:middle" cols="30"');
$group[] = FormValidator :: createElement ('text', 'weighting['.$i.']',null, 'style="vertical-align:middle" size="5" value="0"');
$form -> addGroup($group, null, null, '</td><td width="0">');
$form -> addElement ('html', '</td></tr>'); $answer_number=$form->addElement('text', null,null,'value="'.$i.'"');
$answer_number->freeze();
$form->addElement('checkbox', 'correct['.$i.']', null, null, $i);
$form->addElement('html_editor', 'answer['.$i.']',null, 'style="vertical-align:middle"');
$form->addRule('answer['.$i.']', get_lang('ThisFieldIsRequired'), 'required');
$form->addElement('html_editor', 'comment['.$i.']',null, 'style="vertical-align:middle"');
$form->addElement('text', 'weighting['.$i.']',null, 'style="vertical-align:middle" size="5" value="0"');
$form -> addElement ('html', '</tr>');
} }
$form -> addElement ('html', '</table>');
$form -> addElement ('html', '</table></div></div>'); $form->addElement('submit', 'lessAnswers', get_lang('LessAnswer'));
$group = array(); $form->addElement('submit', 'moreAnswers', get_lang('PlusAnswer'));
$group[] = FormValidator :: createElement ('submit', 'lessAnswers', get_lang('LessAnswer')); $renderer->setElementTemplate('{element}&nbsp;','lessAnswers');
$group[] = FormValidator :: createElement ('submit', 'moreAnswers', get_lang('PlusAnswer')); $renderer->setElementTemplate('{element}','moreAnswers');
$form -> addGroup($group); $form -> addElement ('html', '</div></div>');
$defaults['correct'] = $correct;
$form -> setDefaults($defaults); $form -> setDefaults($defaults);
$form->setConstants(array('nb_answers' => $nb_answers));
$form->setConstants(array('nb_answers' => $nb_answers));
} }

@ -22,7 +22,7 @@
* File containing the Question class. * File containing the Question class.
* @package dokeos.exercise * @package dokeos.exercise
* @author Olivier Brouckaert * @author Olivier Brouckaert
* @version $Id: question.class.php 10934 2007-01-26 16:37:26Z elixir_inter $ * @version $Id: question.class.php 11066 2007-02-07 09:39:47Z elixir_julian $
*/ */
@ -84,7 +84,6 @@ abstract class Question
$this->description=''; $this->description='';
$this->weighting=0; $this->weighting=0;
$this->position=1; $this->position=1;
$this->type=2;
$this->picture=''; $this->picture='';
$this->exerciseList=array(); $this->exerciseList=array();
@ -728,7 +727,9 @@ abstract class Question
function createForm (&$form) { function createForm (&$form) {
// question name // question name
$form->addElement('text','questionName',get_lang('Question'),'size="60"'); $test=$form->addElement('text','questionName',get_lang('Question'),'size="60"');
$renderer = $form->defaultRenderer();
$renderer->setElementTemplate('<div class="row"><div class="label">{label}</div><div class="formw">{element}</div></div>','questionName');
$form->addRule('questionName', get_lang('GiveQuestion'), 'required'); $form->addRule('questionName', get_lang('GiveQuestion'), 'required');
// question type // question type
@ -747,6 +748,7 @@ abstract class Question
if(!api_is_allowed_to_edit()) $fck_attribute['Config']['UserStatus'] = 'student'; if(!api_is_allowed_to_edit()) $fck_attribute['Config']['UserStatus'] = 'student';
$form->add_html_editor('questionDescription', get_lang('QuestionDescription'), false); $form->add_html_editor('questionDescription', get_lang('QuestionDescription'), false);
$renderer->setElementTemplate('<div class="row"><div class="label">{label}</div><div class="formw">{element}</div></div>','questionDescription');
// hidden values // hidden values
$form->addElement('hidden','myid',$_REQUEST['myid']); $form->addElement('hidden','myid',$_REQUEST['myid']);

@ -24,7 +24,7 @@
* It is included from the script admin.php * It is included from the script admin.php
* @package dokeos.exercise * @package dokeos.exercise
* @author Olivier Brouckaert * @author Olivier Brouckaert
* @version $Id: question_admin.inc.php 10789 2007-01-18 19:18:27Z pcool $ * @version $Id: question_admin.inc.php 11066 2007-02-07 09:39:47Z elixir_julian $
*/ */
/* /*
@ -91,6 +91,8 @@ if(is_object($objQuestion))
$objQuestion -> createAnswersForm ($form); $objQuestion -> createAnswersForm ($form);
$form->addElement('submit','submitQuestion',get_lang('Ok')); $form->addElement('submit','submitQuestion',get_lang('Ok'));
$renderer = $form->defaultRenderer();
$renderer->setElementTemplate('<div class="row"><div class="label">{label}</div><div class="formw">{element}</div></div>','submitQuestion');
/********************** /**********************
@ -98,9 +100,9 @@ if(is_object($objQuestion))
**********************/ **********************/
if(isset($_POST['submitQuestion']) && $form->validate()) if(isset($_POST['submitQuestion']) && $form->validate())
{ {
// question // question
$objQuestion -> processCreation($form,$objExercise); $objQuestion -> processCreation($form,$objExercise);
// answers // answers
$objQuestion -> processAnswersCreation($form,$nb_answers); $objQuestion -> processAnswersCreation($form,$nb_answers);

@ -92,7 +92,7 @@ class UniqueAnswer extends Question {
<td> <td>
'.get_lang('Weighting').' '.get_lang('Weighting').'
</td> </td>
<td width="0"></td>
</tr>'; </tr>';
$form -> addElement ('html', $html); $form -> addElement ('html', $html);
@ -112,7 +112,7 @@ class UniqueAnswer extends Question {
for($i = 1 ; $i <= $nb_answers ; ++$i) for($i = 1 ; $i <= $nb_answers ; ++$i)
{ {
$form -> addElement ('html', '<tr>');
if(is_object($answer)) if(is_object($answer))
{ {
if($answer -> correct[$i]) if($answer -> correct[$i])
@ -124,28 +124,26 @@ class UniqueAnswer extends Question {
$defaults['weighting['.$i.']'] = $answer -> weighting[$i]; $defaults['weighting['.$i.']'] = $answer -> weighting[$i];
} }
$form -> addElement ('html', '<tr><td>'); $renderer = & $form->defaultRenderer();
$renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>');
$group = array();
$puce = FormValidator :: createElement ('text', null,null,'value="'.$i.'"');
$puce->freeze();
$group[] = $puce;
$group[] = FormValidator :: createElement ('radio', 'correct', null, null, $i);
$group[] = FormValidator :: createElement ('html_editor', 'answer['.$i.']',null, 'style="vertical-align:middle"');
$group[] = FormValidator :: createElement ('html_editor', 'comment['.$i.']',null, 'style="vertical-align:middle"');
$group[] = FormValidator :: createElement ('text', 'weighting['.$i.']',null, 'style="vertical-align:middle" size="5" value="0"');
$form -> addGroup($group, null, null, '</td><td width="0">');
$form -> addElement ('html', '</td></tr>'); $answer_number=$form->addElement('text', null,null,'value="'.$i.'"');
$answer_number->freeze();
$form->addElement('radio', 'correct', null, null, $i);
$form->addElement('html_editor', 'answer['.$i.']',null, 'style="vertical-align:middle"');
$form->addRule('answer['.$i.']', get_lang('ThisFieldIsRequired'), 'required');
$form->addElement('html_editor', 'comment['.$i.']',null, 'style="vertical-align:middle"');
$form->addElement('text', 'weighting['.$i.']',null, 'style="vertical-align:middle" size="5" value="0"');
$form -> addElement ('html', '</tr>');
} }
$form -> addElement ('html', '</table>');
$form -> addElement ('html', '</table></div></div>'); $form->addElement('submit', 'lessAnswers', get_lang('LessAnswer'));
$group = array(); $form->addElement('submit', 'moreAnswers', get_lang('PlusAnswer'));
$group[] = FormValidator :: createElement ('submit', 'lessAnswers', get_lang('LessAnswer')); $renderer->setElementTemplate('{element}&nbsp;','lessAnswers');
$group[] = FormValidator :: createElement ('submit', 'moreAnswers', get_lang('PlusAnswer')); $renderer->setElementTemplate('{element}','moreAnswers');
$form -> addGroup($group); $form -> addElement ('html', '</div></div>');
$defaults['correct'] = $correct; $defaults['correct'] = $correct;
$form -> setDefaults($defaults); $form -> setDefaults($defaults);

Loading…
Cancel
Save