merge with tagalog

skala
Yannick Warnier 12 years ago
commit a157e82e30
  1. 5
      main/admin/user_information.php
  2. 9
      main/create_course/add_course.php
  3. 13
      main/document/document.php
  4. 48
      main/exercice/exercise.class.php
  5. 2
      main/exercice/exercise.lib.php
  6. 142
      main/exercice/exercise_submit.php
  7. 48
      main/exercice/media.php
  8. 2
      main/exercice/multiple_answer_combination_true_false.class.php
  9. 14
      main/exercice/question.class.php
  10. 19
      main/exercice/question_admin.inc.php
  11. 20
      main/exercice/savescores.php
  12. 52
      main/exercice/showinframes.php
  13. 178
      main/exercice/testcategory.class.php
  14. 24
      main/inc/ajax/exercise.ajax.php
  15. 6
      main/install/install.lib.php
  16. 8
      main/newscorm/lp_upload.php
  17. 9
      main/newscorm/scorm.class.php
  18. 6
      main/survey/generate_link.php
  19. 2
      main/survey/survey.lib.php
  20. 18
      main/template/default/create_course/add_course.tpl
  21. 118
      main/upload/form.scorm.php
  22. 1
      main/upload/upload.scorm.php

@ -161,6 +161,7 @@ if (Database::num_rows($res) > 0) {
/** /**
* Show the classes in which this user is subscribed * Show the classes in which this user is subscribed
*/ */
/*
$table_class_user = Database :: get_main_table(TABLE_MAIN_CLASS_USER); $table_class_user = Database :: get_main_table(TABLE_MAIN_CLASS_USER);
$table_class = Database :: get_main_table(TABLE_MAIN_CLASS); $table_class = Database :: get_main_table(TABLE_MAIN_CLASS);
$sql = 'SELECT * FROM '.$table_class_user.' cu, '.$table_class.' c '. $sql = 'SELECT * FROM '.$table_class_user.' cu, '.$table_class.' c '.
@ -182,8 +183,8 @@ if (Database::num_rows($res) > 0) {
Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => intval($_GET['user_id']))); Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => intval($_GET['user_id'])));
echo '</blockquote>'; echo '</blockquote>';
} else { } else {
Display::display_warning_message(get_lang('NoClassesForThisUser')); echo '<p>'.get_lang('NoClassesForThisUser').'</p>';
} }*/
/** /**
* Show the URL in which this user is subscribed * Show the URL in which this user is subscribed

@ -183,8 +183,9 @@ if (isset($_user['language']) && $_user['language'] != '') {
} }
$form->setDefaults($values); $form->setDefaults($values);
$message = null;
// Validate the form. // Validate the form
if ($form->validate()) { if ($form->validate()) {
$course_values = $form->exportValues(); $course_values = $form->exportValues();
@ -237,9 +238,9 @@ if ($form->validate()) {
$tpl->assign('course_title', Display::url($title, $link)); $tpl->assign('course_title', Display::url($title, $link));
$tpl->assign('course_id', $course_info['code']); $tpl->assign('course_id', $course_info['code']);
$add_course_tpl = $tpl->get_template('create_course/add_course.tpl'); $template = $tpl->get_template('create_course/add_course.tpl');
$message = $tpl->fetch($add_course_tpl); $tpl->display($template);
exit;
} else { } else {
$message = Display :: return_message(get_lang('CourseCreationFailed'), 'error', false); $message = Display :: return_message(get_lang('CourseCreationFailed'), 'error', false);
// Display the form. // Display the form.

@ -878,9 +878,16 @@ if (isset($_GET['keyword']) && !empty($_GET['keyword'])) {
} else { } else {
$docs_and_folders = DocumentManager::get_all_document_data($_course, $curdirpath, $to_group_id, null, $is_allowed_to_edit || $group_member_with_upload_rights, false); $docs_and_folders = DocumentManager::get_all_document_data($_course, $curdirpath, $to_group_id, null, $is_allowed_to_edit || $group_member_with_upload_rights, false);
} }
if (GroupManager::is_subscribed(api_get_user_id(), api_get_group_id()) || GroupManager :: is_tutor_of_group(api_get_user_id(), api_get_group_id()) || UserManager::is_admin(api_get_user_id())) { if (api_get_group_id() != 0) {
$folders = DocumentManager::get_all_document_folders($_course, $to_group_id, $is_allowed_to_edit || $group_member_with_upload_rights); if (GroupManager::is_subscribed(api_get_user_id(), api_get_group_id()) || GroupManager :: is_tutor_of_group(api_get_user_id(), api_get_group_id()) || UserManager::is_admin(api_get_user_id())) {
$folders = DocumentManager::get_all_document_folders($_course, api_get_group_id(), $is_allowed_to_edit || $group_member_with_upload_rights);
}
} else {
$folders = DocumentManager::get_all_document_folders($_course, api_get_group_id(), $is_allowed_to_edit || $group_member_with_upload_rights);
} }
//$folders = DocumentManager::get_all_document_folders($_course, $to_group_id, $is_allowed_to_edit || $group_member_with_upload_rights);
if ($folders === false) { if ($folders === false) {
$folders = array(); $folders = array();
} }
@ -1010,7 +1017,7 @@ $table_footer = '';
$total_size = 0; $total_size = 0;
if (isset($docs_and_folders) && is_array($docs_and_folders)) { if (isset($docs_and_folders) && is_array($docs_and_folders)) {
if (GroupManager::is_subscribed(api_get_user_id(), api_get_group_id()) || GroupManager :: is_tutor_of_group(api_get_user_id(), api_get_group_id()) || UserManager::is_admin(api_get_user_id())) { if (api_get_group_id() == 0 || (GroupManager::is_subscribed(api_get_user_id(), api_get_group_id()) || GroupManager :: is_tutor_of_group(api_get_user_id(), api_get_group_id()) || UserManager::is_admin(api_get_user_id()))) {
// Create a sortable table with our data // Create a sortable table with our data
$sortable_data = array(); $sortable_data = array();

@ -3357,7 +3357,27 @@ class Exercise {
$url_email = api_get_path(WEB_CODE_PATH).'exercice/exercise_show.php?'.api_get_cidreq().'&id_session='.api_get_session_id().'&id='.$exe_id.'&action=qualify'; $url_email = api_get_path(WEB_CODE_PATH).'exercice/exercise_show.php?'.api_get_cidreq().'&id_session='.api_get_session_id().'&id='.$exe_id.'&action=qualify';
$user_info = UserManager::get_user_info_by_id(api_get_user_id()); $user_info = UserManager::get_user_info_by_id(api_get_user_id());
$msg = '<p>'.get_lang('OralQuestionsAttempted').' :</p>
$oral_question_list = null;
foreach ($question_list_answers as $item) {
$question = $item['question'];
$answer = $item['answer'];
$answer_type = $item['answer_type'];
if (!empty($question) && !empty($answer) && $answer_type == ORAL_EXPRESSION) {
$oral_question_list.='<br /><table width="730" height="136" border="0" cellpadding="3" cellspacing="3"><tr>
<td width="220" valign="top" bgcolor="#E5EDF8">&nbsp;&nbsp;'.get_lang('Question').'</td>
<td width="473" valign="top" bgcolor="#F3F3F3">'.$question.'</td>
</tr>
<tr>
<td width="220" valign="top" bgcolor="#E5EDF8">&nbsp;&nbsp;'.get_lang('Answer').'</td>
<td valign="top" bgcolor="#F3F3F3">'.$answer.'</td>
</tr></table>';
}
}
if (!empty($oral_question_list)) {
$msg = '<p>'.get_lang('OralQuestionsAttempted').' :</p>
<p>'.get_lang('AttemptDetails').' : </p> <p>'.get_lang('AttemptDetails').' : </p>
<table class="data_table"> <table class="data_table">
<tr> <tr>
@ -3377,31 +3397,7 @@ class Exercise {
<td>#mail#</td> <td>#mail#</td>
</tr> </tr>
</table>'; </table>';
$oral_question_list = null; $msg .= '<br />'.sprintf(get_lang('OralQuestionsAttemptedAreX'),$oral_question_list).'<br />';
foreach ($question_list_answers as $item) {
$question = $item['question'];
$answer = $item['answer'];
$answer_type = $item['answer_type'];
if (!empty($question) && !empty($answer) && $answer_type == ORAL_EXPRESSION) {
$oral_question_list.='<tr>
<td width="220" valign="top" bgcolor="#E5EDF8">&nbsp;&nbsp;'.get_lang('Question').'</td>
<td width="473" valign="top" bgcolor="#F3F3F3">'.$question.'</td>
</tr>
<tr>
<td width="220" valign="top" bgcolor="#E5EDF8">&nbsp;&nbsp;'.get_lang('Answer').'</td>
<td valign="top" bgcolor="#F3F3F3">'.$answer.'</td>
</tr>';
}
}
if (!empty($oral_question_list)) {
$msg .= '<p><br />'.get_lang('OralQuestionsAttemptedAre').' :</p>
<table width="730" height="136" border="0" cellpadding="3" cellspacing="3">';
$msg .= $oral_question_list;
$msg.='</table><br />';
$msg1 = str_replace("#exercise#", $this->exercise, $msg); $msg1 = str_replace("#exercise#", $this->exercise, $msg);
$msg = str_replace("#firstName#", $user_info['firstname'],$msg1); $msg = str_replace("#firstName#", $user_info['firstname'],$msg1);
$msg1 = str_replace("#lastName#", $user_info['lastname'],$msg); $msg1 = str_replace("#lastName#", $user_info['lastname'],$msg);

@ -425,7 +425,7 @@ function showQuestion($questionId, $only_questions = false, $origin = false, $cu
} }
$correct_item = preg_quote($correct_item); $correct_item = preg_quote($correct_item);
$correct_item = api_preg_replace('|/|', '\/', $correct_item); // to prevent error if there is a / in the text to find $correct_item = api_preg_replace('|/|', '\/', $correct_item); // to prevent error if there is a / in the text to find
$answer = api_preg_replace('/'.$correct_item.'/', Display::input('text', "choice[$questionId][]", $value), $answer); $answer = api_preg_replace('/'.$correct_item.'/', Display::input('text', "choice[$questionId][]", $value), $answer, 1);
} }
$i++; $i++;
} }

@ -72,18 +72,12 @@ $reminder = isset($_REQUEST['reminder']) ? intval($_REQUEST['reminder']) : 0
$remind_question_id = isset($_REQUEST['remind_question_id']) ? intval($_REQUEST['remind_question_id']) : 0; $remind_question_id = isset($_REQUEST['remind_question_id']) ? intval($_REQUEST['remind_question_id']) : 0;
$exerciseId = isset($_REQUEST['exerciseId']) ? intval($_REQUEST['exerciseId']) : 0; $exerciseId = isset($_REQUEST['exerciseId']) ? intval($_REQUEST['exerciseId']) : 0;
if (empty($formSent)) { $formSent = isset($_REQUEST['formSent']) ? $_REQUEST['formSent'] : null;
$formSent = $_REQUEST['formSent']; $exerciseResult = isset($_REQUEST['exerciseResult']) ? $_REQUEST['exerciseResult'] : null;
} $exerciseResultCoordinates = isset($_REQUEST['exerciseResultCoordinates']) ? $_REQUEST['exerciseResultCoordinates'] : null;
if (empty($exerciseResult)) {
$exerciseResult = $_REQUEST['exerciseResult'];
}
if (empty($exerciseResultCoordinates)) {
$exerciseResultCoordinates = $_REQUEST['exerciseResultCoordinates'];
}
$choice = isset($_REQUEST['choice']) ? $_REQUEST['choice'] : null; $choice = isset($_REQUEST['choice']) ? $_REQUEST['choice'] : null;
$choice = empty($choice) ? $_REQUEST['choice2'] : null; $choice = empty($choice) ? isset($_REQUEST['choice2']) ? $_REQUEST['choice2'] : null : null;
//From submit modal //From submit modal
$current_question = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : null; $current_question = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : null;
@ -95,7 +89,7 @@ $error = '';
$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 */ /* 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 ) { if (api_is_allowed_to_edit(null,true) && isset($_GET['preview']) && $_GET['preview'] == 1 ) {
Session::erase('objExercise'); Session::erase('objExercise');
} }
@ -200,7 +194,7 @@ if ($objExercise->selectAttempts() > 0) {
$attempt_html .= Display::return_message(sprintf(get_lang('ReachedMaxAttempts'), $exercise_title, $objExercise->selectAttempts()), 'warning', false); $attempt_html .= Display::return_message(sprintf(get_lang('ReachedMaxAttempts'), $exercise_title, $objExercise->selectAttempts()), 'warning', false);
} }
} else { } else {
$attempt_html .= Display :: return_message(sprintf(get_lang('ReachedMaxAttempts'), $exercise_title, $objExercise->selectAttempts()), 'warning', false); $attempt_html .= Display :: return_message(sprintf(get_lang('ReachedMaxAttempts'), $exercise_title, $objExercise->selectAttempts()), 'warning', false);
//Display :: display_warning_message(sprintf(get_lang('ReachedMaxAttemptsAdmin'), $exercise_title, $objExercise->selectAttempts()), false); //Display :: display_warning_message(sprintf(get_lang('ReachedMaxAttemptsAdmin'), $exercise_title, $objExercise->selectAttempts()), false);
} }
@ -223,13 +217,13 @@ if ($debug) { error_log("4. Setting the exe_id: $exe_id");} ;
//5. Getting user exercise info (if the user took the exam before) - generating exe_id //5. Getting user exercise info (if the user took the exam before) - generating exe_id
//var_dump($learnpath_id.' - '.$learnpath_item_id.' - '.$learnpath_item_view_id); //var_dump($learnpath_id.' - '.$learnpath_item_id.' - '.$learnpath_item_view_id);
$exercise_stat_info = $objExercise->get_stat_track_exercise_info($learnpath_id, $learnpath_item_id, $learnpath_item_view_id); $exercise_stat_info = $objExercise->get_stat_track_exercise_info($learnpath_id, $learnpath_item_id, $learnpath_item_view_id);
$clock_expired_time = null; $clock_expired_time = null;
if (empty($exercise_stat_info)) { if (empty($exercise_stat_info)) {
if ($debug) error_log('5 $exercise_stat_info is empty '); if ($debug) error_log('5 $exercise_stat_info is empty ');
$total_weight = 0; $total_weight = 0;
$questionList = $objExercise->get_question_list(true); $questionList = $objExercise->get_question_list(true);
foreach ($questionList as $question_id) { foreach ($questionList as $question_id) {
$objQuestionTmp = Question::read($question_id); $objQuestionTmp = Question::read($question_id);
$total_weight += floatval($objQuestionTmp->weighting); $total_weight += floatval($objQuestionTmp->weighting);
@ -346,8 +340,8 @@ if ($time_control) { //Sends the exercice form when the expired time is finished
// if the user has submitted the form // if the user has submitted the form
$exercise_title = $objExercise->selectTitle(); $exercise_title = $objExercise->selectTitle();
$exercise_sound = $objExercise->selectSound(); $exercise_sound = $objExercise->selectSound();
//Media questions //Media questions
$media_questions = $objExercise->get_media_list(); $media_questions = $objExercise->get_media_list();
@ -355,7 +349,7 @@ $media_is_activated = $objExercise->media_is_activated($media_questions);
//in LP's is enabled the "remember question" feature? //in LP's is enabled the "remember question" feature?
if (!isset($_SESSION['questionList'])) { if (!isset($_SESSION['questionList'])) {
// selects the list of question ID // selects the list of question ID
$questionList = $objExercise->get_question_list(false); $questionList = $objExercise->get_question_list(false);
@ -366,7 +360,7 @@ if (!isset($_SESSION['questionList'])) {
Session::write('questionList', $questionList); Session::write('questionList', $questionList);
if ($debug > 0) { error_log('$_SESSION[questionList] was set'); } if ($debug > 0) { error_log('$_SESSION[questionList] was set'); }
} else { } else {
if (isset($objExercise) && isset($_SESSION['objExercise'])) { if (isset($objExercise) && isset($_SESSION['objExercise'])) {
$questionList = Session::read('questionList'); $questionList = Session::read('questionList');
} }
} }
@ -392,7 +386,7 @@ if ($formSent && isset($_POST)) {
} }
// Filling array exercise result // Filling array exercise result
// if the user has answered at least one question // if the user has answered at least one question
if (is_array($choice)) { if (is_array($choice)) {
if ($debug) { error_log('9.1. $choice is an array '.print_r($choice, 1)); } if ($debug) { error_log('9.1. $choice is an array '.print_r($choice, 1)); }
@ -474,13 +468,6 @@ if ($formSent && isset($_POST)) {
$sql_exe_result = ", exe_result = 0"; $sql_exe_result = ", exe_result = 0";
if ($debug) { error_log('exercise_time_control_is_valid is NOT valid then exe_result = 0 '); } if ($debug) { error_log('exercise_time_control_is_valid is NOT valid then exe_result = 0 '); }
} }
/*
//Clean incomplete - @todo why setting to blank the status?
$stat_table = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$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 ($debug) { error_log('10. Redirecting to exercise_show.php'); } if ($debug) { error_log('10. Redirecting to exercise_show.php'); }
header("Location: exercise_result.php?".api_get_cidreq()."&exe_id=$exe_id&origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&learnpath_item_view_id=$learnpath_item_view_id"); header("Location: exercise_result.php?".api_get_cidreq()."&exe_id=$exe_id&origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&learnpath_item_view_id=$learnpath_item_view_id");
@ -528,9 +515,7 @@ if ($question_count != 0) {
} }
exit; 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 { } else {
//Time control is only enabled for ONE PER PAGE //Time control is only enabled for ONE PER PAGE
if (!empty($exe_id) && is_numeric($exe_id)) { if (!empty($exe_id) && is_numeric($exe_id)) {
@ -543,13 +528,14 @@ if ($question_count != 0) {
} else { } else {
$sql_exe_result = ", exe_result = 0"; $sql_exe_result = ", exe_result = 0";
if ($debug) { error_log('12. exercise_time_control_is_valid is NOT valid then exe_result = 0 '); } if ($debug) { error_log('12. exercise_time_control_is_valid is NOT valid then exe_result = 0 '); }
} }
} }
if ($objExercise->review_answers) { if ($objExercise->review_answers) {
header('Location: exercise_reminder.php?'.$params); header('Location: exercise_reminder.php?'.$params);
exit; exit;
} else { } else {
header("Location: exercise_result.php?".api_get_cidreq()."&exe_id=$exe_id&origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&learnpath_item_view_id=$learnpath_item_view_id"); header("Location: exercise_result.php?".api_get_cidreq()."&exe_id=$exe_id&origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&learnpath_item_view_id=$learnpath_item_view_id");
exit;
} }
} }
} else { } else {
@ -642,7 +628,7 @@ if ($limit_time_exists) {
exit; exit;
} else { } else {
$message_warning = $permission_to_start ? get_lang('ReachedTimeLimitAdmin') : get_lang('ExerciseNoStartedAdmin'); $message_warning = $permission_to_start ? get_lang('ReachedTimeLimitAdmin') : get_lang('ExerciseNoStartedAdmin');
Display :: display_warning_message(sprintf($message_warning, $exercise_title, $objExercise->selectAttempts())); Display :: display_warning_message(sprintf($message_warning, $exercise_title, $objExercise->selectAttempts()));
} }
} }
} }
@ -660,7 +646,7 @@ if (isset($_custom['exercises_hidden_when_no_start_date']) && $_custom['exercise
//Timer control //Timer control
if ($time_control) { if ($time_control) {
echo $objExercise->return_time_left_div(); echo $objExercise->return_time_left_div();
echo '<div style="display:none" class="warning-message" id="expired-message-id">'.get_lang('ExerciceExpiredTimeMessage').'</div>'; echo '<div style="display:none" class="warning-message" id="expired-message-id">'.get_lang('ExerciceExpiredTimeMessage').'</div>';
} }
@ -685,7 +671,7 @@ if ($origin != 'learnpath') {
} }
if ($reminder == 2) { if ($reminder == 2) {
if ($debug) { error_log('. $reminder == 2'); } if ($debug) { error_log(' $reminder == 2'); }
$data_tracking = $exercise_stat_info['data_tracking']; $data_tracking = $exercise_stat_info['data_tracking'];
$data_tracking = explode(',', $data_tracking); $data_tracking = explode(',', $data_tracking);
@ -751,7 +737,7 @@ if (!empty($error)) {
$number_of_hotspot_questions = 0; $number_of_hotspot_questions = 0;
$onsubmit = ''; $onsubmit = '';
$i = 0; $i = 0;
if (!empty($questionList)) { if (!empty($questionList)) {
foreach ($questionList as $questionId) { foreach ($questionList as $questionId) {
$i++; $i++;
@ -791,26 +777,26 @@ if (!empty($error)) {
//$(this).find(".exercise_save_now_button").hide(); //$(this).find(".exercise_save_now_button").hide();
$(this).removeClass("question_highlight"); $(this).removeClass("question_highlight");
}); });
$(".no_remind_highlight").hide(); $(".no_remind_highlight").hide();
}); });
function previous_question(question_num) { function previous_question(question_num) {
url = "exercise_submit.php?'.$params.'&num="+question_num; url = "exercise_submit.php?'.$params.'&num="+question_num;
window.location = url; window.location = url;
} }
function previous_question_and_save(previous_question_id, question_id_to_save) { function previous_question_and_save(previous_question_id, question_id_to_save) {
url = "exercise_submit.php?'.$params.'&num="+previous_question_id; url = "exercise_submit.php?'.$params.'&num="+previous_question_id;
//Save the current question //Save the current question
save_now(question_id_to_save, url); save_now(question_id_to_save, url);
} }
function save_question_list(question_list) { function save_question_list(question_list) {
$.each(question_list, function(key, question_id) { $.each(question_list, function(key, question_id) {
save_now(question_id, null, false); save_now(question_id, null, false);
}); });
var url = ""; var url = "";
if ('.$reminder.' == 1 ) { if ('.$reminder.' == 1 ) {
url = "exercise_reminder.php?'.$params.'&num='.$current_question.'"; url = "exercise_reminder.php?'.$params.'&num='.$current_question.'";
@ -819,15 +805,15 @@ if (!empty($error)) {
} else { } else {
url = "exercise_submit.php?'.$params.'&num='.$current_question.'&remind_question_id='.$remind_question_id.'"; url = "exercise_submit.php?'.$params.'&num='.$current_question.'&remind_question_id='.$remind_question_id.'";
} }
//$("#save_for_now_"+question_id).html("'.addslashes(Display::return_icon('save.png', get_lang('Saved'), array(), ICON_SIZE_SMALL)).'"); //$("#save_for_now_"+question_id).html("'.addslashes(Display::return_icon('save.png', get_lang('Saved'), array(), ICON_SIZE_SMALL)).'");
window.location = url; window.location = url;
} }
function save_now(question_id, url_extra, redirect) { function save_now(question_id, url_extra, redirect) {
if (redirect == undefined) { if (redirect == undefined) {
redirect = true; redirect = true;
} }
//1. Normal choice inputs //1. Normal choice inputs
var my_choice = $(\'*[name*="choice[\'+question_id+\']"]\').serialize(); var my_choice = $(\'*[name*="choice[\'+question_id+\']"]\').serialize();
@ -858,7 +844,7 @@ if (!empty($error)) {
// Only for the first time // Only for the first time
$("#save_for_now_"+question_id).html(" '.addslashes(Display::return_icon('loading1.gif')).'"); $("#save_for_now_"+question_id).html(" '.addslashes(Display::return_icon('loading1.gif')).'");
$.ajax({ $.ajax({
type:"post", type:"post",
async: false, async: false,
@ -883,9 +869,9 @@ if (!empty($error)) {
if (url_extra) { if (url_extra) {
url = url_extra; url = url_extra;
} }
$("#save_for_now_"+question_id).html("'.addslashes(Display::return_icon('save.png', get_lang('Saved'), array(), ICON_SIZE_SMALL)).'"); $("#save_for_now_"+question_id).html("'.addslashes(Display::return_icon('save.png', get_lang('Saved'), array(), ICON_SIZE_SMALL)).'");
if (redirect) { if (redirect) {
window.location = url; window.location = url;
} }
@ -897,7 +883,7 @@ if (!empty($error)) {
}); });
return false; return false;
} }
function save_now_all(validate) { function save_now_all(validate) {
//1. Input choice //1. Input choice
var my_choice = $(\'*[name*="choice"]\').serialize(); var my_choice = $(\'*[name*="choice"]\').serialize();
@ -925,7 +911,7 @@ if (!empty($error)) {
} }
} }
}); });
//lok+(fgt)= data base //lok+(fgt)= data base
free_answers = $.param(free_answers); free_answers = $.param(free_answers);
@ -957,7 +943,7 @@ if (!empty($error)) {
return false; return false;
} }
</script>'; </script>';
echo '<form id="exercise_form" method="post" action="'.api_get_self().'?'.api_get_cidreq().'&autocomplete=off&gradebook='.$gradebook."&exerciseId=" . $exerciseId .'" name="frm_exercise" '.$onsubmit.'> echo '<form id="exercise_form" method="post" action="'.api_get_self().'?'.api_get_cidreq().'&autocomplete=off&gradebook='.$gradebook."&exerciseId=" . $exerciseId .'" name="frm_exercise" '.$onsubmit.'>
<input type="hidden" name="formSent" value="1" /> <input type="hidden" name="formSent" value="1" />
<input type="hidden" name="exerciseId" value="'.$exerciseId . '" /> <input type="hidden" name="exerciseId" value="'.$exerciseId . '" />
@ -970,7 +956,7 @@ if (!empty($error)) {
//Show list of questions //Show list of questions
$i = 1; $i = 1;
$attempt_list = array(); $attempt_list = array();
if (isset($exe_id)) { if (isset($exe_id)) {
$attempt_list = get_all_exercise_event_by_exe_id($exe_id); $attempt_list = get_all_exercise_event_by_exe_id($exe_id);
@ -978,17 +964,17 @@ if (!empty($error)) {
$remind_list = array(); $remind_list = array();
if (isset($exercise_stat_info['questions_to_check']) && !empty($exercise_stat_info['questions_to_check'])) { if (isset($exercise_stat_info['questions_to_check']) && !empty($exercise_stat_info['questions_to_check'])) {
$remind_list = explode(',', $exercise_stat_info['questions_to_check']); $remind_list = explode(',', $exercise_stat_info['questions_to_check']);
} }
render_question_list($objExercise, $questionList, $current_question, $exerciseResult, $attempt_list, $remind_list, $media_questions); render_question_list($objExercise, $questionList, $current_question, $exerciseResult, $attempt_list, $remind_list, $media_questions);
echo '</form>'; echo '</form>';
} }
function render_question_list($objExercise, $questionList, $current_question, $exerciseResult, $attempt_list, $remind_list, $media_questions = array()) { function render_question_list($objExercise, $questionList, $current_question, $exerciseResult, $attempt_list, $remind_list, $media_questions = array()) {
global $origin; global $origin;
$i = 1; $i = 1;
//Normal question list render //Normal question list render
foreach ($questionList as $questionId) { foreach ($questionList as $questionId) {
// for sequential exercises // for sequential exercises
if ($objExercise->type == ONE_PER_PAGE) { if ($objExercise->type == ONE_PER_PAGE) {
// if it is not the right question, goes to the next loop iteration // if it is not the right question, goes to the next loop iteration
@ -1000,7 +986,7 @@ function render_question_list($objExercise, $questionList, $current_question, $e
// if the user has already answered this question // if the user has already answered this question
if (isset($exerciseResult[$questionId])) { if (isset($exerciseResult[$questionId])) {
// construction of the Question object // construction of the Question object
$objQuestionTmp = Question::read($questionId); $objQuestionTmp = Question::read($questionId);
// destruction of the Question object // destruction of the Question object
unset ($objQuestionTmp); unset ($objQuestionTmp);
Display :: display_normal_message(get_lang('AlreadyAnswered')); Display :: display_normal_message(get_lang('AlreadyAnswered'));
@ -1010,16 +996,16 @@ function render_question_list($objExercise, $questionList, $current_question, $e
} }
} }
} }
//Medias question render //Medias question render
if (isset($media_questions) && !empty($media_questions)) { if (isset($media_questions) && !empty($media_questions)) {
$media_question_list = $media_questions[$questionId]; $media_question_list = $media_questions[$questionId];
$objQuestionTmp = Question::read($questionId); $objQuestionTmp = Question::read($questionId);
$counter = 1; $counter = 1;
if ($objQuestionTmp->type == MEDIA_QUESTION) { if ($objQuestionTmp->type == MEDIA_QUESTION) {
echo $objQuestionTmp->show_media_content(); echo $objQuestionTmp->show_media_content();
$count_of_questions_inside_media = count($media_question_list); $count_of_questions_inside_media = count($media_question_list);
//var_dump($media_question_list); //var_dump($media_question_list);
//Show questions that belongs to a media //Show questions that belongs to a media
@ -1030,14 +1016,14 @@ function render_question_list($objExercise, $questionList, $current_question, $e
} }
render_question($objExercise, $my_question_id, $attempt_list, $remind_list, $i, $current_question, $media_question_list, $last_question_in_media); render_question($objExercise, $my_question_id, $attempt_list, $remind_list, $i, $current_question, $media_question_list, $last_question_in_media);
$counter++; $counter++;
} }
} }
} else { } else {
render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question); render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question);
} }
} else { } else {
//Normal question render //Normal question render
render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question); render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question);
} }
$i++; $i++;
@ -1047,7 +1033,7 @@ function render_question_list($objExercise, $questionList, $current_question, $e
break; break;
} }
} }
// end foreach() // end foreach()
if ($objExercise->type == ALL_ON_ONE_PAGE) { if ($objExercise->type == ALL_ON_ONE_PAGE) {
$exercise_actions = $objExercise->show_button($questionId, $current_question); $exercise_actions = $objExercise->show_button($questionId, $current_question);
@ -1055,7 +1041,7 @@ function render_question_list($objExercise, $questionList, $current_question, $e
} }
} }
function render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question, $questions_in_media = array(), $last_question_in_media = false) { function render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question, $questions_in_media = array(), $last_question_in_media = false) {
global $origin; global $origin;
$user_choice = isset($attempt_list[$questionId]) ? $attempt_list[$questionId] : null; $user_choice = isset($attempt_list[$questionId]) ? $attempt_list[$questionId] : null;
@ -1063,21 +1049,21 @@ function render_question($objExercise, $questionId, $attempt_list, $remind_list,
//Hides questions when reviewing a ALL_ON_ONE_PAGE exercise see #4542 no_remind_highlight class hide with jquery //Hides questions when reviewing a ALL_ON_ONE_PAGE exercise see #4542 no_remind_highlight class hide with jquery
if ($objExercise->type == ALL_ON_ONE_PAGE && isset($_GET['reminder']) && $_GET['reminder'] == 2) { if ($objExercise->type == ALL_ON_ONE_PAGE && isset($_GET['reminder']) && $_GET['reminder'] == 2) {
$remind_highlight = 'no_remind_highlight'; $remind_highlight = 'no_remind_highlight';
} }
$is_remind_on = false; $is_remind_on = false;
$attributes = array('id' =>'remind_list['.$questionId.']'); $attributes = array('id' =>'remind_list['.$questionId.']');
if (in_array($questionId, $remind_list)) { if (in_array($questionId, $remind_list)) {
$is_remind_on = true; $is_remind_on = true;
$attributes['checked'] = 1; $attributes['checked'] = 1;
$remind_highlight = ' remind_highlight '; $remind_highlight = ' remind_highlight ';
} }
//Showing the question //Showing the question
$exercise_actions = null; $exercise_actions = null;
echo '<div id="question_div_'.$questionId.'" class="main_question '.$remind_highlight.'" >'; echo '<div id="question_div_'.$questionId.'" class="main_question '.$remind_highlight.'" >';
@ -1096,11 +1082,11 @@ function render_question($objExercise, $questionId, $attempt_list, $remind_list,
$exercise_actions .= Display::div($button, array('class'=>'exercise_save_now_button')); $exercise_actions .= Display::div($button, array('class'=>'exercise_save_now_button'));
break; break;
} }
if (!empty($questions_in_media)) { if (!empty($questions_in_media)) {
/*$button = '<a href="javascript://" class="btn" onclick="save_now(\''.$questionId.'\'); ">'.get_lang('SaveForNow').'</a>'; /*$button = '<a href="javascript://" class="btn" onclick="save_now(\''.$questionId.'\'); ">'.get_lang('SaveForNow').'</a>';
$button .= '<span id="save_for_now_'.$questionId.'"></span>&nbsp;'; $button .= '<span id="save_for_now_'.$questionId.'"></span>&nbsp;';
$exercise_actions = Display::div($button, array('class'=>'exercise_save_now_button')); $exercise_actions = Display::div($button, array('class'=>'exercise_save_now_button'));
$exercise_actions .= $objExercise->show_button($questionId, $current_question);*/ $exercise_actions .= $objExercise->show_button($questionId, $current_question);*/
$count_of_questions_inside_media = count($questions_in_media); $count_of_questions_inside_media = count($questions_in_media);
if ($count_of_questions_inside_media > 1) { if ($count_of_questions_inside_media > 1) {
@ -1108,8 +1094,8 @@ function render_question($objExercise, $questionId, $attempt_list, $remind_list,
$button .= '<span id="save_for_now_'.$questionId.'" class="exercise_save_mini_message"></span>&nbsp;'; $button .= '<span id="save_for_now_'.$questionId.'" class="exercise_save_mini_message"></span>&nbsp;';
$exercise_actions = Display::div($button, array('class'=>'exercise_save_now_button')); $exercise_actions = Display::div($button, array('class'=>'exercise_save_now_button'));
} }
if ($last_question_in_media) { if ($last_question_in_media) {
$exercise_actions = $objExercise->show_button($questionId, $current_question, $questions_in_media); $exercise_actions = $objExercise->show_button($questionId, $current_question, $questions_in_media);
} }
} }
@ -1119,7 +1105,7 @@ function render_question($objExercise, $questionId, $attempt_list, $remind_list,
$remind_question_div = Display::tag('label', Display::input('checkbox', 'remind_list['.$questionId.']', '', $attributes).get_lang('ReviewQuestionLater'), array('class' => 'checkbox', 'for' =>'remind_list['.$questionId.']')); $remind_question_div = Display::tag('label', Display::input('checkbox', 'remind_list['.$questionId.']', '', $attributes).get_lang('ReviewQuestionLater'), array('class' => 'checkbox', 'for' =>'remind_list['.$questionId.']'));
$exercise_actions .= Display::div($remind_question_div, array('class'=>'exercise_save_now_button')); $exercise_actions .= Display::div($remind_question_div, array('class'=>'exercise_save_now_button'));
} }
echo Display::div($exercise_actions, array('class'=>'form-actions')); echo Display::div($exercise_actions, array('class'=>'form-actions'));
echo '</div>'; echo '</div>';
} }

