diff --git a/app/Resources/public/css/base.css b/app/Resources/public/css/base.css index 09012f2c44..88c7487569 100644 --- a/app/Resources/public/css/base.css +++ b/app/Resources/public/css/base.css @@ -4138,6 +4138,27 @@ ul.holder li.bit-box{ #thematic .arrow.collapsed{ background: url("../../main/img/icons/22/arrow-down-collapse.png") no-repeat 99% center; } +.thematic .toolbar-actions{ + height: 30px; + display: block; +} +.thematic .thematic-advance{ + margin-top: 10px; + display: inline-block; +} +.thematic .score-progress{ + background-color: #0099FF; + border: 1px solid #0099FF; + color: #FFF; + padding: 12px; + text-transform: uppercase; + margin-bottom: 10px; + border-radius: 5px; +} +.thematic .score-progress h3{ + margin: 0; + padding: 0; +} .question_options .exercise-unique-answer-image .radio{ padding-left: 10px; margin-left: 0px; diff --git a/main/course_progress/index.php b/main/course_progress/index.php index 1899bb52d9..7c933a0d88 100755 --- a/main/course_progress/index.php +++ b/main/course_progress/index.php @@ -81,6 +81,7 @@ if (!empty($thematic_id)) { $thematic_data = $thematic->get_thematic_list($thematic_id); } + // get default thematic plan title $default_thematic_plan_title = $thematic->get_default_thematic_plan_title(); diff --git a/main/course_progress/thematic.php b/main/course_progress/thematic.php index 635984e6f1..f37b706177 100755 --- a/main/course_progress/thematic.php +++ b/main/course_progress/thematic.php @@ -16,34 +16,37 @@ $url_token = "&sec_token=".$token; $user_info = api_get_user_info(); $params = '&'.api_get_cidreq(); -if (api_is_allowed_to_edit(null, true)) { - echo '
'; +$tpl = new Template(get_lang('ThematicControl')); +$toolbar = null; +if (api_is_allowed_to_edit(null, true)) { + switch ($action) { case 'thematic_add': case 'thematic_import_select': - echo ''. + $actionLeft = ''. Display::return_icon('back.png', get_lang('BackTo').' '.get_lang('ThematicDetails'), '', ICON_SIZE_MEDIUM).''; break; case 'thematic_list': - echo ''. + $actionLeft = ''. Display::return_icon('new_course_progress.png', get_lang('NewThematicSection'), '', ICON_SIZE_MEDIUM).''; break; case 'thematic_details': - echo ''. + $actionLeft = ''. Display::return_icon('new_course_progress.png', get_lang('NewThematicSection'), '', ICON_SIZE_MEDIUM).''; - echo ''. + $actionLeft .= ''. Display::return_icon('import_csv.png', get_lang('ImportThematic'), '', ICON_SIZE_MEDIUM).''; - echo ''. + $actionLeft .= ''. Display::return_icon('export_csv.png', get_lang('ExportThematic'), '', ICON_SIZE_MEDIUM).''; - echo ''. + $actionLeft .= ''. Display::return_icon('pdf.png', get_lang('ExportToPDF'), '', ICON_SIZE_MEDIUM).''; break; default: - echo ''. + $actionLeft = ''. Display::return_icon('new_course_progress.png', get_lang('NewThematicSection'), '', ICON_SIZE_MEDIUM).''; } - echo '
'; + + $toolbar= Display::toolbarAction('thematic-bar', array(0 => $actionLeft)); } if ($action == 'thematic_list') { @@ -70,7 +73,7 @@ if ($action == 'thematic_list') { } elseif ($action == 'thematic_details') { if (isset($_GET['thematic_plan_save_message']) && $_GET['thematic_plan_save_message'] == 'ok') { - Display::display_confirmation_message(get_lang('ThematicSectionHasBeenCreatedSuccessfull')); + Display::addFlash(Display::return_message(get_lang('ThematicSectionHasBeenCreatedSuccessfull'), 'confirmation', false)); } if (isset($last_id) && $last_id) { @@ -78,29 +81,33 @@ if ($action == 'thematic_list') { Display::return_icon('lesson_plan.png', get_lang('ThematicPlan'), array('style' => 'vertical-align:middle;float:none;'), ICON_SIZE_SMALL).''; $link_to_thematic_advance = ''. Display::return_icon('lesson_plan_calendar.png', get_lang('ThematicAdvance'), array('style' => 'vertical-align:middle;float:none;'), ICON_SIZE_SMALL).''; - Display::display_confirmation_message( + Display::addFlash(Display::return_message( get_lang('ThematicSectionHasBeenCreatedSuccessfull').'
'.sprintf(get_lang('NowYouShouldAddThematicPlanXAndThematicAdvanceX'), $link_to_thematic_plan, $link_to_thematic_advance), + 'confirmation', false - ); + )); } - - // display title - if (!empty($thematic_id)) { - } else { + if (empty($thematic_id)) { // display information - $message = ''.get_lang('Information').'
'; - $message .= get_lang('ThematicDetailsDescription'); - Display::display_normal_message($message, false); - echo '
'; + $text = ''.get_lang('Information').': '; + $text .= get_lang('ThematicDetailsDescription'); + $message = Display::return_message($text, 'info', false); } - + $list = []; // Display thematic data + if (!empty($thematic_data)) { // display progress - echo '

'.get_lang('Progress').': '.$total_average_of_advances.' %

'; - echo ''; - echo ''; 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 = ''; @@ -109,151 +116,56 @@ if ($action == 'thematic_list') { $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 - echo ''; - $actions_first_col = ''; + $toolbarThematic = ''; if (api_is_allowed_to_edit(null, true)) { // Thematic title - $actions_first_col = Display::url( - Display::return_icon('cd.gif', get_lang('Copy')), - 'index.php?'.api_get_cidreq().'&action=thematic_copy&thematic_id='.$my_thematic_id.$params.$url_token + $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, + array('class'=> 'btn btn-default') ); if (api_get_session_id() == 0) { if ($thematic['display_order'] > 1) { - $actions_first_col .= ' '.Display::return_icon('up.png', get_lang('Up'), '', ICON_SIZE_SMALL).''; + $toolbarThematic .= ' '.Display::return_icon('up.png', get_lang('Up'), '', ICON_SIZE_TINY).''; } else { - $actions_first_col .= ' '.Display::return_icon('up_na.png', ' ', '', ICON_SIZE_SMALL); + $toolbarThematic .= '
'.Display::return_icon('up_na.png', ' ', '', ICON_SIZE_TINY) . '
'; } if (isset($thematic['max_thematic_item']) && $thematic['display_order'] < $thematic['max_thematic_item']) { - $actions_first_col .= ' '.Display::return_icon('down.png', get_lang('Down'), '', ICON_SIZE_SMALL).''; + $toolbarThematic .= ' '.Display::return_icon('down.png', get_lang('Down'), '', ICON_SIZE_TINY).''; } else { - $actions_first_col .= ' '.Display::return_icon('down_na.png', ' ', '', ICON_SIZE_SMALL); + $toolbarThematic .= '
'.Display::return_icon('down_na.png', ' ', '', ICON_SIZE_TINY) . '
'; } } if (api_get_session_id() == $thematic['session_id']) { - $actions_first_col .= Display::url( - Display::return_icon('pdf.png'), + $toolbarThematic .= Display::url( + Display::return_icon('pdf.png', get_lang('ExportToPDF'), null, ICON_SIZE_TINY), api_get_self().'?'.api_get_cidreq()."$url_token&".http_build_query([ 'action' => 'export_single_thematic', 'thematic_id' => $my_thematic_id - ]) + ]), + array('class' => 'btn btn-default') ); - $actions_first_col .= '' - .Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL).''; - $actions_first_col .= '' - .Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL).''; + .Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_TINY).''; } - - $actions_first_col = Display::div($actions_first_col, array('id' => 'thematic_id_content_'.$thematic['id'], 'class' => 'thematic_tools')); - $actions_first_col = Display::div($actions_first_col, array('style' => 'height:20px')); } - - echo Display::tag('td', Display::tag('h3', Security::remove_XSS($thematic['title'], STUDENT).$session_star).Security::remove_XSS($thematic['content'], STUDENT).$actions_first_col, array('id' => 'thematic_td_content_'.$thematic['id'], 'class' => 'thematic_content')); - - // Display 2nd column - thematic plan data - echo ''; - - // Display 3rd column - thematic advance data - echo ''; - echo ''; + $list['thematic_advance'] = $thematic_advance_data[$thematic['id']]; + $list['last_done'] = $last_done_thematic_advance; + $list['toolbar'] = $toolbarThematic; + $listThematic[] = $list; } //End for - echo '
'.get_lang('Thematic').''.get_lang('ThematicPlan').''.get_lang('ThematicAdvance').'
'; - //if (api_is_allowed_to_edit(null, true) && api_get_session_id() == $thematic['session_id']) { - if (api_is_allowed_to_edit(null, true)) { - echo '
'. - Display::return_icon('edit.png', get_lang('EditThematicPlan'), array('style' => 'vertical-align:middle'), ICON_SIZE_MEDIUM).'

'; - } - if (empty($thematic_plan_div[$thematic['id']])) { - echo Display::div('', array('id' => "thematic_plan_".$thematic['id'])); + $list['thematic_plan'] = null; } else { - echo $thematic_plan_div[$thematic['id']]; + $list['thematic_plan'] = $thematic_plan_div[$thematic['id']]; } - echo '
'; - - //if (api_is_allowed_to_edit(null, true) && api_get_session_id() == $thematic['session_id']) { - if (api_is_allowed_to_edit(null, true)) { - echo '
'. - Display::return_icon('add.png', get_lang('NewThematicAdvance'), '', ICON_SIZE_MEDIUM).'
'; - } - - //if (api_is_allowed_to_edit(null, true) && api_get_session_id() == $thematic['session_id']) { - if (!empty($thematic_advance_data[$thematic['id']])) { - echo ''; - foreach ($thematic_advance_data[$thematic['id']] as $thematic_advance) { - $thematic_advance['start_date'] = api_get_local_time($thematic_advance['start_date']); - $thematic_advance['start_date'] = api_format_date($thematic_advance['start_date'], DATE_TIME_FORMAT_LONG); - echo ''; - echo ''; - - //if (api_is_allowed_to_edit(null, true) && api_get_session_id() == $thematic['session_id']) { - if (api_is_allowed_to_edit(null, true)) { - if (empty($thematic_id)) { - $checked = ''; - if ($last_done_thematic_advance == $thematic_advance['id']) { - $checked = 'checked'; - } - $style = ''; - if ($thematic_advance['done_advance'] == 1) { - $style = ' style="background-color:#E5EDF9" '; - } else { - $style = ' style="background-color:#fff" '; - } - echo ''; - } else { - if ($thematic_advance['done_advance'] == 1) { - echo ''; - } else { - echo ''; - } - } - } - echo ''; - } - echo '
'; - - $edit_link = ''; - if (api_is_allowed_to_edit(null, true)) { - $edit_link = Display::url( - Display::return_icon( - 'edit.png', - get_lang('EditThematicAdvance'), - [], - ICON_SIZE_SMALL - ), - 'index.php?'.api_get_cidreq().'&'.http_build_query([ - 'action' => 'thematic_advance_edit', - 'thematic_id' => $thematic['id'], - 'thematic_advance_id' => $thematic_advance['id'] - ]) - ); - $edit_link .= ''. - Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL).''; - - // Links - $edit_link = Display::div( - Display::div($edit_link, array('id' => 'thematic_advance_tools_'.$thematic_advance['id'], 'class' => 'thematic_advance_actions')), - array('style' => 'height:20px;') - ); - } - - $thematic_advance_item = isset($thematic_advance_div[$thematic['id']][$thematic_advance['id']]) ? $thematic_advance_div[$thematic['id']][$thematic_advance['id']] : null; - echo Display::div($thematic_advance_item, array('id' => 'thematic_advance_'.$thematic_advance['id'])); - echo $edit_link; - echo '
'; - echo ''; - echo '
'.get_lang('Done').'
-
'; - } else { - echo '
'.get_lang('ThereIsNoAThematicAdvance').'
'; - } - echo '
'; - } else { - echo '
'.get_lang('ThereIsNoAThematicSection').'
'; } } elseif ($action == 'thematic_add' || $action == 'thematic_edit') { // Display form @@ -304,3 +216,12 @@ if ($action == 'thematic_list') { $form->addButtonImport(get_lang('Import'), 'SubmitImport'); $form->display(); } + +$tpl->assign('actions', $toolbar); +$tpl->assign('message', $message); +$tpl->assign('data', $listThematic); +$tpl->assign('session_star', $session_star); +$tpl->assign('score_progress', $total_average_of_advances); +$tpl->assign('thamatic', $thematic); +$thematicLayout = $tpl->get_template('course_progress/progress.tpl'); +$tpl->display($thematicLayout); diff --git a/main/course_progress/thematic_controller.php b/main/course_progress/thematic_controller.php index 7c42cf1a6f..8711597b61 100755 --- a/main/course_progress/thematic_controller.php +++ b/main/course_progress/thematic_controller.php @@ -315,7 +315,7 @@ class ThematicController // Third column $thematic_advance_data = $thematic->get_thematic_advance_list(null, null, true); - $data['thematic_plan_div'] = $thematic->get_thematic_plan_div($thematic_plan_data); + $data['thematic_plan_div'] = $thematic->get_thematic_plan_array($thematic_plan_data); $data['thematic_advance_div'] = $thematic->get_thematic_advance_div($thematic_advance_data); $data['thematic_plan_data'] = $thematic_plan_data; $data['thematic_advance_data'] = $thematic_advance_data; @@ -403,6 +403,7 @@ class ThematicController $data['next_description_type'] = $thematic->get_next_description_type($_POST['thematic_id']); // render to the view + $this->view->set_data($data); $this->view->set_layout('layout'); $this->view->set_template('thematic_plan'); @@ -445,6 +446,7 @@ class ThematicController $data['thematic_data'] = $thematic->get_thematic_list($thematic_id); //render to the view + $this->view->set_data($data); $this->view->set_layout('layout'); $this->view->set_template('thematic_plan'); @@ -530,6 +532,7 @@ class ThematicController $layoutName = $displayHeader ? 'layout' : 'layout_no_header'; // render to the view + $this->view->set_data($data); $this->view->set_layout($layoutName); $this->view->set_template('thematic_advance'); diff --git a/main/img/icons/16/cd.png b/main/img/icons/16/cd.png new file mode 100644 index 0000000000..1e8e16a891 Binary files /dev/null and b/main/img/icons/16/cd.png differ diff --git a/main/img/icons/16/delete.png b/main/img/icons/16/delete.png index f26e2636e3..fa43cbf840 100755 Binary files a/main/img/icons/16/delete.png and b/main/img/icons/16/delete.png differ diff --git a/main/img/icons/16/down.png b/main/img/icons/16/down.png new file mode 100644 index 0000000000..f49028fd62 Binary files /dev/null and b/main/img/icons/16/down.png differ diff --git a/main/img/icons/16/down_na.png b/main/img/icons/16/down_na.png new file mode 100644 index 0000000000..513babe08e Binary files /dev/null and b/main/img/icons/16/down_na.png differ diff --git a/main/img/icons/16/pdf.png b/main/img/icons/16/pdf.png new file mode 100644 index 0000000000..54d20aec30 Binary files /dev/null and b/main/img/icons/16/pdf.png differ diff --git a/main/img/icons/16/up.png b/main/img/icons/16/up.png new file mode 100644 index 0000000000..e06c1cab13 Binary files /dev/null and b/main/img/icons/16/up.png differ diff --git a/main/img/icons/16/up_na.png b/main/img/icons/16/up_na.png new file mode 100644 index 0000000000..3e18c99970 Binary files /dev/null and b/main/img/icons/16/up_na.png differ diff --git a/main/inc/lib/template.lib.php b/main/inc/lib/template.lib.php index 445ed01294..db7be9728b 100755 --- a/main/inc/lib/template.lib.php +++ b/main/inc/lib/template.lib.php @@ -136,6 +136,7 @@ class Template $this->twig->addFilter('icon', new Twig_Filter_Function('Template::get_icon_path')); $this->twig->addFilter('img', new Twig_Filter_Function('Template::get_image')); $this->twig->addFilter('format_date', new Twig_Filter_Function('Template::format_date')); + $this->twig->addFilter('isAllowedToEdit', new Twig_Filter_Function('api_is_allowed_to_edit')); $this->twig->addFilter('api_get_local_time', new Twig_Filter_Function('api_get_local_time')); // a combination of the two previous functions $this->twig->addFilter('local_format_date', new Twig_Filter_Function('api_convert_and_format_date')); @@ -236,7 +237,7 @@ class Template { return api_format_date($timestamp, $format); } - + /** * Return the item's url key: * diff --git a/main/inc/lib/thematic.lib.php b/main/inc/lib/thematic.lib.php index 30b19ca9ee..4ff9d12454 100755 --- a/main/inc/lib/thematic.lib.php +++ b/main/inc/lib/thematic.lib.php @@ -614,7 +614,7 @@ class Thematic * @param array $data * @return array */ - public function get_thematic_plan_div($data) + public function get_thematic_plan_array($data) { $final_return = array(); $uinfo = api_get_user_info(); @@ -632,10 +632,10 @@ class Thematic } } - $no_data = true; $session_star = ''; - $return = '
'; + $return = array(); if (!empty($default_thematic_plan_title)) { + foreach ($default_thematic_plan_title as $id=>$title) { //avoid others if ($title == 'Others' && empty($data[$thematic_id][$id]['description'])) { @@ -647,17 +647,18 @@ class Thematic $session_star = api_get_session_image(api_get_session_id(), $uinfo['status']); } } - $return .= Display::tag('h3', Security::remove_XSS($data[$thematic_id][$id]['title'], STUDENT).$session_star); - $return .= Security::remove_XSS($data[$thematic_id][$id]['description'], STUDENT); - $no_data = false; + + $return[$id]['title'] = Security::remove_XSS($data[$thematic_id][$id]['title'], STUDENT).$session_star; + $return[$id]['description'] = Security::remove_XSS($data[$thematic_id][$id]['description'], STUDENT); } } } + $final_return[$thematic_id] = $return; + /* if ($no_data) { $return .= '
'.get_lang('StillDoNotHaveAThematicPlan').'
'; } - $return .= '
'; - $final_return[$thematic_id] = $return; + */ } return $final_return; diff --git a/main/template/default/course_progress/progress.tpl b/main/template/default/course_progress/progress.tpl new file mode 100644 index 0000000000..fec63a9baf --- /dev/null +++ b/main/template/default/course_progress/progress.tpl @@ -0,0 +1,122 @@ +{{ actions }} +{{ message }} +{{ flash_messages }} +{% if data is not empty %} +{% set tutor = false | isAllowedToEdit(true) %} +
+
+
+
+
+

