$(function() {
$(".thematic_advance_actions, .thematic_tools ").hide();
$(".thematic_content").mouseover(function() {
var id = parseInt(this.id.split("_")[3]);
$("#thematic_id_content_"+id ).show();
});
$(".thematic_content").mouseleave(function() {
var id = parseInt(this.id.split("_")[3]);
$("#thematic_id_content_"+id ).hide();
});
$(".thematic_advance_content").mouseover(function() {
var id = parseInt(this.id.split("_")[4]);
$("#thematic_advance_tools_"+id ).show();
});
$(".thematic_advance_content").mouseleave(function() {
var id = parseInt(this.id.split("_")[4]);
$("#thematic_advance_tools_"+id ).hide();
});
});
';
$htmlHeadXtra[] = '';
$attendance = new Attendance();
// get data for attendance input select
$attendance_list = $attendance->get_attendances_list();
$attendance_select = [];
$attendance_select[0] = get_lang('Select an attendance');
foreach ($attendance_list as $attendanceEntity) {
$attendance_select[$attendanceEntity->getIid()] = $attendanceEntity->getName();
}
$token = Security::get_token();
$url_token = '&sec_token='.$token;
$user_info = api_get_user_info();
$params = '&'.api_get_cidreq();
if (isset($_POST['action']) && 'thematic_delete_select' === $_POST['action']) {
$action = 'thematic_delete_select';
}
if (isset($_GET['isStudentView']) && 'true' === $_GET['isStudentView']) {
$action = 'thematic_details';
}
$interbreadcrumb[] = [
'url' => $currentUrl,
'name' => get_lang('Thematic control'),
];
$actionLeft = '';
// instance thematic object for using like library here
$thematicManager = new Thematic();
$thematicEntity = null;
if (!empty($thematicId)) {
$repo = Container::getThematicRepository();
// thematic data by id
/** @var CThematic $thematicEntity */
$thematicEntity = $repo->find($thematicId);
}
$cleanThematicTitle = null !== $thematicEntity ? strip_tags($thematicEntity->getTitle()) : null;
// get default thematic plan title
$default_thematic_plan_title = $thematicManager->get_default_thematic_plan_title();
$tpl = new Template(get_lang('Thematic control'));
// Dispatch actions to controller
switch ($action) {
case 'thematic_add':
case 'thematic_edit':
if (empty($thematicId)) {
$interbreadcrumb[] = ['url' => '#', 'name' => get_lang('New thematic section')];
} else {
$interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Edit thematic section')];
}
if ('POST' === $requestMethod && '' !== trim($_POST['title']) &&
api_is_allowed_to_edit(null, true)
) {
$title = trim($_POST['title']);
$content = trim($_POST['content']);
$session_id = api_get_session_id();
$thematicManager->set_thematic_attributes($thematicId, $title, $content, $session_id);
$thematicManager->thematic_save();
Display::addFlash(Display::return_message(get_lang('Update successful')));
header('Location: '.$currentUrl);
exit;
break;
} else {
// Display form
$form = new FormValidator('thematic_add', 'POST', 'index.php?action=thematic_add&'.api_get_cidreq());
if ('thematic_edit' === $action) {
$form->addElement('header', '', get_lang('Edit thematic section'));
}
$form->addHidden('sec_token', $token);
$form->addHidden('action', $action);
if (!empty($thematicId)) {
$form->addHidden('thematic_id', $thematicId);
}
if (api_get_configuration_value('save_titles_as_html')) {
$form->addHtmlEditor(
'title',
get_lang('Title'),
true,
false,
['ToolbarSet' => 'TitleAsHtml']
);
} else {
$form->addText('title', get_lang('Title'), true, ['size' => '50']);
}
$form->addHtmlEditor(
'content',
get_lang('Content'),
false,
false,
['ToolbarSet' => 'Basic', 'Height' => '150']
);
$form->addButtonSave(get_lang('Save'));
if (!empty($thematicEntity)) {
if (api_get_session_id()) {
/*if ($thematic['session_id'] != api_get_session_id()) {
$show_form = false;
echo Display::return_message(get_lang('NotAllowedClickBack'), 'error', false);
}*/
}
// set default values
$default['title'] = $thematicEntity->getTitle();
$default['content'] = $thematicEntity->getContent();
$form->setDefaults($default);
}
$content = $form->returnForm();
}
break;
case 'thematic_copy':
// Copy a thematic to a session
$thematicManager->copy($thematicId);
header('Location: '.$currentUrl);
exit;
break;
case 'thematic_delete_select':
if ('POST' === $requestMethod && api_is_allowed_to_edit(null, true)) {
$thematicManager->delete($_POST['id']);
Display::addFlash(Display::return_message(get_lang('Deleted')));
}
header('Location: '.$currentUrl);
exit;
break;
case 'thematic_delete':
// Delete a thematic
if (!empty($thematicId) && api_is_allowed_to_edit(null, true)) {
$thematicManager->delete($thematicId);
Display::addFlash(Display::return_message(get_lang('Deleted')));
}
header('Location: '.$currentUrl);
exit;
break;
case 'thematic_import':
$csv_import_array = Import::csv_reader($_FILES['file']['tmp_name'], false);
if (isset($_POST['replace']) && $_POST['replace']) {
// Remove current thematic.
$list = $thematicManager->get_thematic_list();
foreach ($list as $id) {
$thematicManager->delete($id);
}
}
// Import the progress.
$current_thematic = null;
foreach ($csv_import_array as $key => $item) {
if (!$key) {
continue;
}
switch ($item[0]) {
case 'title':
$thematicManager->set_thematic_attributes(
null,
$item[1],
$item[2],
api_get_session_id()
);
$current_thematic = $thematicManager->thematic_save();
$description_type = 1;
break;
case 'plan':
$thematicManager->set_thematic_plan_attributes(
$current_thematic,
$item[1],
$item[2],
$description_type
);
$thematicManager->thematic_plan_save();
$description_type++;
break;
case 'progress':
$thematicManager->set_thematic_advance_attributes(
null,
$current_thematic,
0,
$item[3],
$item[1],
$item[2]
);
$thematicManager->thematic_advance_save();
break;
}
}
Display::addFlash(Display::return_message(get_lang('Import')));
header('Location: '.$currentUrl);
exit;
break;
case 'thematic_import_select':
$actionLeft = '';
$actionLeft .= Display::return_icon(
'back.png',
get_lang('Back to').' '.get_lang('Thematic view with details'),
'',
ICON_SIZE_MEDIUM
);
$actionLeft .= '';
// Create form to upload csv file.
$form = new FormValidator(
'thematic_import',
'POST',
'index.php?action=thematic_import&'.api_get_cidreq().$url_token
);
$form->addElement('header', get_lang('Import course progress'));
$form->addElement('file', 'file');
$form->addElement('checkbox', 'replace', null, get_lang('Delete all course progress'));
$form->addButtonImport(get_lang('Import'), 'SubmitImport');
$content = $form->returnForm();
break;
case 'moveup':
if (!api_is_allowed_to_edit(null, true)) {
api_not_allowed();
}
$thematicManager->move_thematic('up', $thematicId);
header('Location: '.$currentUrl);
exit;
break;
case 'movedown':
if (!api_is_allowed_to_edit(null, true)) {
api_not_allowed();
}
$thematicManager->move_thematic('down', $thematicId);
header('Location: '.$currentUrl);
exit;
break;
case 'thematic_export':
$list = $thematicManager->get_thematic_list();
$csv = [];
$csv[] = ['type', 'data1', 'data2', 'data3'];
foreach ($list as $thematicEntity) {
$csv[] = ['title', strip_tags($thematicEntity->getTitle()), strip_tags($thematicEntity->getContent())];
$data = $thematicEntity->getPlans();
if (!empty($data)) {
foreach ($data as $plan) {
if (empty($plan->getDescription())) {
continue;
}
$csv[] = [
'plan',
strip_tags($plan->getTitle()),
strip_tags($plan->getDescription()),
];
}
}
$data = $thematicEntity->getAdvances();
if (!empty($data)) {
foreach ($data as $advance) {
$csv[] = [
'progress',
strip_tags(api_get_local_time($advance->getStartDate())),
strip_tags($advance->getDuration()),
strip_tags($advance->getContent()),
];
}
}
}
Export::arrayToCsv($csv);
exit;
break;
case 'export_documents':
case 'thematic_export_pdf':
$pdfOrientation = api_get_configuration_value('thematic_pdf_orientation');
$view = new Template('', false, false, false, true, false, false);
$list = $thematicManager->get_thematic_list();
$view->assign('data', $list);
$template = $view->get_template('course_progress/pdf_general_thematic.tpl');
$format = 'portrait' !== $pdfOrientation ? 'A4-L' : 'A4-P';
$orientation = 'portrait' !== $pdfOrientation ? 'L' : 'P';
$fileName = get_lang('Thematic').'-'.api_get_local_time();
$title = get_lang('Thematic');
$signatures = ['Drh', 'Teacher', 'Date'];
if ('export_documents' === $action) {
$pdf = new PDF(
$format,
$orientation,
[
'filename' => $fileName,
'pdf_title' => $fileName,
'add_signatures' => $signatures,
]
);
$pdf->exportFromHtmlToDocumentsArea($view->fetch($template), $fileName, $courseId);
header('Location: '.$currentUrl);
exit;
}
Export::export_html_to_pdf(
$view->fetch($template),
[
'filename' => $fileName,
'pdf_title' => $title,
'add_signatures' => $signatures,
'format' => $format,
'orientation' => $orientation,
]
);
break;
case 'export_single_thematic':
case 'export_single_documents':
$view = new Template('', false, false, false, true, false, false);
$view->assign('thematic', $thematicEntity);
$template = $view->get_template('course_progress/pdf_single_thematic.tpl');
$pdfOrientation = api_get_configuration_value('thematic_pdf_orientation');
$format = 'portrait' !== $pdfOrientation ? 'A4-L' : 'A4-P';
$orientation = 'portrait' !== $pdfOrientation ? 'L' : 'P';
$title = get_lang('Thematic').'-'.$thematicEntity->getTitle();
$fileName = $title.'-'.api_get_local_time();
$signatures = ['Drh', 'Teacher', 'Date'];
if ('export_single_documents' === $action) {
$pdf = new PDF(
$format,
$orientation,
[
'filename' => $fileName,
'pdf_title' => $fileName,
'add_signatures' => $signatures,
]
);
$pdf->exportFromHtmlToDocumentsArea(
$view->fetch($template),
$fileName,
$courseId
);
header('Location: '.$currentUrl);
exit;
}
Export::export_html_to_pdf(
$view->fetch($template),
[
'filename' => $fileName,
'pdf_title' => $title,
'add_signatures' => $signatures,
'format' => $format,
'orientation' => $orientation,
]
);
break;
case 'thematic_details':
$actionLeft = ''.
Display::return_icon(
'new_course_progress.png',
get_lang('New thematic section'),
'',
ICON_SIZE_MEDIUM
).'';
$actionLeft .= ''.
Display::return_icon('import_csv.png', get_lang('Import course progress'), '', ICON_SIZE_MEDIUM).'';
$actionLeft .= ''.
Display::return_icon('export_csv.png', get_lang('Export course progress'), '', ICON_SIZE_MEDIUM).'';
$actionLeft .= ''.
Display::return_icon('pdf.png', get_lang('Export to PDF'), '', ICON_SIZE_MEDIUM).'';
/*$actionLeft .= Display::url(
Display::return_icon('export_to_documents.png', get_lang('Export latest version of this page to Documents'), [], ICON_SIZE_MEDIUM),
api_get_self().'?'.api_get_cidreq().'&'.http_build_query(['action' => 'export_documents']).$url_token
);*/
$total_average_of_advances = null;
$tpl->assign('token', $url_token);
$tpl->assign('is_allowed_to_edit', $isTeacher);
$toolbar = null;
if ($thematicEntity) {
$thematic_data[$thematicId] = $thematicEntity;
$data['total_average_of_advances'] = $thematicManager->get_average_of_advances_by_thematic($thematicId);
} else {
$thematic_data = $thematicManager->get_thematic_list(api_get_course_id(), api_get_session_id());
$max_thematic_item = $thematicManager->get_max_thematic_item();
$last_done_thematic_advance = $thematicManager->get_last_done_thematic_advance();
$total_average_of_advances = $thematicManager->get_total_average_of_thematic_advances();
}
// Second column
$thematic_plan_data = $thematicManager->get_thematic_plan_data();
// Third column
$thematic_advance_data = $thematicManager->get_thematic_advance_list(null, true);
if (!empty($message) && !empty($total_average_of_advances)) {
$tpl->assign('message', $message);
}
$tpl->assign('score_progress', $total_average_of_advances);
if (isset($last_id) && $last_id) {
$link_to_thematic_plan = ''.
Display::return_icon(
'lesson_plan.png',
get_lang('Thematic plan'),
['style' => 'vertical-align:middle;float:none;'],
ICON_SIZE_SMALL
).'';
$link_to_thematic_advance = ''.
Display::return_icon(
'lesson_plan_calendar.png',
get_lang('Thematic advance'),
['style' => 'vertical-align:middle;float:none;'],
ICON_SIZE_SMALL
).'';
Display::addFlash(
Display::return_message(
get_lang('Thematic section has been created successfully').'
'.sprintf(
get_lang('Now you should add thematic plan %s and thematic advance %s'),
$link_to_thematic_plan,
$link_to_thematic_advance
),
'confirmation',
false
)
);
}
if (empty($thematicId)) {
// display information
$text = ''.get_lang('Information').': ';
$text .= get_lang('Thematic view with details');
$message = Display::return_message($text, 'info', false);
}
$list = [];
$listThematic = [];
// Display thematic data
if (!empty($thematic_data)) {
/** @var CThematic $thematic */
foreach ($thematic_data as $thematic) {
$id = $thematic->getIid();
$session_star = '';
if (api_is_allowed_to_edit(null, true)) {
if (api_get_session_id() == $thematic->getSessionId()) {
$session_star = api_get_session_image(api_get_session_id(), $user_info['status']);
}
}
//@todo add a validation in order to load or not course thematics in the session thematic
$toolbarThematic = '';
if (api_is_allowed_to_edit(null, true)) {
// Thematic title
$toolbarThematic = Display::url(
Display::return_icon(
'cd.png',
get_lang('Copy'),
null,
ICON_SIZE_TINY
),
'index.php?'.api_get_cidreq().'&action=thematic_copy&thematic_id='.$id.$params.$url_token,
['class' => 'btn btn-default']
);
if (0 == api_get_session_id()) {
if ($thematic->getDisplayOrder() > 1) {
$toolbarThematic .= ' '.
Display::return_icon('up.png', get_lang('Up'), '', ICON_SIZE_TINY).'';
} else {
$toolbarThematic .= '