[svn r15251] Improved isolation of tests. Now allows reloading a test if GET['exerciseId'] is different from the Id of the exercise in the session. Allows for linking exercises in another exercise's answer comments. See FS#2520

skala
Yannick Warnier 18 years ago
parent 47c35c3113
commit 87287da2e7
  1. 79
      main/exercice/exercice_submit.php

@ -33,7 +33,7 @@
* the administrator * the administrator
* @package dokeos.exercise * @package dokeos.exercise
* @author Olivier Brouckaert * @author Olivier Brouckaert
* @version $Id: exercice_submit.php 14930 2008-04-16 21:41:35Z juliomontoya $ * @version $Id: exercice_submit.php 15251 2008-05-08 20:28:28Z yannoo $
*/ */
@ -100,7 +100,7 @@ if ( empty ( $exerciseType ) ) {
$exerciseType = $_REQUEST['exerciseType']; $exerciseType = $_REQUEST['exerciseType'];
} }
if ( empty ( $exerciseId ) ) { if ( empty ( $exerciseId ) ) {
$exerciseId = $_REQUEST['exerciseId']; $exerciseId = intval($_REQUEST['exerciseId']);
} }
if ( empty ( $choice ) ) { if ( empty ( $choice ) ) {
$choice = $_REQUEST['choice']; $choice = $_REQUEST['choice'];
@ -114,6 +114,7 @@ if ( empty ( $nbrQuestions ) ) {
if ( empty ($buttonCancel) ) { if ( empty ($buttonCancel) ) {
$buttonCancel = $_REQUEST['buttonCancel']; $buttonCancel = $_REQUEST['buttonCancel'];
} }
$error = '';
// if the user has clicked on the "Cancel" button // if the user has clicked on the "Cancel" button
if($buttonCancel) if($buttonCancel)
@ -199,24 +200,26 @@ if($formSent)
} }
// if the object is not in the session // if the object is not in the session
if(!isset($_SESSION['objExercise']) || $origin == 'learnpath') if(!isset($_SESSION['objExercise']) || $origin == 'learnpath' || $_SESSION['objExercise']->id != $_REQUEST['exerciseId'])
{ {
if($debug>0){echo str_repeat('&nbsp;',0).'$_SESSION[objExercise] was unset'."<br />\n";} if($debug>0){echo str_repeat('&nbsp;',0).'$_SESSION[objExercise] was unset'."<br />\n";}
// construction of Exercise // construction of Exercise
$objExercise=new Exercise(); $objExercise=new Exercise();
unset($_SESSION['questionList']);
#$sql="SELECT title,description,sound,type,random,active FROM `$TBL_EXERCICES` WHERE id='$exerciseId'";
// if the specified exercise doesn't exist or is disabled // if the specified exercise doesn't exist or is disabled
if(!$objExercise->read($exerciseId) || (!$objExercise->selectStatus() && !$is_allowedToEdit && ($origin != 'learnpath') )) if(!$objExercise->read($exerciseId) || (!$objExercise->selectStatus() && !$is_allowedToEdit && ($origin != 'learnpath') ))
{ {
die(get_lang('ExerciseNotFound')); unset($objExercise);
$error = get_lang('ExerciseNotFound');
//die(get_lang('ExerciseNotFound'));
} }
else
{
// saves the object into the session // saves the object into the session
api_session_register('objExercise'); api_session_register('objExercise');
if($debug>0){echo str_repeat('&nbsp;',0).'$_SESSION[objExercise] was unset - set now - end'."<br />\n";} if($debug>0){echo str_repeat('&nbsp;',0).'$_SESSION[objExercise] was unset - set now - end'."<br />\n";}
}
} }
if(!isset($objExcercise) && isset($_SESSION['objExercise'])){ if(!isset($objExcercise) && isset($_SESSION['objExercise'])){
@ -410,7 +413,7 @@ else
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $document_language; ?>" lang="<?php echo $document_language; ?>"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $document_language; ?>" lang="<?php echo $document_language; ?>">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset; ?>" />
</head> </head>
<body> <body>
@ -423,20 +426,27 @@ else
echo "<h3>".$exerciseTitle."</h3>"; echo "<h3>".$exerciseTitle."</h3>";
if(!empty($exerciseSound)) if(!empty($error))
{
Display::display_error_message($error,false);
}
else
{ {
if(!empty($exerciseSound))
{
echo "<a href=\"../document/download.php?doc_url=%2Faudio%2F".$exerciseSound."\" target=\"_blank\">", echo "<a href=\"../document/download.php?doc_url=%2Faudio%2F".$exerciseSound."\" target=\"_blank\">",
"<img src=\"../img/sound.gif\" border=\"0\" align=\"absmiddle\" alt=",get_lang('Sound')."\" /></a>"; "<img src=\"../img/sound.gif\" border=\"0\" align=\"absmiddle\" alt=",get_lang('Sound')."\" /></a>";
} }
// Get number of hotspot questions for javascript validation // Get number of hotspot questions for javascript validation
$number_of_hotspot_questions = 0; $number_of_hotspot_questions = 0;
$onsubmit = ''; $onsubmit = '';
$i=0; $i=0;
foreach($questionList as $questionId) foreach($questionList as $questionId)
{ {
$i++; $i++;
$objQuestionTmp = Question :: read($questionId); $objQuestionTmp = Question :: read($questionId);
@ -464,18 +474,18 @@ foreach($questionList as $questionId)
$number_of_hotspot_questions++; $number_of_hotspot_questions++;
} }
} }
} }
if($number_of_hotspot_questions > 0) if($number_of_hotspot_questions > 0)
{ {
$onsubmit = "onsubmit=\"return validateFlashVar('".$number_of_hotspot_questions."', '".get_lang('HotspotValidateError1')."', '".get_lang('HotspotValidateError2')."');\""; $onsubmit = "onsubmit=\"return validateFlashVar('".$number_of_hotspot_questions."', '".get_lang('HotspotValidateError1')."', '".get_lang('HotspotValidateError2')."');\"";
} }
$s="<p>$exerciseDescription</p>"; $s="<p>$exerciseDescription</p>";
if($origin == 'learnpath' && $exerciseType==2){ if($origin == 'learnpath' && $exerciseType==2){
$s2 = "&exerciseId=".$exerciseId; $s2 = "&exerciseId=".$exerciseId;
} }
$s.=" <form method='post' action='".api_get_self()."?autocomplete=off".$s2."' name='frm_exercise' $onsubmit> $s.=" <form method='post' action='".api_get_self()."?autocomplete=off".$s2."' name='frm_exercise' $onsubmit>
<input type='hidden' name='formSent' value='1' /> <input type='hidden' name='formSent' value='1' />
<input type='hidden' name='exerciseType' value='".$exerciseType."' /> <input type='hidden' name='exerciseType' value='".$exerciseType."' />
<input type='hidden' name='questionNum' value='".$questionNum."' /> <input type='hidden' name='questionNum' value='".$questionNum."' />
@ -483,16 +493,16 @@ $s.=" <form method='post' action='".api_get_self()."?autocomplete=off".$s2."' na
<input type='hidden' name='origin' value='".$origin."' /> <input type='hidden' name='origin' value='".$origin."' />
<input type='hidden' name='learnpath_id' value='".$learnpath_id."' /> <input type='hidden' name='learnpath_id' value='".$learnpath_id."' />
<input type='hidden' name='learnpath_item_id' value='".$learnpath_item_id."' /> <input type='hidden' name='learnpath_item_id' value='".$learnpath_item_id."' />
<table width='100%' border='0' cellpadding='1' cellspacing='0'> <table width='100%' border='0' cellpadding='1' cellspacing='0'>
<tr> <tr>
<td> <td>
<table width='100%' cellpadding='3' cellspacing='0' border='0'>"; <table width='100%' cellpadding='3' cellspacing='0' border='0'>";
echo $s; echo $s;
$i=0; $i=0;
foreach($questionList as $questionId) foreach($questionList as $questionId)
{ {
$i++; $i++;
// for sequential exercises // for sequential exercises
@ -542,9 +552,9 @@ foreach($questionList as $questionId)
// quits the loop // quits the loop
break; break;
} }
} // end foreach() } // end foreach()
$s="</table> $s="</table>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -565,8 +575,9 @@ $s="</table>
$s.= '\' />'; $s.= '\' />';
$s.="</td></tr></form></table>"; $s.="</td></tr></form></table>";
$b=2; $b=2;
echo $s; echo $s;
}
if ($origin != 'learnpath') { //so we are not in learnpath tool if ($origin != 'learnpath') { //so we are not in learnpath tool
Display::display_footer(); Display::display_footer();

Loading…
Cancel
Save