@ -22,82 +22,86 @@ $action = isset($_GET['action']) ? $_GET['action'] : null;
$page_url = "media.php?".api_get_cidreq(); $page_url = "media.php?".api_get_cidreq();
$token = Security::get_token();
switch ($action) { switch ($action) {
case 'add': case 'add':
$url = $page_url.'&action='.Security::remove_XSS($_GET['action']); $url = $page_url.'&action='.Security::remove_XSS($_GET['action']);
$objQuestion = Question::getInstance(MEDIA_QUESTION); $objQuestion = Question::getInstance(MEDIA_QUESTION);
$form = new FormValidator('question_admin_form','post', $url); $form = new FormValidator('question_admin_form', 'post' , $url);
// question form elements // question form elements
$objQuestion->createForm($form); $objQuestion->createForm($form);
$objQuestion->createAnswersForm($form); $objQuestion->createAnswersForm($form);
if ($form->validate()) { if ($form->validate()) {
// question // question
$objQuestion->processCreation($form, null); $objQuestion->processCreation($form, null);
// answers // answers
$objQuestion->processAnswersCreation($form, null); $objQuestion->processAnswersCreation($form, null);
header('Location: '.$page_url);
exit;
} }
$form->display(); $form->display();
break; break;
case 'edit': case 'edit':
$url = $page_url.'&action='.Security::remove_XSS($_GET['action']).'&id='.intval($_GET['id']); $url = $page_url.'&action='.Security::remove_XSS($_GET['action']).'&id='.intval($_GET['id']);
$objQuestion = Question::read($_GET['id']); $objQuestion = Question::read($_GET['id']);
$form = new FormValidator('question_admin_form','post', $url); $form = new FormValidator('question_admin_form','post', $url);
// question form elements // question form elements
$objQuestion->createForm($form); $objQuestion->createForm($form);
$objQuestion->createAnswersForm($form); $objQuestion->createAnswersForm($form);
$form->addElement('hidden', 'id', intval($_GET['id'])); $form->addElement('hidden', 'id', intval($_GET['id']));
$defaults = array(); $defaults = array();
$defaults['questionName'] = $objQuestion->question; $defaults['questionName'] = $objQuestion->question;
$defaults['questionDescription'] = $objQuestion->description; $defaults['questionDescription'] = $objQuestion->description;
$defaults['questionLevel'] = $objQuestion->level; $defaults['questionLevel'] = $objQuestion->level;
$defaults['questionCategory'] = $objQuestion->category_list; $defaults['questionCategory'] = $objQuestion->category_list;
$defaults['parent_id'] = $objQuestion->parent_id; $defaults['parent_id'] = $objQuestion->parent_id;
$form->setDefaults($defaults); $form->setDefaults($defaults);
$form->display(); $form->display();
if ($form->validate()) { if ($form->validate()) {
// question // question
$objQuestion->processCreation($form, null); $objQuestion->processCreation($form, null);
// answers // answers
$objQuestion->processAnswersCreation($form, null); $objQuestion->processAnswersCreation($form, null);
} }
break; break;
case 'delete': case 'delete':
$objQuestion = Question::read($_GET['id']); $objQuestion = Question::read($_GET['id']);
$objQuestion->delete(); $objQuestion->delete();
break; break;
} }
//jqgrid will use this URL to do the selects //jqgrid will use this URL to do the selects
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_course_exercise_medias'; $url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_course_exercise_medias';
//The order is important you need to check the the $column variable in the model.ajax.php file //The order is important you need to check the the $column variable in the model.ajax.php file
$columns = array(get_lang('Name'), get_lang('Actions')); $columns = array(get_lang('Name'), get_lang('Actions'));
//Column config //Column config
$column_model = array( $column_model = array(
array('name'=>'name', 'index'=>'name', 'width'=>'80', 'align'=>'left'), array('name'=>'name', 'index'=>'name', 'width'=>'80', 'align'=>'left'),
array('name'=>'actions', 'index'=>'actions', 'width'=>'100', 'align'=>'left','formatter'=>'action_formatter','sortable'=>'false') array('name'=>'actions', 'index'=>'actions', 'width'=>'100', 'align'=>'left','formatter'=>'action_formatter','sortable'=>'false')
); );
//Autowidth //Autowidth
$extra_params['autowidth'] = 'true'; $extra_params['autowidth'] = 'true';
//height auto //height auto
$extra_params['height'] = 'auto'; $extra_params['height'] = 'auto';
//With this function we can add actions to the jgrid (edit, delete, etc) //With this function we can add actions to the jgrid (edit, delete, etc)
$action_links = 'function action_formatter(cellvalue, options, rowObject) { $action_links = 'function action_formatter(cellvalue, options, rowObject) {
return \'<a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'. return \'<a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.
'&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;" href="?sec_token='.$token.'&action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>'. '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;" href="?sec_token='.$token.'&action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>'.
'\'; '\';
}'; }';
?> ?>
<script> <script>
$(function() { $(function() {
<?php <?php
// grid definition see the $career->display() function // grid definition see the $career->display() function
echo Display::grid_js('medias', $url, $columns, $column_model, $extra_params, array(), $action_links, true); echo Display::grid_js('medias', $url, $columns, $column_model, $extra_params, array(), $action_links, true);
?> ?>
}); });
</script> </script>
<?php <?php
@ -105,4 +109,4 @@ $items = array(
array('content' => Display::return_icon('add.png'), 'url' => $page_url.'&action=add') array('content' => Display::return_icon('add.png'), 'url' => $page_url.'&action=add')
); );
echo Display::actions($items); echo Display::actions($items);
echo Display::grid_html('medias'); echo Display::grid_html('medias');

