diff --git a/main/inc/ajax/skill.ajax.php b/main/inc/ajax/skill.ajax.php index b13e0e1e17..8c76dd5646 100755 --- a/main/inc/ajax/skill.ajax.php +++ b/main/inc/ajax/skill.ajax.php @@ -119,27 +119,19 @@ switch ($action) { $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null; $skill_info = $skill->get_skill_info($id); $courses = $skill->get_courses_by_skill($id); + $sessions = $skill->getSessionsBySkill($id); + $html = ''; - if (!empty($courses)) { - $html = sprintf( - get_lang('ToGetToLearnXYouWillNeedToTakeOneOfTheFollowingCourses'), - ''.$skill_info['name'].'' - ).'
'; - foreach ($courses as $course) { - $url = '#'; - $attributes = array('class' => 'course_description_popup', 'rel' => $course['code']); - $html .= - Display::url( - sprintf( - get_lang('SkillXWithCourseX'), - $skill_info['name'], - $course['title'] - ), - $url, - $attributes - ).'
'; - } + + if (!empty($courses) || !empty($sessions)) { + Display::display_no_header(); + Display::$global_template->assign('skill', $skill_info); + Display::$global_template->assign('courses', $courses); + Display::$global_template->assign('sessions', $sessions); + + $html = Display::$global_template->fetch('default/skill/skill_info.tpl'); } + echo $html; break; case 'get_skills_tree_json': diff --git a/main/inc/lib/skill.lib.php b/main/inc/lib/skill.lib.php index 4b406c3bd0..2638fa0fbc 100755 --- a/main/inc/lib/skill.lib.php +++ b/main/inc/lib/skill.lib.php @@ -531,6 +531,7 @@ class Skill extends Model $this->table_course = Database::get_main_table(TABLE_MAIN_COURSE); $this->table_skill_rel_skill = Database::get_main_table(TABLE_MAIN_SKILL_REL_SKILL); $this->table_gradebook = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); + $this->sessionTable = Database::get_main_table(TABLE_MAIN_SESSION); } /** @@ -1201,7 +1202,8 @@ class Skill extends Model ON g.id = sg.gradebook_id INNER JOIN {$this->table_course} c ON c.code = g.course_code - WHERE sg.skill_id = $skill_id"; + WHERE sg.skill_id = $skill_id + AND (g.session_id IS NULL OR g.session_id = 0)"; $result = Database::query($sql); return Database::store_result($result, 'ASSOC'); @@ -1371,4 +1373,26 @@ class Skill extends Model return $list; } + + /** + * Get the session list where the user can achieve a skill + * @param int $skillId The skill id + * @return array + */ + public function getSessionsBySkill($skillId) + { + $skillId = intval($skillId); + + $sql = "SELECT s.id, s.name + FROM {$this->table_gradebook} g + INNER JOIN {$this->table_skill_rel_gradebook} sg ON g.id = sg.gradebook_id + INNER JOIN {$this->sessionTable} s ON g.session_id = s.id + WHERE sg.skill_id = $skillId + AND g.session_id > 0"; + + $result = Database::query($sql); + + return Database::store_result($result, 'ASSOC'); + } + } diff --git a/main/template/default/skill/skill_info.tpl b/main/template/default/skill/skill_info.tpl new file mode 100644 index 0000000000..9c8e65e2a8 --- /dev/null +++ b/main/template/default/skill/skill_info.tpl @@ -0,0 +1,15 @@ +

{{ "ToGetToLearnXYouWillNeedToTakeOneOfTheFollowingCourses" | get_lang | format( "" ~ skill.name ~ "") }}

+ + diff --git a/main/template/default/skill/skill_wheel_student.tpl b/main/template/default/skill/skill_wheel_student.tpl index 4e668b5099..38b25943e7 100755 --- a/main/template/default/skill/skill_wheel_student.tpl +++ b/main/template/default/skill/skill_wheel_student.tpl @@ -92,7 +92,7 @@ $(document).ready(function() { }); /* When clicking in a course title */ - $("#skill_info").on("click", "a.course_description_popup", function(e) { + $("#skill_info").on("click", "a.course_description_popup[rel]", function(e) { e.preventDefault(); var getCourseInfo = $.ajax(