Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
chamilo-lms/main/mySpace/session.php

315 lines
10 KiB

<?php
/* For licensing terms, see /license.txt */
/**
* Sessions reporting.
*
* @package chamilo.reporting
*/
ob_start();
$cidReset = true;
require_once __DIR__.'/../inc/global.inc.php';
10 years ago
api_block_anonymous_users();
$this_section = SECTION_TRACKING;
$export_csv = false;
if (isset($_REQUEST['export']) && $_REQUEST['export'] == 'csv') {
$export_csv = true;
}
$id_coach = api_get_user_id();
if (isset($_REQUEST['id_coach']) && $_REQUEST['id_coach'] != '') {
$id_coach = (int) $_REQUEST['id_coach'];
}
$allowToTrack = api_is_platform_admin(true, true) || api_is_teacher();
if (!$allowToTrack) {
api_not_allowed(true);
}
$htmlHeadXtra[] = api_get_jqgrid_js();
$interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('MySpace')];
Display::display_header(get_lang('Sessions'));
if (api_is_platform_admin(true, true)) {
$a_sessions = SessionManager::get_sessions_followed_by_drh(api_get_user_id());
if (!api_is_session_admin()) {
$menu_items[] = Display::url(
Display::return_icon('statistics.png', get_lang('MyStats'), '', ICON_SIZE_MEDIUM),
api_get_path(WEB_CODE_PATH).'auth/my_progress.php'
);
$menu_items[] = Display::url(
Display::return_icon('user.png', get_lang('Students'), [], ICON_SIZE_MEDIUM),
'index.php?view=drh_students&amp;display=yourstudents'
);
$menu_items[] = Display::url(
Display::return_icon('teacher.png', get_lang('Trainers'), [], ICON_SIZE_MEDIUM),
'teachers.php'
);
$menu_items[] = Display::url(
Display::return_icon('course.png', get_lang('Courses'), [], ICON_SIZE_MEDIUM),
'course.php'
);
$menu_items[] = Display::url(
Display::return_icon('session_na.png', get_lang('Sessions'), [], ICON_SIZE_MEDIUM),
'#'
);
}
$menu_items[] = Display::url(
Display::return_icon('works.png', get_lang('WorksReport'), [], ICON_SIZE_MEDIUM),
api_get_path(WEB_CODE_PATH).'mySpace/works_in_session_report.php'
);
$menu_items[] = Display::url(
Display::return_icon('clock.png', get_lang('TeacherTimeReportBySession'), [], ICON_SIZE_MEDIUM),
api_get_path(WEB_CODE_PATH).'admin/teachers_time_by_session_report.php'
);
if (!api_is_session_admin()) {
$menu_items[] = Display::url(
Display::return_icon('1day.png', get_lang('SessionsPlanCalendar'), [], ICON_SIZE_MEDIUM),
api_get_path(WEB_CODE_PATH)."calendar/planification.php"
);
}
$actionsLeft = '';
$nb_menu_items = count($menu_items);
if ($nb_menu_items > 1) {
foreach ($menu_items as $key => $item) {
$actionsLeft .= $item;
}
}
10 years ago
$actionsRight = '';
if (count($a_sessions) > 0) {
$actionsRight = Display::url(
Display::return_icon('printer.png', get_lang('Print'), [], 32),
'javascript: void(0);',
['onclick' => 'javascript: window.print();']
);
10 years ago
$actionsRight .= Display::url(
Display::return_icon('export_csv.png', get_lang('ExportAsCSV'), [], 32),
api_get_self().'?export=csv'
);
}
10 years ago
10 years ago
$toolbar = Display::toolbarAction(
'toolbar-session',
[$actionsLeft, $actionsRight]
10 years ago
);
echo $toolbar;
10 years ago
echo Display::page_header(get_lang('YourSessionsList'));
} elseif (api_is_teacher()) {
$actionsRight = Display::url(
Display::return_icon('clock.png', get_lang('TeacherTimeReportBySession'), [], ICON_SIZE_MEDIUM),
api_get_path(WEB_CODE_PATH).'admin/teachers_time_by_session_report.php'
);
$toolbar = Display::toolbarAction(
'toolbar-session',
['', $actionsRight]
);
echo $toolbar;
echo Display::page_header(get_lang('YourSessionsList'));
} else {
$a_sessions = Tracking::get_sessions_coached_by_user($id_coach);
}
$form = new FormValidator(
'search_course',
'post',
api_get_path(WEB_CODE_PATH).'mySpace/session.php'
);
$form->addElement('text', 'keyword', get_lang('Keyword'));
$form->addButtonSearch(get_lang('Search'));
$keyword = '';
if ($form->validate()) {
$keyword = $form->getSubmitValue('keyword');
}
$form->setDefaults(['keyword' => $keyword]);
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions_tracking&_search=true&_force_search=true&filters=&keyword='.Security::remove_XSS($keyword);
// Column config
$extraParams = [
'autowidth' => 'true',
'height' => 'auto',
];
$result = SessionManager::getGridColumns('my_space');
$columns = $result['columns'];
$columnModel = $result['column_model'];
$extraParams['postData'] = [
'filters' => [
'groupOp' => 'AND',
'rules' => $result['rules'],
],
];
$urlAjaxExtraField = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?1=1';
$allowOrder = api_get_configuration_value('session_list_order');
$orderUrl = api_get_path(WEB_AJAX_PATH).'session.ajax.php?a=order';
?>
<script>
function setSearchSelect(columnName) {
$("#sessions").jqGrid('setColProp', columnName, {
});
}
var added_cols = [];
var original_cols = [];
function clean_cols(grid, added_cols) {
// Cleaning
for (key in added_cols) {
grid.hideCol(key);
};
grid.showCol('name');
grid.showCol('display_start_date');
grid.showCol('display_end_date');
grid.showCol('course_title');
}
function show_cols(grid, added_cols) {
grid.showCol('name').trigger('reloadGrid');
for (key in added_cols) {
grid.showCol(key);
};
}
var second_filters = [];
$(function() {
date_pick_today = function(elem) {
$(elem).datetimepicker({dateFormat: "yy-mm-dd"});
$(elem).datetimepicker('setDate', (new Date()));
}
date_pick_one_month = function(elem) {
$(elem).datetimepicker({dateFormat: "yy-mm-dd"});
next_month = Date.today().next().month();
$(elem).datetimepicker('setDate', next_month);
}
// Great hack
register_second_select = function(elem) {
second_filters[$(elem).val()] = $(elem);
}
fill_second_select = function(elem) {
$(elem).on("change", function() {
composed_id = $(this).val();
field_id = composed_id.split("#")[0];
id = composed_id.split("#")[1];
$.ajax({
url: "<?php echo $urlAjaxExtraField; ?>&a=get_second_select_options",
dataType: "json",
data: "type=session&field_id="+field_id+"&option_value_id="+id,
success: function(data) {
my_select = second_filters[field_id];
my_select.empty();
$.each(data, function(index, value) {
my_select.append($("<option/>", {
value: index,
text: value
}));
});
}
});
});
}
<?php
echo Display::grid_js(
'sessions',
$url,
$columns,
$columnModel,
$extraParams,
[],
null,
true
);
?>
setSearchSelect("status");
var grid = $("#sessions"),
prmSearch = {
multipleSearch : true,
overlay : false,
width: 'auto',
caption: '<?php echo addslashes(get_lang('Search')); ?>',
formclass:'data_table',
onSearch : function() {
var postdata = grid.jqGrid('getGridParam', 'postData');
if (postdata && postdata.filters) {
filters = jQuery.parseJSON(postdata.filters);
clean_cols(grid, added_cols);
added_cols = [];
$.each(filters, function(key, value) {
if (key == 'rules') {
$.each(value, function(subkey, subvalue) {
added_cols[subvalue.field] = subvalue.field;
});
}
});
show_cols(grid, added_cols);
}
},
onReset: function() {
clean_cols(grid, added_cols);
}
};
original_cols = grid.jqGrid('getGridParam', 'colModel');
grid.jqGrid('navGrid','#sessions_pager',
{edit:false,add:false,del:false},
{height:280,reloadAfterSubmit:false}, // edit options
{height:280,reloadAfterSubmit:false}, // add options
{reloadAfterSubmit:false},// del options
prmSearch
);
<?php
// Create the searching dialog.
echo 'grid.searchGrid(prmSearch);';
?>
// Fixes search table.
var searchDialogAll = $("#fbox_"+grid[0].id);
searchDialogAll.addClass("table");
var searchDialog = $("#searchmodfbox_"+grid[0].id);
searchDialog.addClass("ui-jqgrid ui-widget ui-widget-content ui-corner-all");
searchDialog.css({position:"adsolute", "z-index":"100", "float":"left", "top":"55%", "left" : "25%", "padding" : "5px", "border": "1px solid #CCC"})
var gbox = $("#gbox_"+grid[0].id);
gbox.before(searchDialog);
gbox.css({clear:"left"});
// Select first elements by default
$('.input-elm').each(function() {
$(this).find('option:first').attr('selected', 'selected');
});
$('.delete-rule').each(function(){
$(this).click(function(){
$('.input-elm').each(function(){
$(this).find('option:first').attr('selected', 'selected');
});
});
});
});
</script>
<?php
$form->display();
echo Display::grid_html('sessions');
Display::display_footer();