@ -10,7 +10,7 @@
* Code * Code
*/ */
if(class_exists('MultipleAnswerCombinationTrueFalse')) { return true; } if(class_exists('MultipleAnswerCombinationTrueFalse')) { return true; }
require 'multiple_answer_combination.class.php'; require_once 'multiple_answer_combination.class.php';
/** /**
CLASS MultipleAnswer CLASS MultipleAnswer
* *

@ -1199,9 +1199,9 @@ abstract class Question
// default content // default content
$isContent = isset($_REQUEST['isContent']) ? intval($_REQUEST['isContent']) : null; $isContent = isset($_REQUEST['isContent']) ? intval($_REQUEST['isContent']) : null;
// question type // Question type
$answerType= intval($_REQUEST['answerType']); $answerType = isset($_REQUEST['answerType']) ? intval($_REQUEST['answerType']) : null;
$form->addElement('hidden','answerType',$_REQUEST['answerType']); $form->addElement('hidden','answerType', $_REQUEST['answerType']);
// html editor // html editor
$editor_config = array('ToolbarSet' => 'TestQuestionDescription', 'Width' => '100%', 'Height' => '150'); $editor_config = array('ToolbarSet' => 'TestQuestionDescription', 'Width' => '100%', 'Height' => '150');
@ -1222,7 +1222,8 @@ abstract class Question
$form -> addElement ('html','</div>'); $form -> addElement ('html','</div>');
// hidden values // hidden values
$form->addElement('hidden', 'myid', intval($_REQUEST['myid'])); $my_id = isset($_REQUEST['myid']) ? intval($_REQUEST['myid']) : null;
$form->addElement('hidden', 'myid', $my_id);
if ($this->type != MEDIA_QUESTION) { if ($this->type != MEDIA_QUESTION) {
@ -1456,17 +1457,14 @@ abstract class Question
$question_title = $this->question; $question_title = $this->question;
// display question category, if any // display question category, if any
$header = Testcategory::returnCategoryAndTitle($this->id); //$header = Testcategory::returnCategoryAndTitle($this->id);
$show_media = null; $show_media = null;
if ($show_media) { if ($show_media) {
$header .= $this->show_media_content(); $header .= $this->show_media_content();
} }
$header .= Display::page_subheader2($counter_label.". ".$question_title); $header .= Display::page_subheader2($counter_label.". ".$question_title);
//$header .= Display::div('<div class="rib rib-'.$class.'"><h3>'.$score_label.'</h3></div> <h4>'.($score['result']).' </h4><h5 class="'.$class.'">'.$score['result'].' </h5>', array('class'=>'ribbon'));
$header .= Display::div('<div class="rib rib-'.$class.'"><h3>'.$score_label.'</h3></div> <h4>'.$score['result'].' </h4>', array('class'=>'ribbon')); $header .= Display::div('<div class="rib rib-'.$class.'"><h3>'.$score_label.'</h3></div> <h4>'.$score['result'].' </h4>', array('class'=>'ribbon'));
$header .= Display::div($this->description, array('id'=>'question_description')); $header .= Display::div($this->description, array('id'=>'question_description'));
return $header; return $header;
} }

@ -1,12 +1,11 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/** /**
* Statement (?) administration
* This script allows to manage the statements of questions. * This script allows to manage the statements of questions.
* It is included from the script admin.php * It is included from the script admin.php
* @package chamilo.exercise * @package chamilo.exercise
* @author Olivier Brouckaert * @author Olivier Brouckaert
* @version $Id: question_admin.inc.php 22126 2009-07-15 22:38:39Z juliomontoya $ * @author Julio Montoya
*/ */
/** /**
* Code * Code
@ -16,7 +15,7 @@ $course_id = api_get_course_int_id();
// INIT QUESTION // INIT QUESTION
if (isset($_GET['editQuestion'])) { if (isset($_GET['editQuestion'])) {
$objQuestion = Question::read ($_GET['editQuestion']); $objQuestion = Question::read ($_GET['editQuestion']);
$action = api_get_self()."?".api_get_cidreq()."&myid=1&modifyQuestion=".$modifyQuestion."&editQuestion=".$objQuestion->id; $action = api_get_self()."?".api_get_cidreq()."&myid=1&modifyQuestion=".$modifyQuestion."&editQuestion=".$objQuestion->id;
} else { } else {
$objQuestion = Question :: getInstance($_REQUEST['answerType']); $objQuestion = Question :: getInstance($_REQUEST['answerType']);
@ -26,7 +25,7 @@ if (isset($_GET['editQuestion'])) {
if (is_object($objQuestion)) { if (is_object($objQuestion)) {
//FORM CREATION //FORM CREATION
$form = new FormValidator('question_admin_form','post', $action); $form = new FormValidator('question_admin_form','post', $action);
if(isset($_GET['editQuestion'])) { if(isset($_GET['editQuestion'])) {
$class="btn save"; $class="btn save";
$text=get_lang('ModifyQuestion'); $text=get_lang('ModifyQuestion');
@ -42,7 +41,7 @@ if (is_object($objQuestion)) {
// form title // form title
$form->addElement('header', $text.': '.$form_title_extra); $form->addElement('header', $text.': '.$form_title_extra);
// question form elements // question form elements
$objQuestion->createForm($form); $objQuestion->createForm($form);
@ -55,19 +54,19 @@ if (is_object($objQuestion)) {
} }
// FORM VALIDATION // FORM VALIDATION
if (isset($_POST['submitQuestion']) && $form->validate()) { if (isset($_POST['submitQuestion']) && $form->validate()) {
// question // question
$objQuestion->processCreation($form, $objExercise); $objQuestion->processCreation($form, $objExercise);
// answers // answers
$objQuestion->processAnswersCreation($form, $nb_answers); $objQuestion->processAnswersCreation($form, $nb_answers);
// TODO: maybe here is the better place to index this tool, including answers text // TODO: maybe here is the better place to index this tool, including answers text
// redirect // redirect
if ($objQuestion -> type != HOT_SPOT && $objQuestion -> type != HOT_SPOT_DELINEATION) { if ($objQuestion -> type != HOT_SPOT && $objQuestion -> type != HOT_SPOT_DELINEATION) {
if(isset($_GET['editQuestion'])) { if(isset($_GET['editQuestion'])) {
echo '<script type="text/javascript">window.location.href="admin.php?exerciseId='.$exerciseId.'&message=ItemUpdated"</script>'; echo '<script type="text/javascript">window.location.href="admin.php?exerciseId='.$exerciseId.'&message=ItemUpdated"</script>';
} else { } else {
@ -77,7 +76,7 @@ if (is_object($objQuestion)) {
} else { } else {
echo '<script type="text/javascript">window.location.href="admin.php?exerciseId='.$exerciseId.'&hotspotadmin='.$objQuestion->id.'"</script>'; echo '<script type="text/javascript">window.location.href="admin.php?exerciseId='.$exerciseId.'&hotspotadmin='.$objQuestion->id.'"</script>';
} }
} else { } else {
echo '<h3>'.$questionName.'</h3>'; echo '<h3>'.$questionName.'</h3>';
if(!empty($pictureName)){ if(!empty($pictureName)){
echo '<img src="../document/download.php?doc_url=%2Fimages%2F'.$pictureName.'" border="0">'; echo '<img src="../document/download.php?doc_url=%2Fimages%2F'.$pictureName.'" border="0">';

@ -64,16 +64,14 @@ function save_scores($file, $score) {
// anonymous // anonymous
$user_id = "NULL"; $user_id = "NULL";
} }
$sql = "INSERT INTO $TABLETRACK_HOTPOTATOES ". $sql = "INSERT INTO $TABLETRACK_HOTPOTATOES (exe_name, exe_user_id, exe_date, exe_cours_id, exe_result, exe_weighting) VALUES (
"(exe_name, exe_user_id, exe_date,exe_cours_id,exe_result,exe_weighting)".
"VALUES".
"(
'".Database::escape_string($file)."', '".Database::escape_string($file)."',
'".Database::escape_string($user_id)."', '".Database::escape_string($user_id)."',
'".Database::escape_string($date)."', '".Database::escape_string($date)."',
'".Database::escape_string($_cid)."', '".Database::escape_string($_cid)."',
'".Database::escape_string($score)."', '".Database::escape_string($score)."',
'".Database::escape_string($weighting)."')"; '".Database::escape_string($weighting)."')";
Database::query($sql); Database::query($sql);
if ($origin == 'learnpath') { if ($origin == 'learnpath') {
@ -81,7 +79,15 @@ function save_scores($file, $score) {
//table to get tracking in there as well //table to get tracking in there as well
global $jscript2run; global $jscript2run;
//record the results in the learning path, using the SCORM interface (API) //record the results in the learning path, using the SCORM interface (API)
$jscript2run .= "<script>window.parent.API.void_save_asset('$score', '$weighting', 0, 'completed');</script>"; $jscript2run .= "<script>
$(document).ready(function() {
//API_obj = window.frames.window.content.API;
//API_obj = $('content_id').context.defaultView.content.API; //works only in FF
//console.log(window.parent.frames.window.top.API);
API_obj = window.parent.frames.window.top.API;
API_obj.void_save_asset('$score', '$weighting', 0, 'completed');
});
</script>";
} }
} }
@ -95,7 +101,7 @@ if ($origin != 'learnpath') {
echo $jscript2run; echo $jscript2run;
} else { } else {
$htmlHeadXtra[] = $jscript2run; $htmlHeadXtra[] = $jscript2run;
Display::display_header(); Display::display_reduced_header();
echo get_lang('HotPotatoesFinished'); Display::display_confirmation_message(get_lang('HotPotatoesFinished'));
Display::display_footer(); Display::display_footer();
} }

@ -13,7 +13,6 @@ require_once api_get_path(LIBRARY_PATH).'fileManage.lib.php';
require_once api_get_path(SYS_CODE_PATH).'exercice/hotpotatoes.lib.php'; require_once api_get_path(SYS_CODE_PATH).'exercice/hotpotatoes.lib.php';
$time = time(); $time = time();
$doc_url = str_replace(array('../', '\\', '\\0', '..'), array('', '', '', ''), urldecode($_GET['file'])); $doc_url = str_replace(array('../', '\\', '\\0', '..'), array('', '', '', ''), urldecode($_GET['file']));
$cid = api_get_course_id(); $cid = api_get_course_id();
$document_path = api_get_path(SYS_COURSE_PATH).$_course['path'].'/document'; $document_path = api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
@ -33,8 +32,8 @@ if ($content == '') {
$mit = "function Finish(){"; $mit = "function Finish(){";
$js_content = " $js_content = "
//Code added - start //Code added - start
var SaveScoreVariable = 0; var SaveScoreVariable = 0;
function mySaveScore() { function mySaveScore() {
if (SaveScoreVariable==0) { if (SaveScoreVariable==0) {
SaveScoreVariable = 1; SaveScoreVariable = 1;
if (C.ie) { if (C.ie) {
@ -44,7 +43,7 @@ if ($content == '') {
window.location.href = '".api_get_path(WEB_PATH)."main/exercice/savescores.php?origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&time=".Security::remove_XSS($time)."&test=".$doc_url."&uid=".$user_id."&cid=".$cid."&score='+Score; window.location.href = '".api_get_path(WEB_PATH)."main/exercice/savescores.php?origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&time=".Security::remove_XSS($time)."&test=".$doc_url."&uid=".$user_id."&cid=".$cid."&score='+Score;
} }
} }
} }
function Finish(){ function Finish(){
mySaveScore(); mySaveScore();
//Code added - end //Code added - end
@ -58,10 +57,11 @@ if ($content == '') {
if (CheckSubFolder($full_file_path.$user_id.'.t.html') == 0) { if (CheckSubFolder($full_file_path.$user_id.'.t.html') == 0) {
$newcontent = ReplaceImgTag($newcontent); $newcontent = ReplaceImgTag($newcontent);
} }
} else { } else {
$newcontent = $content; $newcontent = $content;
} }
WriteFileCont($full_file_path.$user_id.'.t.html', $newcontent); WriteFileCont($full_file_path.$user_id.'.t.html', $newcontent);
$doc_url = GetFolderPath($doc_url).urlencode(basename($doc_url)); $doc_url = GetFolderPath($doc_url).urlencode(basename($doc_url));
@ -81,15 +81,15 @@ if (isset($_SESSION['gradebook'])){
if (!empty($gradebook) && $gradebook=='view') { if (!empty($gradebook) && $gradebook=='view') {
$interbreadcrumb[]= array ( $interbreadcrumb[]= array (
'url' => '../gradebook/'.$_SESSION['gradebook_dest'], 'url' => '../gradebook/'.$_SESSION['gradebook_dest'],
'name' => get_lang('ToolGradebook') 'name' => get_lang('ToolGradebook')
); );
} }
$htmlHeadXtra[] = ' $htmlHeadXtra[] = '
<script> <script>
var height = window.innerHeight;
$(document).ready( function(){ $(document).ready( function(){
$("iframe").css("height", height) var height = $(this).innerHeight() - 20;
$("#hotpotatoe").css("height", height)
}); });
</script>'; </script>';
@ -100,32 +100,6 @@ if ($origin == 'learnpath') {
Display::display_header($nameTools,"Exercise"); Display::display_header($nameTools,"Exercise");
} }
$url = $document_web_path.$doc_url.$user_id.'.t.html?time='.Security::remove_XSS($time); $url = $document_web_path.$doc_url.$user_id.'.t.html?time='.Security::remove_XSS($time);
echo '<iframe id="hotpotatoe" width="100%" frameborder="0" src="'.$url.'"><iframe>'; echo '<iframe style="overflow:hidden" id="hotpotatoe" width="100%" frameborder="0" src="'.$url.'"></iframe>';
echo '</body></html>';
exit; exit;
if ($origin!='learnpath') {
?>
<frameset rows="<?php echo $header_height; ?>,*" border="0" frameborder="no">
<frame name="top" scrolling="no" noresize target="contents" src="testheaderpage.php?file=<?php echo Security::remove_XSS(str_replace(array('../','\\','\\0','..'),array('','','',''),urldecode($_GET['file']))); ?>">
<frame name="main" src="<?php echo $document_web_path.$doc_url.$user_id.'.t.html?time='.Security::remove_XSS($time); ?>">
<noframes>
<body>
<p>This page uses frames, but your browser doesn't support them.
We suggest you try Mozilla, Firebird, Safari, Opera, or other browsers updated this millenium.
</p>
</body>
</noframes>
</frameset>
<?php
} else {
?>
<script>
s='<?php echo $document_web_path.$doc_url.$user_id; ?>.t.html?time=<?php echo Security::remove_XSS($time); ?>';
window.location=s;
</script>
<?php
}
?>
</html>

@ -8,7 +8,7 @@ class Testcategory {
public $id; public $id;
public $name; public $name;
public $description; public $description;
/** /**
* Constructor of the class Category * Constructor of the class Category
* @author - Hubert Borderiou * @author - Hubert Borderiou
@ -29,7 +29,7 @@ class Testcategory {
$this->description = $in_description; $this->description = $in_description;
} }
} }
/** return the Testcategory object with id=in_id /** return the Testcategory object with id=in_id
*/ */
function getCategory($in_id) { function getCategory($in_id) {
@ -45,7 +45,7 @@ class Testcategory {
$this->description = $row['description']; $this->description = $row['description'];
} }
} }
/** add Testcategory in the database if name doesn't already exists /** add Testcategory in the database if name doesn't already exists
*/ */
function addCategoryInBDD() { function addCategoryInBDD() {
@ -67,13 +67,13 @@ class Testcategory {
} }
else { else {
return false; return false;
} }
} }
/** /**
* Removes the category with id=in_id from the database if no question use this category * Removes the category with id=in_id from the database if no question use this category
* @todo I'm removing the $in_id parameter because it seems that you're using $this->id instead of $in_id after confirmation delete this * @todo I'm removing the $in_id parameter because it seems that you're using $this->id instead of $in_id after confirmation delete this
* jmontoya * jmontoya
*/ */
//function removeCategory($in_id) { //function removeCategory($in_id) {
function removeCategory() { function removeCategory() {
@ -85,11 +85,11 @@ class Testcategory {
return false; return false;
} else { } else {
return true; return true;
} }
} }
/** modify category name or description of category with id=in_id
/** modify category name or description of category with id=in_id
*/ */
//function modifyCategory($in_id, $in_name, $in_description) { //function modifyCategory($in_id, $in_name, $in_description) {
function modifyCategory() { function modifyCategory() {
@ -106,8 +106,8 @@ class Testcategory {
return true; return true;
} }
} }
/** /**
* Gets the number of question of category id=in_id * Gets the number of question of category id=in_id
* @todo I'm removing the $in_id parameter because it seems that you're using $this->id instead of $in_id after confirmation delete this * @todo I'm removing the $in_id parameter because it seems that you're using $this->id instead of $in_id after confirmation delete this
* jmontoya * jmontoya
@ -121,15 +121,15 @@ class Testcategory {
$row = Database::fetch_array($res); $row = Database::fetch_array($res);
return $row['nb']; return $row['nb'];
} }
function display($in_color="#E0EBF5") { function display($in_color="#E0EBF5") {
echo "<textarea style='background-color:$in_color; width:60%; height:100px;'>"; echo "<textarea style='background-color:$in_color; width:60%; height:100px;'>";
print_r($this); print_r($this);
echo "</textarea>"; echo "</textarea>";
} }
/** return an array of all Category objects in the database /** return an array of all Category objects in the database
If in_field=="" Return an array of all category objects in the database If in_field=="" Return an array of all category objects in the database
Otherwise, return an array of all in_field value in the database (in_field = id or name or description) Otherwise, return an array of all in_field value in the database (in_field = id or name or description)
@ -137,8 +137,8 @@ class Testcategory {
public static function getCategoryListInfo($in_field="", $in_courseid="") { public static function getCategoryListInfo($in_field="", $in_courseid="") {
if (empty($in_courseid) || $in_courseid=="") { if (empty($in_courseid) || $in_courseid=="") {
$in_courseid = api_get_course_int_id(); $in_courseid = api_get_course_int_id();
} }
$t_cattable = Database :: get_course_table(TABLE_QUIZ_QUESTION_CATEGORY); $t_cattable = Database :: get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
$in_field = Database::escape_string($in_field); $in_field = Database::escape_string($in_field);
$tabres = array(); $tabres = array();
if ($in_field=="") { if ($in_field=="") {
@ -158,7 +158,7 @@ class Testcategory {
} }
return $tabres; return $tabres;
} }
/** /**
Return the testcategory id for question with question_id = $in_questionid Return the testcategory id for question with question_id = $in_questionid
@ -170,43 +170,43 @@ class Testcategory {
if (empty($in_courseid) || $in_courseid=="") { if (empty($in_courseid) || $in_courseid=="") {
$in_courseid = api_get_course_int_id(); $in_courseid = api_get_course_int_id();
} }
$t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY); $t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
$question_id = Database::escape_string($in_questionid); $question_id = Database::escape_string($in_questionid);
$sql = "SELECT category_id FROM $t_cattable WHERE question_id = '$question_id' AND c_id = $in_courseid"; $sql = "SELECT category_id FROM $t_cattable WHERE question_id = '$question_id' AND c_id = $in_courseid";
$res = Database::query($sql); $res = Database::query($sql);
if (Database::num_rows($res) > 0) { if (Database::num_rows($res) > 0) {
while ($row = Database::fetch_array($res)) { while ($row = Database::fetch_array($res)) {
$result[] = $row['category_id']; $result[] = $row['category_id'];
} }
} }
return $result; return $result;
} }
public static function getCategoryNamesForQuestion($in_questionid, $in_courseid = null, $display_into_labels = true) { public static function getCategoryNamesForQuestion($in_questionid, $in_courseid = null, $display_into_labels = true) {
$result = array(); // result $result = array(); // result
if (empty($in_courseid) || $in_courseid=="") { if (empty($in_courseid) || $in_courseid=="") {
$in_courseid = api_get_course_int_id(); $in_courseid = api_get_course_int_id();
} }
$t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY); $t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
$table_category = Database::get_course_table(TABLE_QUIZ_QUESTION_CATEGORY); $table_category = Database::get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
$question_id = Database::escape_string($in_questionid); $question_id = Database::escape_string($in_questionid);
$sql = "SELECT c.title FROM $t_cattable qc INNER JOIN $table_category c $sql = "SELECT c.title FROM $t_cattable qc INNER JOIN $table_category c
ON (qc.category_id = c.id AND qc.c_id = $in_courseid AND c.c_id = $in_courseid) ON (qc.category_id = c.id AND qc.c_id = $in_courseid AND c.c_id = $in_courseid)
WHERE question_id = '$question_id' "; WHERE question_id = '$question_id' ";
$res = Database::query($sql); $res = Database::query($sql);
if (Database::num_rows($res) > 0) { if (Database::num_rows($res) > 0) {
while ($row = Database::fetch_array($res)) { while ($row = Database::fetch_array($res)) {
$result[] = $row['title']; $result[] = $row['title'];
} }
} }
if ($display_into_labels) { if ($display_into_labels) {
$html = self::draw_category_label($result, 'header'); $html = self::draw_category_label($result, 'header');
return $html; return $html;
} }
return $result; return $result;
} }
/** /**
* true if question id has a category * true if question id has a category
*/ */
@ -217,8 +217,8 @@ class Testcategory {
} }
return false; return false;
} }
/** /**
* @todo fix this * @todo fix this
Return the category name for question with question_id = $in_questionid Return the category name for question with question_id = $in_questionid
@ -230,11 +230,11 @@ class Testcategory {
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
} }
$course_id = intval($course_id); $course_id = intval($course_id);
$category_list = Testcategory::getCategoryForQuestion($question_id, $course_id); $category_list = Testcategory::getCategoryForQuestion($question_id, $course_id);
$result = array(); // result $result = array(); // result
$t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_CATEGORY); $t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
$catid = Database::escape_string($catid); $catid = Database::escape_string($catid);
$sql = "SELECT title FROM $t_cattable WHERE id='$catid' AND c_id = $course_id"; $sql = "SELECT title FROM $t_cattable WHERE id='$catid' AND c_id = $course_id";
$res = Database::query($sql); $res = Database::query($sql);
@ -244,7 +244,7 @@ class Testcategory {
} }
return $result; return $result;
} }
/** /**
* return the list of differents categories ID for a test * return the list of differents categories ID for a test
* input : test_id * input : test_id
@ -257,19 +257,19 @@ class Testcategory {
$quiz = new Exercise(); $quiz = new Exercise();
$quiz->read($exercise_id); $quiz->read($exercise_id);
$question_list = $quiz->selectQuestionList(); $question_list = $quiz->selectQuestionList();
// the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ??? // the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ???
for ($i=1; $i <= count($question_list); $i++) { for ($i=1; $i <= count($question_list); $i++) {
$category_list = Testcategory::getCategoryForQuestion($question_list[$i]); $category_list = Testcategory::getCategoryForQuestion($question_list[$i]);
if (!empty($category_list)) { if (!empty($category_list)) {
$categories_in_exercise = array_merge($categories_in_exercise, $category_list); $categories_in_exercise = array_merge($categories_in_exercise, $category_list);
} }
} }
if (!empty($categories_in_exercise)) { if (!empty($categories_in_exercise)) {
$categories_in_exercise = array_unique(array_filter($categories_in_exercise)); $categories_in_exercise = array_unique(array_filter($categories_in_exercise));
} }
return $categories_in_exercise; return $categories_in_exercise;
} }
/** /**
* return the list of differents categories NAME for a test * return the list of differents categories NAME for a test
* input : test_id * input : test_id
@ -286,7 +286,7 @@ class Testcategory {
} }
return $tabcatName; return $tabcatName;
} }
/** /**
* return the number of differents categories for a test * return the number of differents categories for a test
* input : test_id * input : test_id
@ -295,8 +295,8 @@ class Testcategory {
*/ */
public static function getNumberOfCategoriesForTest($in_testid) { public static function getNumberOfCategoriesForTest($in_testid) {
return count(Testcategory::getListOfCategoriesIDForTest($in_testid)); return count(Testcategory::getListOfCategoriesIDForTest($in_testid));
} }
/** /**
* return the number of question of a category id in a test * return the number of question of a category id in a test
* input : test_id, category_id * input : test_id, category_id
@ -310,14 +310,14 @@ class Testcategory {
$question_list = $exercise->selectQuestionList(); $question_list = $exercise->selectQuestionList();
// the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ? ? ? // the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ? ? ?
for ($i=1; $i <= count($question_list); $i++) { for ($i=1; $i <= count($question_list); $i++) {
$category_in_question = Testcategory::getCategoryForQuestion($question_list[$i]); $category_in_question = Testcategory::getCategoryForQuestion($question_list[$i]);
if (in_array($category_id, $category_in_question)) { if (in_array($category_id, $category_in_question)) {
$number_questions_in_category++; $number_questions_in_category++;
} }
} }
return $number_questions_in_category; return $number_questions_in_category;
} }
/** /**
* return the number of question for a test using random by category * return the number of question for a test using random by category
* input : test_id, number of random question (min 1) * input : test_id, number of random question (min 1)
@ -327,8 +327,8 @@ class Testcategory {
public static function getNumberOfQuestionRandomByCategory($exercise_id, $in_nbrandom) { public static function getNumberOfQuestionRandomByCategory($exercise_id, $in_nbrandom) {
$nbquestionresult = 0; $nbquestionresult = 0;
$list_categories = Testcategory::getListOfCategoriesIDForTest($exercise_id); $list_categories = Testcategory::getListOfCategoriesIDForTest($exercise_id);
if (!empty($list_categories)) { if (!empty($list_categories)) {
for ($i=0; $i < count($list_categories); $i++) { for ($i=0; $i < count($list_categories); $i++) {
if ($list_categories[$i] > 0) { // 0 = no category for this question if ($list_categories[$i] > 0) { // 0 = no category for this question
$nbQuestionInThisCat = Testcategory::getNumberOfQuestionsInCategoryForTest($exercise_id, $list_categories[$i]); $nbQuestionInThisCat = Testcategory::getNumberOfQuestionsInCategoryForTest($exercise_id, $list_categories[$i]);
@ -343,8 +343,8 @@ class Testcategory {
} }
return $nbquestionresult; return $nbquestionresult;
} }
/** /**
* Return an array (id=>name) * Return an array (id=>name)
* tabresult[0] = get_lang('NoCategory'); * tabresult[0] = get_lang('NoCategory');
@ -353,7 +353,7 @@ class Testcategory {
static function getCategoriesIdAndName($in_courseid = "") { static function getCategoriesIdAndName($in_courseid = "") {
if (empty($in_courseid) || $in_courseid=="") { if (empty($in_courseid) || $in_courseid=="") {
$in_courseid = api_get_course_int_id(); $in_courseid = api_get_course_int_id();
} }
$tabcatobject = Testcategory::getCategoryListInfo("", $in_courseid); $tabcatobject = Testcategory::getCategoryListInfo("", $in_courseid);
$tabresult = array("0"=>get_lang('NoCategorySelected')); $tabresult = array("0"=>get_lang('NoCategorySelected'));
for ($i=0; $i < count($tabcatobject); $i++) { for ($i=0; $i < count($tabcatobject); $i++) {
@ -361,7 +361,7 @@ class Testcategory {
} }
return $tabresult; return $tabresult;
} }
/** /**
* return an array of question_id for each category * return an array of question_id for each category
* tabres[0] = array of question id with category id = 0 (i.e. no category) * tabres[0] = array of question id with category id = 0 (i.e. no category)
@ -369,11 +369,11 @@ class Testcategory {
* In this version, a question has 0 or 1 category * In this version, a question has 0 or 1 category
*/ */
static function getQuestionsByCat($in_exerciceId) { static function getQuestionsByCat($in_exerciceId) {
$tabres = array(); $tabres = array();
$TBL_EXERCICE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION); $TBL_EXERCICE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$TBL_QUESTION_REL_CATEGORY = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY); $TBL_QUESTION_REL_CATEGORY = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
$in_exerciceId = intval($in_exerciceId); $in_exerciceId = intval($in_exerciceId);
$sql = "SELECT qrc.question_id, qrc.category_id FROM $TBL_QUESTION_REL_CATEGORY qrc, $TBL_EXERCICE_QUESTION eq $sql = "SELECT qrc.question_id, qrc.category_id FROM $TBL_QUESTION_REL_CATEGORY qrc, $TBL_EXERCICE_QUESTION eq
WHERE exercice_id=$in_exerciceId AND eq.question_id=qrc.question_id AND eq.c_id=".api_get_course_int_id()." AND eq.c_id=qrc.c_id ORDER BY category_id, question_id"; WHERE exercice_id=$in_exerciceId AND eq.question_id=qrc.question_id AND eq.c_id=".api_get_course_int_id()." AND eq.c_id=qrc.c_id ORDER BY category_id, question_id";
$res = Database::query($sql); $res = Database::query($sql);
while ($data = Database::fetch_array($res)) { while ($data = Database::fetch_array($res)) {
@ -384,8 +384,8 @@ class Testcategory {
} }
return $tabres; return $tabres;
} }
/** /**
* return a tab of $in_number random elements of $in_tab * return a tab of $in_number random elements of $in_tab
*/ */
@ -397,7 +397,7 @@ class Testcategory {
} }
return $tabres; return $tabres;
} }
/** /**
* Display signs [+] and/or (>0) after question title if question has options * Display signs [+] and/or (>0) after question title if question has options
* scoreAlwaysPositive and/or uncheckedMayScore * scoreAlwaysPositive and/or uncheckedMayScore
@ -410,7 +410,7 @@ class Testcategory {
echo "<span style='font-size:75%'> [+]</span>"; echo "<span style='font-size:75%'> [+]</span>";
} }
} }
/** /**
* sortTabByBracketLabel ($tabCategoryQuestions) * sortTabByBracketLabel ($tabCategoryQuestions)
* key of $tabCategoryQuestions are the categopy id (0 for not in a category) * key of $tabCategoryQuestions are the categopy id (0 for not in a category)
@ -433,7 +433,7 @@ class Testcategory {
} }
return $tabResult; return $tabResult;
} }
/** /**
* return total score for test exe_id for all question in the category $in_cat_id for user * return total score for test exe_id for all question in the category $in_cat_id for user
* If no question for this category, return "" * If no question for this category, return ""
@ -444,8 +444,8 @@ class Testcategory {
$in_cat_id = intval($in_cat_id); $in_cat_id = intval($in_cat_id);
$in_exe_id = intval($in_exe_id); $in_exe_id = intval($in_exe_id);
$in_user_id = intval($in_user_id); $in_user_id = intval($in_user_id);
$query = "SELECT DISTINCT marks, exe_id, user_id, ta.question_id, category_id FROM $tbl_track_attempt ta , $tbl_question_rel_category qrc $query = "SELECT DISTINCT marks, exe_id, user_id, ta.question_id, category_id FROM $tbl_track_attempt ta , $tbl_question_rel_category qrc
WHERE ta.question_id=qrc.question_id AND qrc.category_id=$in_cat_id AND exe_id=$in_exe_id AND user_id=$in_user_id"; WHERE ta.question_id=qrc.question_id AND qrc.category_id=$in_cat_id AND exe_id=$in_exe_id AND user_id=$in_user_id";
$res = Database::query($query); $res = Database::query($query);
$totalcatscore = ""; $totalcatscore = "";
@ -454,7 +454,7 @@ class Testcategory {
} }
return $totalcatscore; return $totalcatscore;
} }
/** /**
* return the number max of question in a category * return the number max of question in a category
@ -475,7 +475,7 @@ class Testcategory {
} }
return $res_num_max; return $res_num_max;
} }
public static function getCategoryListName($course_id = null) { public static function getCategoryListName($course_id = null) {
$category_list = self::getCategoryListInfo(null, $course_id); $category_list = self::getCategoryListInfo(null, $course_id);
$category_name_list = array(); $category_name_list = array();
@ -483,26 +483,26 @@ class Testcategory {
foreach($category_list as $category) { foreach($category_list as $category) {
$category_name_list[$category->id] = $category->name; $category_name_list[$category->id] = $category->name;
} }
} }
return $category_name_list; return $category_name_list;
} }
public static function return_category_labels($category_list, $all_categories) { public static function return_category_labels($category_list, $all_categories) {
$category_list_to_render = array(); $category_list_to_render = array();
foreach ($category_list as $category_id) { foreach ($category_list as $category_id) {
$category_name = null; $category_name = null;
if (!isset($all_categories[$category_id])) { if (!isset($all_categories[$category_id])) {
$category_name = get_lang('Untitled'); $category_name = get_lang('Untitled');
} else { } else {
$category_name = cut($all_categories[$category_id], 15); $category_name = cut($all_categories[$category_id], 15);
} }
$category_list_to_render[] = $category_name; $category_list_to_render[] = $category_name;
} }
$html = self::draw_category_label($category_list_to_render, 'label'); $html = self::draw_category_label($category_list_to_render, 'label');
return $html; return $html;
} }
static function draw_category_label($category_list, $type = 'label') { static function draw_category_label($category_list, $type = 'label') {
$new_category_list = array(); $new_category_list = array();
foreach ($category_list as $category_name) { foreach ($category_list as $category_name) {
switch ($type) { switch ($type) {
@ -514,7 +514,7 @@ class Testcategory {
break; break;
} }
} }
$html = null; $html = null;
if (!empty($new_category_list)) { if (!empty($new_category_list)) {
switch ($type) { switch ($type) {
@ -524,11 +524,11 @@ class Testcategory {
case 'header': case 'header':
$html = Display::page_subheader3(get_lang('Category').': '.implode(', ', $new_category_list)); $html = Display::page_subheader3(get_lang('Category').': '.implode(', ', $new_category_list));
} }
} }
return $html; return $html;
} }
/** /**
* Returns a category summary report * Returns a category summary report
* @params int exercise id * @params int exercise id
* @params array prefilled array with the category_id, score, and weight example: array(1 => array('score' => '10', 'total' => 20)); * @params array prefilled array with the category_id, score, and weight example: array(1 => array('score' => '10', 'total' => 20));
@ -536,37 +536,37 @@ class Testcategory {
public static function get_stats_table_by_attempt($exercise_id, $category_list = array()) { public static function get_stats_table_by_attempt($exercise_id, $category_list = array()) {
if (empty($category_list)) { if (empty($category_list)) {
return null; return null;
} }
$category_name_list = Testcategory::getListOfCategoriesNameForTest($exercise_id); $category_name_list = Testcategory::getListOfCategoriesNameForTest($exercise_id);
$table = new HTML_Table(array('class' => 'data_table')); $table = new HTML_Table(array('class' => 'data_table'));
$table->setHeaderContents(0, 0, get_lang('Categories')); $table->setHeaderContents(0, 0, get_lang('Categories'));
$table->setHeaderContents(0, 1, get_lang('AbsoluteScore')); $table->setHeaderContents(0, 1, get_lang('AbsoluteScore'));
$table->setHeaderContents(0, 2, get_lang('RelativeScore')); $table->setHeaderContents(0, 2, get_lang('RelativeScore'));
$row = 1; $row = 1;
$none_category = array(); $none_category = array();
if (isset($category_list['none'])) { if (isset($category_list['none'])) {
$none_category = $category_list['none']; $none_category = $category_list['none'];
unset($category_list['none']); unset($category_list['none']);
} }
$total = array(); $total = array();
if (isset($category_list['total'])) { if (isset($category_list['total'])) {
$total = $category_list['total']; $total = $category_list['total'];
unset($category_list['total']); unset($category_list['total']);
} }
if (count($category_list) > 1) { if (count($category_list) > 1) {
foreach ($category_list as $category_id => $category_item) { foreach ($category_list as $category_id => $category_item) {
$table->setCellContents($row, 0, $category_name_list[$category_id]); $table->setCellContents($row, 0, $category_name_list[$category_id]);
$table->setCellContents($row, 1, show_score($category_item['score'], $category_item['total'], false)); $table->setCellContents($row, 1, show_score($category_item['score'], $category_item['total'], false));
$table->setCellContents($row, 2, show_score($category_item['score'], $category_item['total'], true, false, true)); $table->setCellContents($row, 2, show_score($category_item['score'], $category_item['total'], true, false, true));
$row++; $row++;
} }
if (!empty($none_category)) { if (!empty($none_category)) {
$table->setCellContents($row, 0, get_lang('None')); $table->setCellContents($row, 0, get_lang('None'));
$table->setCellContents($row, 1, show_score($none_category['score'], $none_category['total'], false)); $table->setCellContents($row, 1, show_score($none_category['score'], $none_category['total'], false));
$table->setCellContents($row, 2, show_score($none_category['score'], $none_category['total'], true, false, true)); $table->setCellContents($row, 2, show_score($none_category['score'], $none_category['total'], true, false, true));
$row++; $row++;
} }
@ -579,8 +579,8 @@ class Testcategory {
} }
return null; return null;
} }
} }
endif; endif;

@ -17,6 +17,9 @@ $course_id = api_get_course_int_id();
if ($debug) error_log("$action ajax call"); if ($debug) error_log("$action ajax call");
$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();
switch ($action) { switch ($action) {
case 'get_live_stats': case 'get_live_stats':
if (!api_is_allowed_to_edit(null, true)) { if (!api_is_allowed_to_edit(null, true)) {
@ -140,17 +143,14 @@ switch ($action) {
echo json_encode($response); echo json_encode($response);
break; break;
case 'update_exercise_list_order': case 'update_exercise_list_order':
$session_id = api_get_session_id();
if (api_is_allowed_to_edit(null, true)) { if (api_is_allowed_to_edit(null, true)) {
$new_list = $_REQUEST['exercise_list']; $new_list = $_REQUEST['exercise_list'];
$table = Database::get_course_table(TABLE_QUIZ_ORDER); $table = Database::get_course_table(TABLE_QUIZ_ORDER);
$counter = 1; $counter = 1;
//Drop all //Drop all
Database::query("DELETE FROM $table WHERE session_id = $session_id AND c_id = $course_id"); Database::query("DELETE FROM $table WHERE session_id = $session_id AND c_id = $course_id");
//Insert alll //Insert all
foreach ($new_list as $new_order_id) { foreach ($new_list as $new_order_id) {
/*Database::update($table, array('exercise_order' => $counter),
array('session_id = ? AND exercise_id = ? AND c_id = ? '=> array($session_id, intval($new_order_id), $course_id)));*/
Database::insert($table, array('exercise_order' => $counter, 'session_id' => $session_id, 'exercise_id' => intval($new_order_id), 'c_id' => $course_id)); Database::insert($table, array('exercise_order' => $counter, 'session_id' => $session_id, 'exercise_id' => intval($new_order_id), 'c_id' => $course_id));
$counter++; $counter++;
} }
@ -158,8 +158,6 @@ switch ($action) {
} }
break; break;
case 'update_question_order': 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_info = api_get_course_info($course_code);
$course_id = $course_info['real_id']; $course_id = $course_info['real_id'];
@ -174,7 +172,7 @@ switch ($action) {
$TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION); $TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$counter = 1; $counter = 1;
foreach ($new_question_list as $new_order_id) { foreach ($new_question_list as $new_order_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); 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)));
$counter++; $counter++;
} }
Display::display_confirmation_message(get_lang('Saved')); Display::display_confirmation_message(get_lang('Saved'));
@ -190,6 +188,8 @@ switch ($action) {
} }
break; break;
case 'save_exercise_by_now': case 'save_exercise_by_now':
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
//Use have permissions? //Use have permissions?
if (api_is_allowed_to_session_edit()) { if (api_is_allowed_to_session_edit()) {
@ -288,7 +288,7 @@ switch ($action) {
if ($type == 'simple') { if ($type == 'simple') {
foreach ($question_list as $my_question_id) { foreach ($question_list as $my_question_id) {
$objQuestionTmp = Question :: read($my_question_id); $objQuestionTmp = Question::read($my_question_id, $course_id);
$total_weight += $objQuestionTmp->selectWeighting(); $total_weight += $objQuestionTmp->selectWeighting();
} }
} }
@ -309,7 +309,7 @@ switch ($action) {
if ($debug) error_log("my_choice = ".print_r($my_choice, 1).""); if ($debug) error_log("my_choice = ".print_r($my_choice, 1)."");
// creates a temporary Question object // creates a temporary Question object
$objQuestionTmp = Question::read($my_question_id); $objQuestionTmp = Question::read($my_question_id, $course_id);
//Getting free choice data //Getting free choice data
if ($objQuestionTmp->type == FREE_ANSWER && $type == 'all') { if ($objQuestionTmp->type == FREE_ANSWER && $type == 'all') {
@ -337,9 +337,9 @@ switch ($action) {
// Deleting old attempt // Deleting old attempt
if (isset($attempt_list) && !empty($attempt_list[$my_question_id])) { if (isset($attempt_list) && !empty($attempt_list[$my_question_id])) {
if ($debug) error_log("delete_attempt exe_id : $exe_id, my_question_id: $my_question_id"); if ($debug) error_log("delete_attempt exe_id : $exe_id, my_question_id: $my_question_id");
delete_attempt($exe_id, api_get_user_id() , api_get_course_id(), api_get_session_id(), $my_question_id); delete_attempt($exe_id, api_get_user_id() , $course_code, $session_id, $my_question_id);
if ($objQuestionTmp->type == HOT_SPOT) { if ($objQuestionTmp->type == HOT_SPOT) {
delete_attempt_hotspot($exe_id, api_get_user_id() , api_get_course_id(), $my_question_id); delete_attempt_hotspot($exe_id, api_get_user_id() , $course_code, $my_question_id);
} }
if (isset($attempt_list[$my_question_id]) && isset($attempt_list[$my_question_id]['marks'])) { if (isset($attempt_list[$my_question_id]) && isset($attempt_list[$my_question_id]['marks'])) {
$total_score -= $attempt_list[$my_question_id]['marks']; $total_score -= $attempt_list[$my_question_id]['marks'];
@ -384,7 +384,7 @@ switch ($action) {
$objExercise->selectId(), $objExercise->selectId(),
$total_score, $total_score,
$total_weight, $total_weight,
api_get_session_id(), $session_id,
$exercise_stat_info['orig_lp_id'], $exercise_stat_info['orig_lp_id'],
$exercise_stat_info['orig_lp_item_id'], $exercise_stat_info['orig_lp_item_id'],
$exercise_stat_info['orig_lp_item_view_id'], $exercise_stat_info['orig_lp_item_view_id'],

@ -715,15 +715,15 @@ function parse_sql_queries($sql_text) {
for ($i = 0; $i < $count; $i++) { for ($i = 0; $i < $count; $i++) {
$this_sql_query = $sql_instructions[$i]['query']; $this_sql_query = $sql_instructions[$i]['query'];
Database::query($this_sql_query); Database::query($this_sql_query);
//UTF8 fix see #5678 //UTF8 fix see #5678
/*
if (strpos(strtolower($this_sql_query), 'create table') === false) { if (strpos(strtolower($this_sql_query), 'create table') === false) {
Database::query($this_sql_query); Database::query($this_sql_query);
} else { } else {
//$this_sql_query .= substr($this_sql_query, strlen($this_sql_query), strlen($this_sql_query)-1); //$this_sql_query .= substr($this_sql_query, strlen($this_sql_query), strlen($this_sql_query)-1);
$this_sql_query .= ' DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci '; $this_sql_query .= ' DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci ';
Database::query($this_sql_query); Database::query($this_sql_query);
}*/ }
} }
} }
@ -3858,7 +3858,7 @@ function create_course_tables($course_db_name = null) {
Database::query($sql); Database::query($sql);
$table_quiz_order = $course_db_name . 'quiz_order'; $table_quiz_order = $course_db_name . 'quiz_order';
$sql = " CREATE TABLE $table_quiz_order( $sql = " CREATE TABLE $table_quiz_order(
id int unsigned NOT NULL auto_increment, id int unsigned NOT NULL auto_increment,
c_id int unsigned NOT NULL, c_id int unsigned NOT NULL,

@ -33,7 +33,7 @@ $is_error = isset($user_file['error']) ? $user_file['error'] : false;
if( Request::is_post() && $is_error){ if( Request::is_post() && $is_error){
return api_failure::set_failure('upload_file_too_big'); return api_failure::set_failure('upload_file_too_big');
unset($_FILEs['user_file']); unset($_FILEs['user_file']);
}else if ($_SERVER['REQUEST_METHOD'] == 'POST' && count($_FILES) > 0 && !empty($_FILES['user_file']['name'])) { } else if ($_SERVER['REQUEST_METHOD'] == 'POST' && count($_FILES) > 0 && !empty($_FILES['user_file']['name'])) {
// A file upload has been detected, now deal with the file... // A file upload has been detected, now deal with the file...
@ -129,14 +129,14 @@ if( Request::is_post() && $is_error){
$new_dir = replace_dangerous_char(trim($file_base_name), 'strict'); $new_dir = replace_dangerous_char(trim($file_base_name), 'strict');
require_once 'learnpath.class.php'; require_once 'learnpath.class.php';
$result = learnpath::verify_document_size($s); $result = learnpath::verify_document_size($s);
if ($result == true) { if ($result == true) {
return api_failure::set_failure('upload_file_too_big'); return api_failure::set_failure('upload_file_too_big');
} }
$type = learnpath::get_package_type($s, basename($s)); $type = learnpath::get_package_type($s, basename($s));
switch ($type) { switch ($type) {
case 'scorm': case 'scorm':
require_once 'scorm.class.php'; require_once 'scorm.class.php';

@ -350,6 +350,7 @@ class scorm extends learnpath {
} }
$title = Database::escape_string($item['title']); $title = Database::escape_string($item['title']);
$title = api_utf8_decode($title); $title = api_utf8_decode($title);
$max_score = Database::escape_string($item['max_score']); $max_score = Database::escape_string($item['max_score']);
if ($max_score == 0 || is_null($max_score) || $max_score == '') { if ($max_score == 0 || is_null($max_score) || $max_score == '') {
@ -365,11 +366,15 @@ class scorm extends learnpath {
} }
$identifier = Database::escape_string($item['identifier']); $identifier = Database::escape_string($item['identifier']);
if (empty($title)) {
$title = get_lang('Untitled');
}
$prereq = Database::escape_string($item['prerequisites']); $prereq = Database::escape_string($item['prerequisites']);
$sql_item = "INSERT INTO $new_lp_item (c_id, lp_id,item_type,ref,title, path,min_score,max_score, $field_add parent_item_id,previous_item_id,next_item_id, prerequisite,display_order,launch_data, parameters) VALUES " . $sql_item = "INSERT INTO $new_lp_item (c_id, lp_id,item_type,ref,title, path,min_score,max_score, $field_add parent_item_id,previous_item_id,next_item_id, prerequisite,display_order,launch_data, parameters) VALUES " .
"($course_id, $lp_id, '$type','".$identifier."','".$title."'," . "($course_id, $lp_id, '$type','$identifier', '$title', '$path' , 0, $max_score, $value_add" .
"'$path',0,$max_score, $value_add" .
"$parent, $previous, 0, " . "$parent, $previous, 0, " .
"'$prereq', ".$item['rel_order'] .", '".$item['datafromlms']."'," . "'$prereq', ".$item['rel_order'] .", '".$item['datafromlms']."'," .
"'".$item['parameters']."'" . "'".$item['parameters']."'" .

@ -29,14 +29,14 @@ if (!survey_manager::survey_generation_hash_available()) {
$link = survey_manager::generate_survey_link($survey_id, api_get_course_int_id(), api_get_session_id(), api_get_group_id()); $link = survey_manager::generate_survey_link($survey_id, api_get_course_int_id(), api_get_session_id(), api_get_group_id());
echo '<div class="row">'; echo '<div class="row">';
echo '<div class="span12" style="text-align:center">'; echo '<div class="span12" style="text-align:center">';
echo Display::url(get_lang('GenerateSurveyLink'), $link, array('class' => 'btn btn-primary btn-large')); echo Display::url(get_lang('GenerateSurveyAccessLink'), $link, array('class' => 'btn btn-primary btn-large'));
echo '</div>'; echo '</div>';
echo '<div class="span12">'; echo '<div class="span12">';
echo get_lang('GenerateSurveyLinkExplanation'); echo get_lang('GenerateSurveyAccessLinkExplanation');
echo '<pre>'; echo '<pre>';
echo $link; echo $link;
echo '</pre>'; echo '</pre>';
echo '</div>'; echo '</div>';
echo '</div>'; echo '</div>';

@ -4207,7 +4207,7 @@ class SurveyUtil {
if (api_is_allowed_to_edit() || api_is_element_in_the_session(TOOL_SURVEY, $survey_id)) { if (api_is_allowed_to_edit() || api_is_element_in_the_session(TOOL_SURVEY, $survey_id)) {
$return .= '<a href="create_new_survey.php?'.api_get_cidreq().'&amp;action=edit&amp;survey_id='.$survey_id.'">'.Display::return_icon('edit.png', get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'; $return .= '<a href="create_new_survey.php?'.api_get_cidreq().'&amp;action=edit&amp;survey_id='.$survey_id.'">'.Display::return_icon('edit.png', get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>';
if (survey_manager::survey_generation_hash_available()) { if (survey_manager::survey_generation_hash_available()) {
$return .= Display::url(Display::return_icon('new_link.png', get_lang('Newlink'),'',ICON_SIZE_SMALL), 'generate_link.php?survey_id='.$survey_id.'&'.api_get_cidreq()); $return .= Display::url(Display::return_icon('new_link.png', get_lang('GenerateSurveyAccessLink'),'',ICON_SIZE_SMALL), 'generate_link.php?survey_id='.$survey_id.'&'.api_get_cidreq());
} }
$return .= ' <a href="survey_list.php?'.api_get_cidreq().'&amp;action=empty&amp;survey_id='.$survey_id.'" onclick="javascript: if(!confirm(\''.addslashes(api_htmlentities(get_lang("EmptySurvey").'?')).'\')) return false;">'.Display::return_icon('clean.png', get_lang('EmptySurvey'),'',ICON_SIZE_SMALL).'</a>&nbsp;'; $return .= ' <a href="survey_list.php?'.api_get_cidreq().'&amp;action=empty&amp;survey_id='.$survey_id.'" onclick="javascript: if(!confirm(\''.addslashes(api_htmlentities(get_lang("EmptySurvey").'?')).'\')) return false;">'.Display::return_icon('clean.png', get_lang('EmptySurvey'),'',ICON_SIZE_SMALL).'</a>&nbsp;';

@ -1,3 +1,7 @@
{% extends "default/layout/layout_1_col.tpl" %}
{% block content %}
{{ just_created_link }} {{ just_created_link }}
<h3>{{ 'JustCreated'|get_lang }} {{ course_title }}</h3> <h3>{{ 'JustCreated'|get_lang }} {{ course_title }}</h3>
<hr /> <hr />
@ -11,11 +15,11 @@
<div class="caption"> <div class="caption">
<a href="{{ course_url }}" class="btn"> <a href="{{ course_url }}" class="btn">
{{'CourseHomepage'|get_lang}} {{'CourseHomepage'|get_lang}}
</a> </a>
</div> </div>
</div> </div>
</div> </div>
{% if ("allow_user_course_subscription_by_course_admin" | get_setting) == 'true' or _u.is_admin == 1 %} {% if ("allow_user_course_subscription_by_course_admin" | get_setting) == 'true' or _u.is_admin == 1 %}
<div class="span3"> <div class="span3">
<div class="thumbnail"> <div class="thumbnail">
@ -23,12 +27,12 @@
<div class="caption"> <div class="caption">
<a href="{{ _p.web_main }}user/subscribe_user.php?cidReq={{ course_id }}" class="btn"> <a href="{{ _p.web_main }}user/subscribe_user.php?cidReq={{ course_id }}" class="btn">
{{ 'SubscribeUserToCourse'|get_lang }} {{ 'SubscribeUserToCourse'|get_lang }}
</a> </a>
</div> </div>
</div> </div>
</div> </div>
{% endif %} {% endif %}
<div class="span3"> <div class="span3">
<div class="thumbnail"> <div class="thumbnail">
<img src="{{ _p.web_img }}icons/64/info.png"/> <img src="{{ _p.web_img }}icons/64/info.png"/>
@ -40,7 +44,7 @@
</div> </div>
</div> </div>
<div class="span3"> <div class="span3">
<div class="thumbnail"> <div class="thumbnail">
<img src="{{ _p.web_img }}icons/64/reference.png"/> <img src="{{ _p.web_img }}icons/64/reference.png"/>
<div class="caption"> <div class="caption">
<a href="{{ _p.web_main }}course_info/infocours.php?cidReq={{ course_id }}" class="btn"> <a href="{{ _p.web_main }}course_info/infocours.php?cidReq={{ course_id }}" class="btn">
@ -50,5 +54,5 @@
</div> </div>
</div> </div>
</div> </div>
<div class="clear"></div>
<div class="clear"></div> {% endblock %}

@ -1,4 +1,5 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/** /**
* Display part of the SCORM sub-process for upload. This script MUST BE included by upload/index.php * Display part of the SCORM sub-process for upload. This script MUST BE included by upload/index.php
@ -6,115 +7,88 @@
* @package chamilo.upload * @package chamilo.upload
* @author Yannick Warnier <ywarnier@beeznest.org> * @author Yannick Warnier <ywarnier@beeznest.org>
*/ */
/** /**
* Small function to list files in archive/ * Small function to list files in archive/
*/ */
function get_zip_files_in_garbage(){ function get_zip_files_in_garbage() {
$list = array(); $list = array();
$dh = opendir(api_get_path(SYS_ARCHIVE_PATH)); $dh = opendir(api_get_path(SYS_ARCHIVE_PATH));
if($dh === false){ if ($dh === false) {
//ignore //ignore
}else{ } else {
while($entry = readdir($dh)){ while ($entry = readdir($dh)) {
if(substr($entry,0,1) == '.'){/*ignore files starting with . */} if (substr($entry, 0, 1) == '.') {/* ignore files starting with . */
else } else {
{ if (preg_match('/^.*\.zip$/i', $entry)) {
if(preg_match('/^.*\.zip$/i',$entry)){ $list[] = $entry;
$list[] = $entry; }
} }
} }
} natcasesort($list);
natcasesort($list); closedir($dh);
closedir($dh); }
} return $list;
return $list;
} }
/** /**
* Just display the form needed to upload a SCORM and give its settings * Just display the form needed to upload a SCORM and give its settings
*/ */
$nameTools = get_lang("FileUpload"); $nameTools = get_lang("FileUpload");
$interbreadcrumb[]= array ("url"=>"../newscorm/lp_controller.php?action=list", "name"=> get_lang("ToolLearnpath")); $interbreadcrumb[] = array("url" => "../newscorm/lp_controller.php?action=list", "name" => get_lang("ToolLearnpath"));
Display::display_header($nameTools,"Path"); Display::display_header($nameTools, "Path");
//show the title
//api_display_tool_title(get_lang("Learnpath")." - ".$nameTools.$add_group_to_title);
//TODO: Include right language file
require_once '../newscorm/content_makers.inc.php'; require_once '../newscorm/content_makers.inc.php';
require_once api_get_path(LIBRARY_PATH) . 'specific_fields_manager.lib.php'; require_once api_get_path(LIBRARY_PATH).'specific_fields_manager.lib.php';
echo '<div class="actions">'; echo '<div class="actions">';
echo '<a href="../newscorm/lp_controller.php?cidReq='.$_course['sysCode'].'">'.Display::return_icon('back.png',get_lang('ReturnToLearningPaths'),'',ICON_SIZE_MEDIUM).'</a>'; echo '<a href="../newscorm/lp_controller.php?cidReq='.$_course['sysCode'].'">'.Display::return_icon('back.png', get_lang('ReturnToLearningPaths'), '', ICON_SIZE_MEDIUM).'</a>';
echo '</div>'; echo '</div>';
$form = new FormValidator('','POST','upload.php','','id="upload_form" enctype="multipart/form-data" style="background-image: url(\'../img/scorm.jpg\'); background-repeat: no-repeat; background-position: 620px;"'); $form = new FormValidator('', 'POST', 'upload.php', '', 'id="upload_form" enctype="multipart/form-data" style="background-image: url(\'../img/scorm.jpg\'); background-repeat: no-repeat; background-position: 620px;"');
$form->addElement('header', '', $nameTools); $form->addElement('header', '', $nameTools);
$form->addElement('hidden', 'curdirpath', $path); $form->addElement('hidden', 'curdirpath', $path);
$form->addElement('hidden', 'tool', $my_tool); $form->addElement('hidden', 'tool', $my_tool);
$form->addElement('file','user_file',get_lang('FileToUpload')); $form->addElement('file', 'user_file', get_lang('FileToUpload'));
$form->add_real_progress_bar('uploadScorm','user_file'); $form->add_real_progress_bar('uploadScorm', 'user_file');
$form->addRule('user_file', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('user_file', get_lang('ThisFieldIsRequired'), 'required');
/*$select_content_marker = &$form->addElement('select','content_maker',get_lang('ContentMaker'));
foreach($content_origins as $index => $origin){
$select_content_marker->addOption($origin,$origin);
}*/
unset($content_origins[0]); unset($content_origins[0]);
unset($content_origins[1]); unset($content_origins[1]);
/* if (api_get_setting('search_enabled') == 'true') {
$select_content_proximity = &$form->addElement('select','content_proximity',get_lang('ContentProximity')); $form->addElement('checkbox', 'index_document', '', get_lang('SearchFeatureDoIndexDocument'));
$select_content_proximity->addOption(get_lang('Local'),"local"); $specific_fields = get_specific_field_list();
$select_content_proximity->addOption(get_lang('Remote'),"remote"); foreach ($specific_fields as $specific_field) {
$select_content_proximity -> setSelected("local"); $form->addElement('text', $specific_field['code'], $specific_field['name'].' : ');
*/ }
if (api_get_setting('search_enabled')=='true') {
$form -> addElement ('checkbox', 'index_document','', get_lang('SearchFeatureDoIndexDocument'));
$specific_fields = get_specific_field_list();
foreach ($specific_fields as $specific_field) {
$form -> addElement ('text', $specific_field['code'], $specific_field['name'].' : ');
}
} }
if (api_is_platform_admin()) { if (api_is_platform_admin()) {
$form->addElement('checkbox', 'use_max_score', null, get_lang('UseMaxScore100')); $form->addElement('checkbox', 'use_max_score', null, get_lang('UseMaxScore100'));
} }
$form->addElement('style_submit_button','submit', get_lang('Send'),'class="upload"'); $form->addElement('style_submit_button', 'submit', get_lang('Send'), 'class="upload"');
$form->addElement('html', '<br /><br /><br />'); $form->addElement('html', '<br /><br /><br />');
/*$list = get_zip_files_in_garbage();
if(count($list)>0){
$select_file_name = &$form->addElement('select','file_name',get_lang('Or').' '.api_strtolower(get_lang('UploadLocalFileFromGarbageDir')));
foreach($list as $file){
$select_file_name->addOption($file,$file);
}
$form->addElement('submit', 'submit', get_lang('Download'));
}
else{
$text_empty = &$form->addElement('text', 'empty', get_lang('Or').' '.api_strtolower(get_lang('UploadLocalFileFromGarbageDir')));
$defaults["empty"] = get_lang('Empty');
$text_empty->freeze();
}*/
if(is_dir(api_get_path(PLUGIN_PATH)."/pens")) { if (is_dir(api_get_path(PLUGIN_PATH)."/pens")) {
require_once(api_get_path(PLUGIN_PATH)."/pens/chamilo_pens.php"); require_once(api_get_path(PLUGIN_PATH)."/pens/chamilo_pens.php");
$list = ChamiloPens::findAll(); $list = ChamiloPens::findAll();
if(count($list) > 0) { if (count($list) > 0) {
$select_pens = $form->addElement('select', 'pens_package', get_lang('Or').' '.get_lang('select a PENS package')); $select_pens = $form->addElement('select', 'pens_package', get_lang('Or').' '.get_lang('select a PENS package'));
foreach($list as $package) { foreach ($list as $package) {
$select_pens->addOption($package->getPackageName(), $package->getPackageName()); $select_pens->addOption($package->getPackageName(), $package->getPackageName());
} }
} }
} }
// the default values for the form // the default values for the form
$defaults = array('index_document'=>'checked="checked"','use_max_score'=>1); $defaults = array('index_document' => 'checked="checked"', 'use_max_score' => 1);
$form->setDefaults($defaults); $form->setDefaults($defaults);
Display::display_normal_message(Display::tag('strong', get_lang('SupportedScormContentMakers')).': '.implode(', ', $content_origins), false); Display::display_normal_message(Display::tag('strong', get_lang('SupportedScormContentMakers')).': '.implode(', ', $content_origins), false);
$form->display(); $form->display();
// footer // footer
Display::display_footer(); Display::display_footer();

@ -13,6 +13,7 @@
$language_file = 'scorm'; $language_file = 'scorm';
$cwdir = getcwd(); $cwdir = getcwd();
require_once '../newscorm/lp_upload.php'; require_once '../newscorm/lp_upload.php';
//reinit current working directory as many functions in upload change it //reinit current working directory as many functions in upload change it
chdir($cwdir); chdir($cwdir);

Loading…
Cancel
Save