From 696acfa0348b308e57de6dc1a0cc389cbab3dc23 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Wed, 21 Nov 2012 16:29:06 +0100 Subject: [PATCH] Ordering question depending in the media see #5714 --- main/css/base.css | 3 + main/exercice/exercise.class.php | 25 ++++-- main/exercice/exercise_submit.php | 135 ++++++++++++++++-------------- 3 files changed, 89 insertions(+), 74 deletions(-) diff --git a/main/css/base.css b/main/css/base.css index 9dd78a29a3..9050ba32bc 100644 --- a/main/css/base.css +++ b/main/css/base.css @@ -2339,6 +2339,9 @@ div.admin_section h4 { height:5px; } +#question_list .ui-state-highlight{ + height: 80px; +} .ui-state-highlight { height:25px; diff --git a/main/exercice/exercise.class.php b/main/exercice/exercise.class.php index 7013e8ca4e..342bd4680a 100644 --- a/main/exercice/exercise.class.php +++ b/main/exercice/exercise.class.php @@ -1584,12 +1584,15 @@ class Exercise { return $id; } - public function show_button($question_id, $questionNum, $inside_media = false) { - global $origin, $safe_lp_id, $safe_lp_item_id, $safe_lp_item_view_id; + public function show_button($question_id, $questionNum) { + global $origin, $safe_lp_id, $safe_lp_item_id, $safe_lp_item_view_id; + $nbrQuestions = count($this->get_validated_question_list()); - $nbrQuestions = count($this->get_validated_question_list()); - if ($inside_media) { - $nbrQuestions = count($this->get_media_list()); + $media_questions = $this->get_media_list(); + $media_active = $this->media_is_activated($media_questions); + + if ($media_active) { + $nbrQuestions = $this->get_count_questions_when_using_medias(); } $html = $label = ''; @@ -3499,6 +3502,12 @@ class Exercise { return $media_questions; } + function get_count_questions_when_using_medias() { + $media_questions = $this->get_media_list(); + $questions_with_no_group = isset($media_questions[999]) ? count($media_questions[999]) : 0; + return count($media_questions) - 1 + $questions_with_no_group; + } + function media_is_activated($media_list) { $active = false; if (isset($media_list) && !empty($media_list)) { @@ -3527,10 +3536,7 @@ class Exercise { $tabres = $this->selectQuestionList(); } } else { - if ($this->isRandom()) { - if (!class_exists("Testcategory")) { - require_once("testcategory.class.php"); - } + if ($this->isRandom()) { // USE question categories // // get questions by category for this exercice @@ -3552,6 +3558,7 @@ class Exercise { * On veut dans l'ordre des groupes définis par le terme entre crochet au début du titre de la catégorie */ // If test option is Grouped By Categories + if ($isRandomByCategory == 2) { $tabCategoryQuestions = Testcategory::sortTabByBracketLabel($tabCategoryQuestions); } diff --git a/main/exercice/exercise_submit.php b/main/exercice/exercise_submit.php index c9b1a5db5b..525b1f8e79 100644 --- a/main/exercice/exercise_submit.php +++ b/main/exercice/exercise_submit.php @@ -55,32 +55,30 @@ if (api_get_setting('show_glossary_in_extra_tools') == 'true') { $htmlHeadXtra[] = api_get_js('jquery.highlight.js'); //highlight } - //This library is necessary for the time control feature -$htmlHeadXtra[] = api_get_css(api_get_path(WEB_LIBRARY_PATH).'javascript/epiclock/stylesheet/jquery.epiclock.css'); -$htmlHeadXtra[] = api_get_css(api_get_path(WEB_LIBRARY_PATH).'javascript/epiclock/renderers/minute/epiclock.minute.css'); -$htmlHeadXtra[] = api_get_js('epiclock/javascript/jquery.dateformat.min.js'); -$htmlHeadXtra[] = api_get_js('epiclock/javascript/jquery.epiclock.min.js'); -$htmlHeadXtra[] = api_get_js('epiclock/renderers/minute/epiclock.minute.js'); +$htmlHeadXtra[]= api_get_css(api_get_path(WEB_LIBRARY_PATH).'javascript/epiclock/stylesheet/jquery.epiclock.css'); +$htmlHeadXtra[]= api_get_css(api_get_path(WEB_LIBRARY_PATH).'javascript/epiclock/renderers/minute/epiclock.minute.css'); +$htmlHeadXtra[]= api_get_js('epiclock/javascript/jquery.dateformat.min.js'); +$htmlHeadXtra[]= api_get_js('epiclock/javascript/jquery.epiclock.min.js'); +$htmlHeadXtra[]= api_get_js('epiclock/renderers/minute/epiclock.minute.js'); // General parameters passed via POST/GET $learnpath_id = isset($_REQUEST['learnpath_id']) ? intval($_REQUEST['learnpath_id']) : 0; $learnpath_item_id = isset($_REQUEST['learnpath_item_id']) ? intval($_REQUEST['learnpath_item_id']) : 0; $learnpath_item_view_id = isset($_REQUEST['learnpath_item_view_id']) ? intval($_REQUEST['learnpath_item_view_id']) : 0; - $origin = isset($_REQUEST['origin']) ? Security::remove_XSS($_REQUEST['origin']) : ''; $reminder = isset($_REQUEST['reminder']) ? intval($_REQUEST['reminder']) : 0; $remind_question_id = isset($_REQUEST['remind_question_id']) ? intval($_REQUEST['remind_question_id']) : 0; $exerciseId = isset($_REQUEST['exerciseId']) ? intval($_REQUEST['exerciseId']) : 0; -if (empty ($formSent)) { +if (empty($formSent)) { $formSent = $_REQUEST['formSent']; } if (empty($exerciseResult)) { $exerciseResult = $_REQUEST['exerciseResult']; } -if (empty ($exerciseResultCoordinates)) { +if (empty($exerciseResultCoordinates)) { $exerciseResultCoordinates = $_REQUEST['exerciseResultCoordinates']; } @@ -88,13 +86,13 @@ $choice = isset($_REQUEST['choice']) ? $_REQUEST['choice'] : null; $choice = empty($choice) ? $_REQUEST['choice2'] : null; //From submit modal -$current_question = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : null; +$current_question = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : null; //Error message $error = ''; //Table calls -$exercice_attemp_table = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT); +$exercice_attemp_table = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT); /* Teacher takes an exam and want to see a preview, we delete the objExercise from the session in order to get the latest changes in the exercise */ if (api_is_allowed_to_edit(null,true) && $_GET['preview'] == 1 ) { @@ -134,7 +132,6 @@ if (!is_object($objExercise)) { exit; } - //if reminder ends we jump to the exercise_reminder if ($objExercise->review_answers) { if ($remind_question_id == -1) { @@ -352,6 +349,7 @@ $exercise_sound = $objExercise->selectSound(); //in LP's is enabled the "remember question" feature? +//Getting media questions for this exercises $media_questions = $objExercise->get_media_list(); $media_question_is_active = $objExercise->media_is_activated($media_questions); @@ -363,10 +361,6 @@ if (!isset($_SESSION['questionList'])) { if ($objExercise->isRandom() && !empty($exercise_stat_info['data_tracking'])) { $questionList = explode(',', $exercise_stat_info['data_tracking']); } - - if ($media_question_is_active) { - //$questionList = $media_questions; - } Session::write('questionList', $questionList); if ($debug > 0) { error_log('$_SESSION[questionList] was set'); } } else { @@ -383,8 +377,9 @@ if (!empty($questionList)) { $question_count = count($questionList); } -if ($media_question_is_active) { - $question_count = count($media_questions); +//If media is on we redefine the question count +if ($media_question_is_active) { + $question_count = $objExercise->get_count_questions_when_using_medias(); } if ($formSent && isset($_POST)) { @@ -541,11 +536,8 @@ if ($question_count != 0) { } exit; } - } - //header("Location: exercise_result.php?origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&learnpath_item_view_id=$learnpath_item_view_id"); - //exit; + } } else { - //Time control is only enabled for ONE PER PAGE if (!empty($exe_id) && is_numeric($exe_id)) { //Verify if the current test is fraudulent @@ -557,13 +549,7 @@ if ($question_count != 0) { } else { $sql_exe_result = ", exe_result = 0"; if ($debug) { error_log('12. exercise_time_control_is_valid is NOT valid then exe_result = 0 '); } - } - /* - //Clean incomplete - @todo why setting to blank the status? - $update_query = "UPDATE $stat_table SET status = '', exe_date = '".api_get_utc_datetime() ."' , orig_lp_item_view_id = '$learnpath_item_view_id' $sql_exe_result WHERE exe_id = ".$exe_id; - - //if ($debug) { error_log('Updating track_e_exercises '.$update_query); } - Database::query($update_query);*/ + } } if ($objExercise->review_answers) { header('Location: exercise_reminder.php?'.$params); @@ -792,7 +778,7 @@ if (!empty($error)) { echo '