[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 18 years ago
parent 2e376777f0
commit bb39bc4cac
  1. 6
      main/exercice/exercice.php
  2. 4
      main/exercice/exercise_show.php
  3. 47
      main/exercice/multiple_answer.class.php
  4. 8
      main/exercice/question.class.php
  5. 6
      main/exercice/question_admin.inc.php
  6. 44
      main/exercice/unique_answer.class.php

@ -24,7 +24,7 @@
* @author Olivier Brouckaert, original author
* @author Denes Nagy, HotPotatoes integration
* @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);
// 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
$from=$page*$limitExPage;
// $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>
</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>

@ -92,11 +92,12 @@ class MultipleAnswer extends Question {
<td>
'.get_lang('Weighting').'
</td>
<td width="0"></td>
</tr>';
$form -> addElement ('html', $html);
$defaults = array();
$correct = 0;
if(!empty($this -> id))
{
$answer = new Answer($this -> id);
@ -111,7 +112,7 @@ class MultipleAnswer extends Question {
for($i = 1 ; $i <= $nb_answers ; ++$i)
{
if(is_object($answer))
{
$defaults['answer['.$i.']'] = $answer -> answer[$i];
@ -119,32 +120,32 @@ class MultipleAnswer extends Question {
$defaults['weighting['.$i.']'] = $answer -> weighting[$i];
$defaults['correct['.$i.']'] = $answer -> correct[$i];
}
$form -> addElement ('html', '<tr><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>');
$renderer = & $form->defaultRenderer();
$renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>');
$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>');
$group = array();
$group[] = FormValidator :: createElement ('submit', 'lessAnswers', get_lang('LessAnswer'));
$group[] = FormValidator :: createElement ('submit', 'moreAnswers', get_lang('PlusAnswer'));
$form -> addGroup($group);
$form->addElement('submit', 'lessAnswers', get_lang('LessAnswer'));
$form->addElement('submit', 'moreAnswers', get_lang('PlusAnswer'));
$renderer->setElementTemplate('{element}&nbsp;','lessAnswers');
$renderer->setElementTemplate('{element}','moreAnswers');
$form -> addElement ('html', '</div></div>');
$defaults['correct'] = $correct;
$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.
* @package dokeos.exercise
* @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->weighting=0;
$this->position=1;
$this->type=2;
$this->picture='';
$this->exerciseList=array();
@ -728,7 +727,9 @@ abstract class Question
function createForm (&$form) {
// 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');
// question type
@ -747,6 +748,7 @@ abstract class Question
if(!api_is_allowed_to_edit()) $fck_attribute['Config']['UserStatus'] = 'student';
$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
$form->addElement('hidden','myid',$_REQUEST['myid']);

@ -24,7 +24,7 @@
* It is included from the script admin.php
* @package dokeos.exercise
* @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);
$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())
{
// question
$objQuestion -> processCreation($form,$objExercise);
// answers
$objQuestion -> processAnswersCreation($form,$nb_answers);

@ -92,7 +92,7 @@ class UniqueAnswer extends Question {
<td>
'.get_lang('Weighting').'
</td>
<td width="0"></td>
</tr>';
$form -> addElement ('html', $html);
@ -112,7 +112,7 @@ class UniqueAnswer extends Question {
for($i = 1 ; $i <= $nb_answers ; ++$i)
{
$form -> addElement ('html', '<tr>');
if(is_object($answer))
{
if($answer -> correct[$i])
@ -123,29 +123,27 @@ class UniqueAnswer extends Question {
$defaults['comment['.$i.']'] = $answer -> comment[$i];
$defaults['weighting['.$i.']'] = $answer -> weighting[$i];
}
$form -> addElement ('html', '<tr><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>');
$renderer = & $form->defaultRenderer();
$renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>');
$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>');
$group = array();
$group[] = FormValidator :: createElement ('submit', 'lessAnswers', get_lang('LessAnswer'));
$group[] = FormValidator :: createElement ('submit', 'moreAnswers', get_lang('PlusAnswer'));
$form -> addGroup($group);
$form->addElement('submit', 'lessAnswers', get_lang('LessAnswer'));
$form->addElement('submit', 'moreAnswers', get_lang('PlusAnswer'));
$renderer->setElementTemplate('{element}&nbsp;','lessAnswers');
$renderer->setElementTemplate('{element}','moreAnswers');
$form -> addElement ('html', '</div></div>');
$defaults['correct'] = $correct;
$form -> setDefaults($defaults);

Loading…
Cancel
Save