|
|
|
@ -44,8 +44,6 @@ $_course = api_get_course_info(); |
|
|
|
// document path |
|
|
|
// document path |
|
|
|
$documentPath = api_get_path(SYS_COURSE_PATH).$_course['path']."/document"; |
|
|
|
$documentPath = api_get_path(SYS_COURSE_PATH).$_course['path']."/document"; |
|
|
|
$origin = api_get_origin(); |
|
|
|
$origin = api_get_origin(); |
|
|
|
$path = isset($_GET['path']) ? Security::remove_XSS($_GET['path']) : null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$is_allowedToEdit = api_is_allowed_to_edit(null, true) || |
|
|
|
$is_allowedToEdit = api_is_allowed_to_edit(null, true) || |
|
|
|
api_is_drh() || |
|
|
|
api_is_drh() || |
|
|
|
api_is_student_boss() || |
|
|
|
api_is_student_boss() || |
|
|
|
@ -57,7 +55,6 @@ $TBL_TRACK_ATTEMPT = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT); |
|
|
|
$TBL_TRACK_ATTEMPT_RECORDING = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING); |
|
|
|
$TBL_TRACK_ATTEMPT_RECORDING = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING); |
|
|
|
$TBL_LP_ITEM_VIEW = Database::get_course_table(TABLE_LP_ITEM_VIEW); |
|
|
|
$TBL_LP_ITEM_VIEW = Database::get_course_table(TABLE_LP_ITEM_VIEW); |
|
|
|
$allowCoachFeedbackExercises = api_get_setting('allow_coach_feedback_exercises') === 'true'; |
|
|
|
$allowCoachFeedbackExercises = api_get_setting('allow_coach_feedback_exercises') === 'true'; |
|
|
|
|
|
|
|
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
$exercise_id = isset($_REQUEST['exerciseId']) ? (int) $_REQUEST['exerciseId'] : 0; |
|
|
|
$exercise_id = isset($_REQUEST['exerciseId']) ? (int) $_REQUEST['exerciseId'] : 0; |
|
|
|
$locked = api_resource_is_locked_by_gradebook($exercise_id, LINK_EXERCISE); |
|
|
|
$locked = api_resource_is_locked_by_gradebook($exercise_id, LINK_EXERCISE); |
|
|
|
@ -153,11 +150,9 @@ if (!empty($_REQUEST['export_report']) && $_REQUEST['export_report'] == '1') { |
|
|
|
$objExerciseTmp = new Exercise(); |
|
|
|
$objExerciseTmp = new Exercise(); |
|
|
|
$exerciseExists = $objExerciseTmp->read($exercise_id); |
|
|
|
$exerciseExists = $objExerciseTmp->read($exercise_id); |
|
|
|
|
|
|
|
|
|
|
|
$courseInfo = api_get_course_info(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Send student email @todo move this code in a class, library |
|
|
|
//Send student email @todo move this code in a class, library |
|
|
|
if (isset($_REQUEST['comments']) && |
|
|
|
if (isset($_REQUEST['comments']) && |
|
|
|
$_REQUEST['comments'] == 'update' && |
|
|
|
$_REQUEST['comments'] === 'update' && |
|
|
|
($is_allowedToEdit || $is_tutor || $allowCoachFeedbackExercises) |
|
|
|
($is_allowedToEdit || $is_tutor || $allowCoachFeedbackExercises) |
|
|
|
) { |
|
|
|
) { |
|
|
|
// Filtered by post-condition |
|
|
|
// Filtered by post-condition |
|
|
|
@ -167,7 +162,6 @@ if (isset($_REQUEST['comments']) && |
|
|
|
if (empty($track_exercise_info)) { |
|
|
|
if (empty($track_exercise_info)) { |
|
|
|
api_not_allowed(); |
|
|
|
api_not_allowed(); |
|
|
|
} |
|
|
|
} |
|
|
|
$test = $track_exercise_info['title']; |
|
|
|
|
|
|
|
$student_id = $track_exercise_info['exe_user_id']; |
|
|
|
$student_id = $track_exercise_info['exe_user_id']; |
|
|
|
$session_id = $track_exercise_info['session_id']; |
|
|
|
$session_id = $track_exercise_info['session_id']; |
|
|
|
$lp_id = $track_exercise_info['orig_lp_id']; |
|
|
|
$lp_id = $track_exercise_info['orig_lp_id']; |
|
|
|
@ -175,10 +169,6 @@ if (isset($_REQUEST['comments']) && |
|
|
|
$lp_item_view_id = (int) $track_exercise_info['orig_lp_item_view_id']; |
|
|
|
$lp_item_view_id = (int) $track_exercise_info['orig_lp_item_view_id']; |
|
|
|
$exerciseId = $track_exercise_info['exe_exo_id']; |
|
|
|
$exerciseId = $track_exercise_info['exe_exo_id']; |
|
|
|
$exeWeighting = $track_exercise_info['exe_weighting']; |
|
|
|
$exeWeighting = $track_exercise_info['exe_weighting']; |
|
|
|
|
|
|
|
|
|
|
|
$url = api_get_path(WEB_CODE_PATH).'exercise/result.php?id='.$track_exercise_info['exe_id'].'&'.api_get_cidreq().'&show_headers=1&id_session='.$session_id; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$my_post_info = []; |
|
|
|
|
|
|
|
$post_content_id = []; |
|
|
|
$post_content_id = []; |
|
|
|
$comments_exist = false; |
|
|
|
$comments_exist = false; |
|
|
|
|
|
|
|
|
|
|
|
@ -186,14 +176,12 @@ if (isset($_REQUEST['comments']) && |
|
|
|
$my_post_info = explode('_', $key_index); |
|
|
|
$my_post_info = explode('_', $key_index); |
|
|
|
$post_content_id[] = isset($my_post_info[1]) ? $my_post_info[1] : null; |
|
|
|
$post_content_id[] = isset($my_post_info[1]) ? $my_post_info[1] : null; |
|
|
|
|
|
|
|
|
|
|
|
if ($my_post_info[0] == 'comments') { |
|
|
|
if ($my_post_info[0] === 'comments') { |
|
|
|
$comments_exist = true; |
|
|
|
$comments_exist = true; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$loop_in_track = $comments_exist === true ? (count($_POST) / 2) : count($_POST); |
|
|
|
$loop_in_track = $comments_exist === true ? (count($_POST) / 2) : count($_POST); |
|
|
|
$array_content_id_exe = []; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($comments_exist === true) { |
|
|
|
if ($comments_exist === true) { |
|
|
|
$array_content_id_exe = array_slice($post_content_id, $loop_in_track); |
|
|
|
$array_content_id_exe = array_slice($post_content_id, $loop_in_track); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
@ -349,7 +337,6 @@ if ($is_allowedToEdit && $origin != 'learnpath') { |
|
|
|
Display::return_icon('activity_monitor.png', get_lang('LiveResults'), '', ICON_SIZE_MEDIUM).'</a>'; |
|
|
|
Display::return_icon('activity_monitor.png', get_lang('LiveResults'), '', ICON_SIZE_MEDIUM).'</a>'; |
|
|
|
$actions .= '<a href="stats.php?'.api_get_cidreq().'&exerciseId='.$exercise_id.'">'. |
|
|
|
$actions .= '<a href="stats.php?'.api_get_cidreq().'&exerciseId='.$exercise_id.'">'. |
|
|
|
Display::return_icon('statistics.png', get_lang('ReportByQuestion'), '', ICON_SIZE_MEDIUM).'</a>'; |
|
|
|
Display::return_icon('statistics.png', get_lang('ReportByQuestion'), '', ICON_SIZE_MEDIUM).'</a>'; |
|
|
|
|
|
|
|
|
|
|
|
$actions .= '<a id="export_opener" href="'.api_get_self().'?export_report=1&exerciseId='.$exercise_id.'" >'. |
|
|
|
$actions .= '<a id="export_opener" href="'.api_get_self().'?export_report=1&exerciseId='.$exercise_id.'" >'. |
|
|
|
Display::return_icon('save.png', get_lang('Export'), '', ICON_SIZE_MEDIUM).'</a>'; |
|
|
|
Display::return_icon('save.png', get_lang('Export'), '', ICON_SIZE_MEDIUM).'</a>'; |
|
|
|
// clean result before a selected date icon |
|
|
|
// clean result before a selected date icon |
|
|
|
@ -397,7 +384,7 @@ if ($is_allowedToEdit && $origin != 'learnpath') { |
|
|
|
|
|
|
|
|
|
|
|
// Deleting an attempt |
|
|
|
// Deleting an attempt |
|
|
|
if (($is_allowedToEdit || $is_tutor || api_is_coach()) && |
|
|
|
if (($is_allowedToEdit || $is_tutor || api_is_coach()) && |
|
|
|
isset($_GET['delete']) && $_GET['delete'] == 'delete' && |
|
|
|
isset($_GET['delete']) && $_GET['delete'] === 'delete' && |
|
|
|
!empty($_GET['did']) && $locked == false |
|
|
|
!empty($_GET['did']) && $locked == false |
|
|
|
) { |
|
|
|
) { |
|
|
|
$exe_id = (int) $_GET['did']; |
|
|
|
$exe_id = (int) $_GET['did']; |
|
|
|
@ -420,7 +407,7 @@ if (($is_allowedToEdit || $is_tutor || api_is_coach()) && |
|
|
|
|
|
|
|
|
|
|
|
if ($is_allowedToEdit || $is_tutor) { |
|
|
|
if ($is_allowedToEdit || $is_tutor) { |
|
|
|
$interbreadcrumb[] = [ |
|
|
|
$interbreadcrumb[] = [ |
|
|
|
'url' => "exercise.php?".api_get_cidreq(), |
|
|
|
'url' => 'exercise.php?'.api_get_cidreq(), |
|
|
|
'name' => get_lang('Exercises'), |
|
|
|
'name' => get_lang('Exercises'), |
|
|
|
]; |
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
@ -442,17 +429,17 @@ if ($is_allowedToEdit || $is_tutor) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (($is_allowedToEdit || $is_tutor || api_is_coach()) && |
|
|
|
if (($is_allowedToEdit || $is_tutor || api_is_coach()) && |
|
|
|
isset($_GET['a']) && $_GET['a'] == 'close' && |
|
|
|
isset($_GET['a']) && $_GET['a'] === 'close' && |
|
|
|
!empty($_GET['id']) && $locked == false |
|
|
|
!empty($_GET['id']) && $locked == false |
|
|
|
) { |
|
|
|
) { |
|
|
|
// Close the user attempt otherwise left pending |
|
|
|
// Close the user attempt otherwise left pending |
|
|
|
$exe_id = intval($_GET['id']); |
|
|
|
$exe_id = (int) $_GET['id']; |
|
|
|
$sql = "UPDATE $TBL_TRACK_EXERCISES SET status = '' |
|
|
|
$sql = "UPDATE $TBL_TRACK_EXERCISES SET status = '' |
|
|
|
WHERE exe_id = $exe_id AND status = 'incomplete'"; |
|
|
|
WHERE exe_id = $exe_id AND status = 'incomplete'"; |
|
|
|
Database::query($sql); |
|
|
|
Database::query($sql); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Display :: display_header($nameTools); |
|
|
|
Display::display_header($nameTools); |
|
|
|
|
|
|
|
|
|
|
|
// Clean all results for this test before the selected date |
|
|
|
// Clean all results for this test before the selected date |
|
|
|
if (($is_allowedToEdit || $is_tutor || api_is_coach()) && |
|
|
|
if (($is_allowedToEdit || $is_tutor || api_is_coach()) && |
|
|
|
@ -512,7 +499,7 @@ $extra = '<script> |
|
|
|
}); |
|
|
|
}); |
|
|
|
</script>'; |
|
|
|
</script>'; |
|
|
|
|
|
|
|
|
|
|
|
$extra .= '<div id="dialog-confirm" title="'.get_lang("ConfirmYourChoice").'">'; |
|
|
|
$extra .= '<div id="dialog-confirm" title="'.get_lang('ConfirmYourChoice').'">'; |
|
|
|
$form = new FormValidator( |
|
|
|
$form = new FormValidator( |
|
|
|
'report', |
|
|
|
'report', |
|
|
|
'post', |
|
|
|
'post', |
|
|
|
@ -641,7 +628,7 @@ if ($is_allowedToEdit || $is_tutor) { |
|
|
|
['name' => 'actions', 'index' => 'actions', 'width' => '60', 'align' => 'left', 'search' => 'false', 'sortable' => 'false'], |
|
|
|
['name' => 'actions', 'index' => 'actions', 'width' => '60', 'align' => 'left', 'search' => 'false', 'sortable' => 'false'], |
|
|
|
]; |
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
if ($officialCodeInList == 'true') { |
|
|
|
if ($officialCodeInList === 'true') { |
|
|
|
$officialCodeRow = ['name' => 'official_code', 'index' => 'official_code', 'width' => '50', 'align' => 'left', 'search' => 'true']; |
|
|
|
$officialCodeRow = ['name' => 'official_code', 'index' => 'official_code', 'width' => '50', 'align' => 'left', 'search' => 'true']; |
|
|
|
$column_model = array_merge([$officialCodeRow], $column_model); |
|
|
|
$column_model = array_merge([$officialCodeRow], $column_model); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -650,7 +637,7 @@ if ($is_allowedToEdit || $is_tutor) { |
|
|
|
// add username as title in lastname filed - ref 4226 |
|
|
|
// add username as title in lastname filed - ref 4226 |
|
|
|
function action_formatter(cellvalue, options, rowObject) { |
|
|
|
function action_formatter(cellvalue, options, rowObject) { |
|
|
|
// rowObject is firstname,lastname,login,... get the third word |
|
|
|
// rowObject is firstname,lastname,login,... get the third word |
|
|
|
var loginx = "'.api_htmlentities(sprintf(get_lang("LoginX"), ":::"), ENT_QUOTES).'"; |
|
|
|
var loginx = "'.api_htmlentities(sprintf(get_lang('LoginX'), ':::'), ENT_QUOTES).'"; |
|
|
|
var tabLoginx = loginx.split(/:::/); |
|
|
|
var tabLoginx = loginx.split(/:::/); |
|
|
|
// tabLoginx[0] is before and tabLoginx[1] is after ::: |
|
|
|
// tabLoginx[0] is before and tabLoginx[1] is after ::: |
|
|
|
// may be empty string but is defined |
|
|
|
// may be empty string but is defined |
|
|
|
@ -672,7 +659,6 @@ $extra_params['gridComplete'] = " |
|
|
|
"; |
|
|
|
"; |
|
|
|
|
|
|
|
|
|
|
|
$extra_params['beforeRequest'] = " |
|
|
|
$extra_params['beforeRequest'] = " |
|
|
|
//console.log('beforeRequest'); |
|
|
|
|
|
|
|
var defaultGroupId = $('#gs_group_name').val(); |
|
|
|
var defaultGroupId = $('#gs_group_name').val(); |
|
|
|
|
|
|
|
|
|
|
|
// Load from group menu |
|
|
|
// Load from group menu |
|
|
|
@ -681,15 +667,17 @@ if (typeof defaultGroupId !== 'undefined') { |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// get from cookies |
|
|
|
// get from cookies |
|
|
|
defaultGroupId = Cookies.get('default_group_".$exercise_id."'); |
|
|
|
defaultGroupId = Cookies.get('default_group_".$exercise_id."'); |
|
|
|
$('#gs_group_name').val(defaultGroupId); |
|
|
|
$('#gs_group_name').val(defaultGroupId); |
|
|
|
//console.log('from cookies'); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (typeof defaultGroupId !== 'undefined') { |
|
|
|
if (typeof defaultGroupId !== 'undefined') { |
|
|
|
var posted_data = $(\"#results\").jqGrid('getGridParam', 'postData'); |
|
|
|
var posted_data = $(\"#results\").jqGrid('getGridParam', 'postData'); |
|
|
|
var defFilter = '{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"group_id\",\"op\":\"eq\",\"data\":\"'+ defaultGroupId +'\"}]}'; |
|
|
|
var extraFilter = ',{\"field\":\"group_id\",\"op\":\"eq\",\"data\":\"'+ defaultGroupId +'\"}]}'; |
|
|
|
posted_data.filters = defFilter; |
|
|
|
// var defFilter = '{\"groupOp\":\"AND\",\"rules\": [{\"field\":\"group_id\",\"op\":\"eq\",\"data\":\"'+ defaultGroupId +'\"}] }'; |
|
|
|
//console.log(posted_data); |
|
|
|
// posted_data.filters = defFilter; |
|
|
|
|
|
|
|
var filters = posted_data.filters; |
|
|
|
|
|
|
|
var stringObj = new String(filters); |
|
|
|
|
|
|
|
stringObj.replace(']}', extraFilter); |
|
|
|
$(this).jqGrid('setGridParam', 'postData', posted_data); |
|
|
|
$(this).jqGrid('setGridParam', 'postData', posted_data); |
|
|
|
} |
|
|
|
} |
|
|
|
"; |
|
|
|
"; |
|
|
|
@ -715,7 +703,8 @@ $gridJs = Display::grid_js( |
|
|
|
var ii = 0; |
|
|
|
var ii = 0; |
|
|
|
for (var i in data) { |
|
|
|
for (var i in data) { |
|
|
|
colNames[ii++] = i; |
|
|
|
colNames[ii++] = i; |
|
|
|
} // capture col names |
|
|
|
} |
|
|
|
|
|
|
|
// capture col names |
|
|
|
var html = ""; |
|
|
|
var html = ""; |
|
|
|
for (i = 0; i < mya.length; i++) { |
|
|
|
for (i = 0; i < mya.length; i++) { |
|
|
|
data = $("#results").getRowData(mya[i]); // get each row |
|
|
|
data = $("#results").getRowData(mya[i]); // get each row |
|
|
|
@ -758,8 +747,6 @@ $gridJs = Display::grid_js( |
|
|
|
|
|
|
|
|
|
|
|
// Update group |
|
|
|
// Update group |
|
|
|
var defaultGroupId = Cookies.get('default_group_<?php echo $exercise_id; ?>');
|
|
|
|
var defaultGroupId = Cookies.get('default_group_<?php echo $exercise_id; ?>');
|
|
|
|
//console.log('cookie GET defaultGroupId ' + defaultGroupId ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$('#gs_group_name').val(defaultGroupId); |
|
|
|
$('#gs_group_name').val(defaultGroupId); |
|
|
|
// Adding search options |
|
|
|
// Adding search options |
|
|
|
var options = { |
|
|
|
var options = { |
|
|
|
@ -776,7 +763,6 @@ $gridJs = Display::grid_js( |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
jQuery("#results").jqGrid('filterToolbar', options); |
|
|
|
jQuery("#results").jqGrid('filterToolbar', options); |
|
|
|
sgrid.triggerToolbar(); |
|
|
|
sgrid.triggerToolbar(); |
|
|
|
$('#results').on('click', 'a.exercise-recalculate', function (e) { |
|
|
|
$('#results').on('click', 'a.exercise-recalculate', function (e) { |
|
|
|
|