Fixing exercise order bug see #5780

skala
Julio Montoya 13 years ago
parent 8c42f61ba1
commit 441d8d72a5
  1. 4
      main/exercice/exercise_admin.php
  2. 14
      main/exercice/question_list_admin.inc.php
  3. 13
      main/inc/ajax/exercise.ajax.php

@ -5,7 +5,7 @@
* This script allows to manage an exercise. It is included from
* the script admin.php
* @package chamilo.exercise
* @author Olivier Brouckaert
* @author Olivier Brouckaert, Julio Montoya
*/
/**
* Code
@ -215,7 +215,7 @@ if ($form->validate()) {
// to hide the exercise description
echo '<style> .media { display:none;}</style>';
if ($objExercise->id != 0 && $objExercise->edit_exercise_in_lp == false) {
$form->freeze();
}

@ -30,6 +30,7 @@ if ($deleteQuestion) {
// destruction of the Question object
unset($objQuestionTmp);
}
$ajax_url = api_get_path(WEB_AJAX_PATH)."exercise.ajax.php?".api_get_cidreq()."&exercise_id=".intval($exerciseId);
?>
<style>
.ui-state-highlight { height: 30px; line-height: 1.2em; }
@ -114,7 +115,7 @@ $(function() {
cursor: "move", // works?
update: function(event, ui) {
var order = $(this).sortable("serialize") + "&a=update_question_order";
$.post("<?php echo api_get_path(WEB_AJAX_PATH)?>exercise.ajax.php", order, function(reponse){
$.post("<?php echo $ajax_url ?>", order, function(reponse){
$("#message").html(reponse);
});
},
@ -153,8 +154,9 @@ if (!$inATest) {
echo "<div style='clear:both'>&nbsp;</div>";
echo '<div id="question_list">';
if ($nbrQuestions) {
$questionList = $objExercise->selectQuestionList();
if ($nbrQuestions) {
//Always getting list from DB
$questionList = $objExercise->selectQuestionList(true);
// Style for columns
$styleQuestion = "width:50%; float:left;";
@ -174,11 +176,11 @@ if (!$inATest) {
$clone_link = '<a href="'.api_get_self().'?'.api_get_cidreq().'&clone_question='.$id.'">'.Display::return_icon('cd.gif',get_lang('Copy'), array(), ICON_SIZE_SMALL).'</a>';
$edit_link = '<a href="'.api_get_self().'?'.api_get_cidreq().'&type='.$objQuestionTmp->selectType().'&myid=1&editQuestion='.$id.'">'.Display::return_icon('edit.png',get_lang('Modify'), array(), ICON_SIZE_SMALL).'</a>';
if ($objExercise->edit_exercise_in_lp == true) {
$delete_link = '<a id="delete_'.$id.'" class="opener" href="'.api_get_self().'?'.api_get_cidreq().'&exerciseId='.$exerciseId.'&deleteQuestion='.$id.'" >'.Display::return_icon('delete.png',get_lang('RemoveFromTest'), array(), ICON_SIZE_SMALL).'</a>';
}
$edit_link = Display::tag('div', $edit_link, array('style'=>'float:left; padding:0px; margin:0px'));
$clone_link = Display::tag('div', $clone_link, array('style'=>'float:left; padding:0px; margin:0px'));
$delete_link = Display::tag('div', $delete_link, array('style'=>'float:left; padding:0px; margin:0px'));
@ -235,7 +237,7 @@ if (!$inATest) {
}
}
}
if (!$nbrQuestions) {
echo Display::display_warning_message(get_lang('NoQuestion'));
}

@ -158,12 +158,23 @@ switch ($action) {
}
break;
case 'update_question_order':
$session_id = isset($_REQUEST['session_id']) ? intval($_REQUEST['session_id']) : api_get_session_id();
$course_code = isset($_REQUEST['cidReq']) ? $_REQUEST['cidReq'] : api_get_course_id();
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
$exercise_id = isset($_REQUEST['exercise_id']) ? $_REQUEST['exercise_id'] : null;
if (empty($exercise_id)) {
return Display::display_error_message(get_lang('Error'));
}
if (api_is_allowed_to_edit(null, true)) {
$new_question_list = $_POST['question_id_list'];
$TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$counter = 1;
foreach ($new_question_list as $new_order_id) {
Database::update($TBL_QUESTIONS, array('question_order'=>$counter), array('question_id = ? AND c_id = ? '=>array(intval($new_order_id), $course_id)));
Database::update($TBL_QUESTIONS, array('question_order' => $counter), array('question_id = ? AND c_id = ? AND exercice_id = ? '=>array(intval($new_order_id), $course_id, $exercise_id)), true);
$counter++;
}
Display::display_confirmation_message(get_lang('Saved'));

Loading…
Cancel
Save