{{ 'Progress' | get_lang }}: {{ score_progress }} %

+
+
+
+ + + + + + + {% for item in data %} + + + + + + {% endfor %} + +
{{ 'Thematic' | get_lang }}{{ 'ThematicPlan' | get_lang }}{{ 'ThematicAdvance' | get_lang }}
+ {% if session_star is empty %} +

{{ item.title }}

+ {% else %} +

{{ item.title }} {{ session_star }}

+ {% endif %} + {{ item.content }} +
+ {{ item.toolbar }} +
+
+ {% if tutor %} +
+ + + +
+ {% endif %} +
+ {% if item.thematic_plan is empty %} +

{{ 'StillDoNotHaveAThematicPlan' | get_lang }}

+ {% else %} + {% for subitem in item.thematic_plan %} +

{{ subitem.title }}

+

{{ subitem.description }}

+ {% endfor %} + {% endif %} +
+
+ {% if tutor %} +
+ + + +
+ {% endif %} +
+ + {% if item.thematic_advance is not empty %} + {% for advance in item.thematic_advance %} + + + {% if advance.done_advance == 1 %} + {% set color = "background-color:#E5EDF9;" %} + {% else %} + {% set color = "background-color:#FFFFFF;" %} + {% endif %} + {% if tutor %} + + {% endif %} + + {% endfor %} + {% else %} + + {% endif %} +
+
+ {{ advance.start_date | format_date }} + {{ advance.content }} +
+ {% if tutor %} +
+
+ +
+
+ {% endif %} + +
+ {% set check = "" %} + {% if item.last_done == advance.id %} + {% set check = "checked" %} + {% endif %} +
+ +
+ {% else %} +
+
+
+
+
+
+
+{% else %} + +{% endif %} \ No newline at end of file diff --git a/main/template/default/layout/page_body.tpl b/main/template/default/layout/page_body.tpl index 7f4d92470f..7e0a6dffd8 100755 --- a/main/template/default/layout/page_body.tpl +++ b/main/template/default/layout/page_body.tpl @@ -1,7 +1,5 @@ {% if actions != '' %} -
- {{ actions }} -
+ {{ actions }} {% endif %} {{ flash_messages }}