Fixing the copy exercise feature. Adding the \"Re use a copy of this question\" feature in the Question pool

skala
Julio Montoya 15 years ago
parent 8fac19f38b
commit 54e7d51a49
  1. 19
      main/exercice/exercise.class.php
  2. 75
      main/exercice/question_pool.php

@ -1401,7 +1401,7 @@ class Exercise
}
/**
* Copies an exercise
* Copies an exercise (duplicate all questions and answers)
*/
function copy_exercise() {
@ -1419,15 +1419,18 @@ class Exercise
$exercise_obj->updateId(0);
$exercise_obj->save();
$new_exercise_id = $exercise_obj->selectId();
$question_list = $exercise_obj->selectQuestionList();
$new_exercise_id = $exercise_obj->selectId();
$question_list = $exercise_obj->selectQuestionList();
//creation of question
foreach ($question_list as $question_id) {
$new_question_obj = Question::read($question_id);
//Question creation
foreach ($question_list as $old_question_id) {
$new_question_obj = Question::read($old_question_id);
$new_id = $new_question_obj->duplicate();
$new_question_obj->addToList($new_exercise_id);
// This should be moved to the duplicate function
$new_answer_obj = new Answer($old_question_id);
$new_answer_obj->read();
$new_answer_obj->duplicate($new_id);
}
}

@ -13,9 +13,9 @@
// name of the language file that needs to be included
$language_file='exercice';
include('exercise.class.php');
include('question.class.php');
include('answer.class.php');
require_once 'exercise.class.php';
require_once 'question.class.php';
require_once 'answer.class.php';
require_once '../inc/global.inc.php';
$this_section=SECTION_COURSES;
@ -49,6 +49,11 @@ if(!empty($_GET['page'])){
$page = intval($_GET['page']);
}
$copy_question = 0;
if(!empty($_GET['copy_question'])){
$copy_question = intval($_GET['copy_question']);
}
//only that type of question
if(!empty($_GET['type'])){
$type = intval($_GET['type']);
@ -64,22 +69,48 @@ $documentPath=api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
$picturePath=$documentPath.'/images';
if(!($objExcercise instanceOf Exercise) && !empty($fromExercise))
{
if(!($objExcercise instanceOf Exercise) && !empty($fromExercise)) {
$objExercise = new Exercise();
$objExercise->read($fromExercise);
}
if(!($objExcercise instanceOf Exercise) && !empty($exerciseId))
{
if(!($objExcercise instanceOf Exercise) && !empty($exerciseId)) {
$objExercise = new Exercise();
$objExercise->read($exerciseId);
}
if($is_allowedToEdit)
{
if($is_allowedToEdit) {
//copy exercise
if ($copy_question != 0 && isset($fromExercise)) {
$old_question_id = $copy_question;
$new_question_obj = Question::read($old_question_id);
$new_question_obj->updateTitle($new_question_obj->selectTitle().' - '.get_lang('Copy'));
$new_id = $new_question_obj->duplicate();
$new_answer_obj = new Answer($old_question_id);
$new_answer_obj->read();
$new_answer_obj->duplicate($new_id);
// destruction of the Question object
unset($new_question_obj);
if(!$objExcercise instanceOf Exercise)
{
$objExercise = new Exercise();
$objExercise->read($fromExercise);
}
// adds the question ID represented by $recup into the list of questions for the current exercise
$objExercise->addToList($new_id);
api_session_register('objExercise');
header("Location: admin.php?".api_get_cidreq()."&exerciseId=$fromExercise");
exit();
}
// deletes a question from the data base and all exercises
if($delete)
{
if($delete) {
// construction of the Question object
// if the question exists
if($objQuestionTmp = Question::read($delete))
@ -90,10 +121,9 @@ if($is_allowedToEdit)
// destruction of the Question object
unset($objQuestionTmp);
}
// gets an existing question and copies it into a new exercise
elseif($recup && $fromExercise)
{
} elseif($recup && $fromExercise) {
// gets an existing question and copies it into a new exercise
// if the question exists
if($objQuestionTmp = Question :: read($recup))
{
@ -162,7 +192,9 @@ if($is_allowedToEdit)
<h3><?php echo $nameTools; ?></h3>
<div class="actions">
<?php
if (isset($type)) {
$url = api_get_self().'?type=1';
} else {
@ -222,8 +254,6 @@ if($is_allowedToEdit)
//answer type
if (!isset($answerType)) $answerType = -1;
{
for ($answer_type = -1; $answer_type <=9; $answer_type++) {
$selected ='';
if ($answer_type!=0) {
@ -373,9 +403,9 @@ if($is_allowedToEdit)
'<td align="right">';
if(!empty($page)) {
echo '<a href="',api_get_self(),'?',api_get_cidreq(),'&exerciseId=',$exerciseId,'&fromExercise=',$fromExercise,'&page=',($page-1),'">&lt;&lt; ',get_lang('PreviousPage'),'</a> |';
echo '<a href="',api_get_self(),'?',api_get_cidreq(),'&exerciseId=',$exerciseId,'&fromExercise=',$fromExercise,'&page=',($page-1),'">&lt;&lt; ',get_lang('PreviousPage'),'</a> | ';
} elseif($nbrQuestions > $limitQuestPage) {
echo '&lt;&lt; ',get_lang('PreviousPage'),' |';
echo '&lt;&lt; ',get_lang('PreviousPage'),' | ';
}
if($nbrQuestions > $limitQuestPage) {
@ -432,8 +462,11 @@ if($is_allowedToEdit)
//echo $row['level'],'</td>',
// '<td><a href="',api_get_self(),'?',api_get_cidreq(),'&recup=',$row['id'],'&fromExercise=',$fromExercise,'"><img src="../img/view_more_stats.gif" border="0" alt="',get_lang('Reuse'),'"></a>';
echo $row['level'],'</td>',
'<td align="center" ><a href="',api_get_self(),'?',api_get_cidreq(),'&recup=',$row['id'],'&fromExercise=',$fromExercise,'">' .
'<img src="../img/view_more_stats.gif" border="0" alt="',get_lang('Reuse'),'"></a>';
'<td align="center"><a href="',api_get_self(),'?',api_get_cidreq(),'&recup=',$row['id'],'&fromExercise=',$fromExercise,'">' .
'<img src="../img/view_more_stats.gif" border="0" title="'.get_lang('Reuse').'" alt="'.get_lang('Reuse').'"></a>';
echo ' <a href="',api_get_self(),'?',api_get_cidreq(),'&copy_question=',$row['id'],'&fromExercise=',$fromExercise,'">' .
'<img src="../img/cd.gif" border="0" title="'.get_lang('ReUseACopyInCurrentTest').'" alt="'.get_lang('ReUseACopyInCurrentTest').'"></a>';
}
echo '</td>';
echo '</tr>';

Loading…
Cancel
Save