* @author Julio Montoya Bug fixing * * @package chamilo.course_progress */ // protect a course script api_protect_course_script(true); $token = Security::get_token(); $url_token = "&sec_token=".$token; $user_info = api_get_user_info(); $params = '&'.api_get_cidreq(); $tpl = new Template(get_lang('Thematic control')); $isTeacher = api_is_allowed_to_edit(null, true); $tpl->assign('token', $url_token); $tpl->assign('is_allowed_to_edit', $isTeacher); $toolbar = null; if ($isTeacher) { switch ($action) { case 'thematic_add': 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 .= ''; break; case 'thematic_list': $actionLeft = ''. Display::return_icon('new_course_progress.png', get_lang('New thematic section'), '', ICON_SIZE_MEDIUM).''; 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 ); break; default: $actionLeft = ''. Display::return_icon( 'new_course_progress.png', get_lang('New thematic section'), '', ICON_SIZE_MEDIUM ).''; } $toolbar = Display::toolbarAction('thematic-bar', [$actionLeft]); } if ($action == 'thematic_list') { $table = new SortableTable( 'thematic_list', ['Thematic', 'get_number_of_thematics'], ['Thematic', 'get_thematic_data'] ); $parameters['action'] = $action; $table->set_additional_parameters($parameters); $table->set_header(0, '', false, ['style' => 'width:20px;']); $table->set_header(1, get_lang('Title'), false); if (api_is_allowed_to_edit(null, true)) { $table->set_header( 2, get_lang('Detail'), false, ['style' => 'text-align:center;width:40%;'] ); $table->set_form_actions(['thematic_delete_select' => get_lang('Delete all thematics')]); } $table->display(); } elseif ($action == 'thematic_details') { if (isset($_GET['thematic_plan_save_message']) && $_GET['thematic_plan_save_message'] == 'ok' ) { Display::addFlash( Display::return_message( get_lang('Thematic section has been created successfully'), 'confirmation', false ) ); } 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('NowYouShouldAddThematic planXAndThematic advanceX'), $link_to_thematic_plan, $link_to_thematic_advance), 'confirmation', false )); } if (empty($thematic_id)) { // display information $text = ''.get_lang('Information').': '; $text .= get_lang('Thematic view with detailsDescription'); $message = Display::return_message($text, 'info', false); } $list = []; // Display thematic data if (!empty($thematic_data)) { // display progress foreach ($thematic_data as $thematic) { $list['id'] = $thematic['id']; $list['id_course'] = $thematic['c_id']; $list['id_session'] = $thematic['session_id']; $list['title'] = Security::remove_XSS($thematic['title'], STUDENT); $list['content'] = Security::remove_XSS($thematic['content'], STUDENT); $list['display_orden'] = $thematic['display_order']; $list['active'] = $thematic['active']; $my_thematic_id = $thematic['id']; $session_star = ''; if (api_is_allowed_to_edit(null, true)) { if (api_get_session_id() == $thematic['session_id']) { $session_star = api_get_session_image(api_get_session_id(), $user_info['status']); } } $tpl->assign('session_star', $session_star); //@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='.$my_thematic_id.$params.$url_token, ['class' => 'btn btn-default'] ); if (api_get_session_id() == 0) { if ($thematic['display_order'] > 1) { $toolbarThematic .= ' '. Display::return_icon('up.png', get_lang('Up'), '', ICON_SIZE_TINY).''; } else { $toolbarThematic .= '
'. Display::return_icon('up_na.png', ' ', '', ICON_SIZE_TINY).'
'; } if (isset($thematic['max_thematic_item']) && $thematic['display_order'] < $thematic['max_thematic_item']) { $toolbarThematic .= ' '. Display::return_icon('down.png', get_lang('down'), '', ICON_SIZE_TINY).''; } else { $toolbarThematic .= '
'. Display::return_icon('down_na.png', ' ', '', ICON_SIZE_TINY).'
'; } } if (api_get_session_id() == $thematic['session_id']) { $toolbarThematic .= Display::url( Display::return_icon('pdf.png', get_lang('Export to PDF'), null, ICON_SIZE_TINY), api_get_self().'?'.api_get_cidreq()."$url_token&".http_build_query([ 'action' => 'export_single_thematic', 'thematic_id' => $my_thematic_id, ]), ['class' => 'btn btn-default'] ); $toolbarThematic .= Display::url( Display::return_icon( 'export_to_documents.png', get_lang('Export latest version of this page to Documents'), [], ICON_SIZE_TINY ), api_get_self().'?'.api_get_cidreq().$url_token.'&'.http_build_query( ['action' => 'export_single_documents', 'thematic_id' => $my_thematic_id] ), ['class' => 'btn btn-default'] ); $toolbarThematic .= '' .Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_TINY).''; $toolbarThematic .= '' .Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_TINY).''; } } if (empty($thematic_plan_div[$thematic['id']])) { $list['thematic_plan'] = null; } else { $list['thematic_plan'] = $thematic_plan_div[$thematic['id']]; } $list['thematic_advance'] = isset($thematic_advance_data[$thematic['id']]) ? $thematic_advance_data[$thematic['id']] : null; $list['last_done'] = $last_done_thematic_advance; $list['toolbar'] = $toolbarThematic; $listThematic[] = $list; $tpl->assign('data', $listThematic); } //End for } $thematicLayout = $tpl->get_template('course_progress/progress.html.twig'); $content = $tpl->fetch($thematicLayout); $tpl->assign('content', $content); } elseif ($action == 'thematic_add' || $action == 'thematic_edit') { // Display form $form = new FormValidator('thematic_add', 'POST', 'index.php?action=thematic_add&'.api_get_cidreq()); if ($action == 'thematic_edit') { $form->addElement('header', '', get_lang('Edit thematic section')); } $form->addElement('hidden', 'sec_token', $token); $form->addElement('hidden', 'action', $action); if (!empty($thematic_id)) { $form->addElement('hidden', 'thematic_id', $thematic_id); } 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')); $show_form = true; if (!empty($thematic_data)) { if (api_get_session_id()) { if ($thematic_data['session_id'] != api_get_session_id()) { $show_form = false; echo Display::return_message(get_lang('Sorry, you are not allowed to access this page, or maybe your connection has expired. Please click your browser\'s "Back" button or follow the link below to return to the previous page.'), 'error', false); } } // set default values $default['title'] = $thematic_data['title']; $default['content'] = $thematic_data['content']; $form->setDefaults($default); } // error messages if (isset($error)) { echo Display::return_message(get_lang('The form contains incorrect or incomplete data. Please check your input.'), 'error', false); } if ($show_form) { $html = $form->returnForm(); } } elseif ($action == 'thematic_import_select') { // 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'); $html = $form->returnForm(); } $tpl->assign('actions', $toolbar); if (!empty($html)) { $tpl->assign('content', $html); $thematicLayout = $tpl->get_template('course_progress/layout.tpl'); } if (!empty($message) && !empty($total_average_of_advances)) { $tpl->assign('message', $message); $tpl->assign('score_progress', $total_average_of_advances); } $tpl->display_one_col_template();