courses_categories.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * View (MVC patter) for courses categories
  5. * @author Christian Fasanando <christian1827@gmail.com> - Beeznest
  6. * @package chamilo.auth
  7. * @todo use twig
  8. */
  9. $stok = Security::get_token();
  10. ?>
  11. <script>
  12. $(document).ready( function() {
  13. $('.star-rating li a').on('click', function(event) {
  14. var id = $(this).parents('ul').attr('id');
  15. $('#vote_label2_' + id).html("<?php echo get_lang('Loading'); ?>");
  16. $.ajax({
  17. url: $(this).attr('data-link'),
  18. success: function(data) {
  19. $("#rating_wrapper_"+id).html(data);
  20. if(data == 'added') {
  21. //$('#vote_label2_' + id).html("{'Saved'|get_lang}");
  22. }
  23. if(data == 'updated') {
  24. //$('#vote_label2_' + id).html("{'Saved'|get_lang}");
  25. }
  26. }
  27. });
  28. });
  29. });
  30. </script>
  31. <div class="row">
  32. <div class="col-md-3">
  33. <div id="course_category_well" class="well">
  34. <ul class="nav nav-list">
  35. <?php if (!isset($_GET['hidden_links']) || isset($_GET['hidden_links']) && intval($_GET['hidden_links']) != 1) {
  36. $search_form->addElement('hidden', 'sec_token', $stok);
  37. $term = isset($_POST['search_term']) ? Security::remove_XSS($_POST['search_term']) : null;
  38. $search_form->setDefaults(array('search_term' => $term));
  39. echo $search_form->return_form();
  40. $hidden_links = 0;
  41. } else {
  42. $hidden_links = 1;
  43. }
  44. /* Categories will only show down to 4 levels, if you want more,
  45. * you will have to patch the following code. We don't recommend
  46. * it, as this can considerably slow down your system
  47. */
  48. if (!empty($browse_course_categories)) {
  49. echo '<a class="btn btn-default" href="'.api_get_self().'?action=display_random_courses">'.get_lang('RandomPick').'</a><br /><br />';
  50. echo '<li class="nav-header">'.get_lang('CourseCategories').'</li>';
  51. // level 1
  52. foreach ($browse_course_categories[0] as $category) {
  53. $category_name = $category['name'];
  54. $category_code = isset($category['code']) ? $category['code'] : null;
  55. $count_courses_lv1 = $category['count_courses'];
  56. if (isset($code) && $code == $category_code) {
  57. $category_link = '<strong>'.$category_name.' ('.$count_courses_lv1.')</strong>';
  58. } else {
  59. if (!empty($count_courses_lv1)) {
  60. $category_link = '<a href="'. api_get_self().'?action=display_courses&amp;category_code='.$category_code.'&amp;hidden_links='.$hidden_links.'">'.$category_name.' ('.$count_courses_lv1.') </a>';
  61. } else {
  62. $category_link = ''.$category_name.' ('.$count_courses_lv1.')';
  63. }
  64. }
  65. echo '<li>'.$category_link.'</li>';
  66. // level 2
  67. if (!empty($browse_course_categories[$category_code])) {
  68. foreach ($browse_course_categories[$category_code] as $subcategory1) {
  69. $subcategory1_name = $subcategory1['name'];
  70. $subcategory1_code = $subcategory1['code'];
  71. $count_courses_lv2 = $subcategory1['count_courses'];
  72. if ($code == $subcategory1_code) {
  73. $subcategory1_link = '<strong>'.$subcategory1_name.' ('.$count_courses_lv2.')</strong>';
  74. } else {
  75. $subcategory1_link = '<a href="'. api_get_self().'?action=display_courses&amp;category_code='.$subcategory1_code.'&amp;hidden_links='.$hidden_links.'">'.$subcategory1_name.' ('.$count_courses_lv2.') </a> ';
  76. }
  77. echo '<li style="margin-left:20px;">'.$subcategory1_link.'</li>';
  78. // level 3
  79. if (!empty($browse_course_categories[$subcategory1_code])) {
  80. foreach ($browse_course_categories[$subcategory1_code] as $subcategory2) {
  81. $subcategory2_name = $subcategory2['name'];
  82. $subcategory2_code = $subcategory2['code'];
  83. $count_courses_lv3 = $subcategory2['count_courses'];
  84. if ($code == $subcategory2_code) {
  85. $subcategory2_link = '<strong>'.$subcategory2_name.' ('.$count_courses_lv3.')</strong>';
  86. } else {
  87. $subcategory2_link = '<a href="'. api_get_self().'?action=display_courses&amp;category_code='.$subcategory2_code.'&amp;hidden_links='.$hidden_links.'">'.$subcategory2_name.'</a> ('.$count_courses_lv3.')';
  88. }
  89. echo '<li style="margin-left:40px;">'.$subcategory2_link.'</li>';
  90. // level 4
  91. if (!empty($browse_course_categories[$subcategory2_code])) {
  92. foreach ($browse_course_categories[$subcategory2_code] as $subcategory3) {
  93. $subcategory3_name = $subcategory3['name'];
  94. $subcategory3_code = $subcategory3['code'];
  95. $count_courses_lv4 = $subcategory3['count_courses'];
  96. if ($code == $subcategory3_code) {
  97. $subcategory3_link = '<strong>'.$subcategory3_name.' ('.$count_courses_lv4.')</strong>';
  98. } else {
  99. $subcategory3_link = '<a href="'. api_get_self().'?action=display_courses&amp;category_code='.$subcategory3_code.'&amp;hidden_links='.$hidden_links.'">'.$subcategory3_name.' ('.$count_courses_lv4.') </a>';
  100. }
  101. echo '<li style="margin-left:60px;">'.$subcategory3_link.'</li>';
  102. }
  103. }
  104. }
  105. }
  106. }
  107. }
  108. }
  109. }
  110. ?>
  111. </div>
  112. </div>
  113. <div class="col-md-9">
  114. <?php
  115. if (!empty($message)) { Display::display_confirmation_message($message, false); }
  116. if (!empty($error)) { Display::display_error_message($error, false); }
  117. if (!empty($content)) { echo $content; }
  118. if (!empty($search_term)) {
  119. echo "<p><strong>".get_lang('SearchResultsFor')." ".Security::remove_XSS($_POST['search_term'])."</strong><br />";
  120. }
  121. $ajax_url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=add_course_vote';
  122. if (!empty($browse_courses_in_category)) {
  123. foreach ($browse_courses_in_category as $course) {
  124. // if course is closed, don't show it.
  125. if ($course['visibility'] == COURSE_VISIBILITY_CLOSED || $course['visibility'] == COURSE_VISIBILITY_HIDDEN) {
  126. continue;
  127. }
  128. // course isn't closed
  129. $title = Text::cut($course['title'], 70);
  130. $tutor_name = $course['tutor'];
  131. $creation_date = substr($course['creation_date'],0,10);
  132. $count_connections = $course['count_connections'];
  133. $course_path = api_get_path(SYS_COURSE_PATH).$course['directory']; // course path
  134. if (file_exists($course_path.'/course-pic85x85.png')) {
  135. $course_medium_image = api_get_path(WEB_COURSE_PATH).$course['directory'].'/course-pic85x85.png'; // redimensioned image 85x85
  136. } else {
  137. $course_medium_image = api_get_path(WEB_IMG_PATH).'without_picture.png'; // without picture
  138. }
  139. $pointInfo = isset($course['point_info']) ? $course['point_info'] : null;
  140. $rating = Display::return_rating_system('star_'.$course['real_id'], $ajax_url.'&amp;course_id='.$course['real_id'], $pointInfo);
  141. echo '<div class="well_border"><div class="row">';
  142. echo '<div class="col-md-2">';
  143. echo '<div class="thumbnail">';
  144. if (api_get_setting('show_courses_descriptions_in_catalog') == 'true') {
  145. echo '<a class="ajax" href="'.api_get_path(WEB_CODE_PATH).'inc/ajax/course_home.ajax.php?a=show_course_information&amp;code='.$course['code'].'" rel="gb_page_center[778]">';
  146. echo '<img src="'.$course_medium_image.'" alt="" />';
  147. echo '</a>';
  148. } else {
  149. echo '<img src="'.$course_medium_image.'" alt="'.$title.'"/>';
  150. }
  151. echo '</div>';//thumb
  152. echo '</div>';
  153. echo '<div class="col-md-8">';
  154. $teachers = CourseManager::get_teacher_list_from_course_code_to_string($course['real_id']);
  155. $teachers = '<h5>'.$teachers.'</h5>';
  156. echo '<div class="categories-course-description"><h3>'.Text::cut($title, 60).'</h3>'.$teachers.$rating.'</div>';
  157. echo '<p>';
  158. // we display the icon to subscribe or the text already subscribed
  159. echo '<div class="btn-toolbar">';
  160. if (api_get_setting('show_courses_descriptions_in_catalog') == 'true') {
  161. echo '<a class="ajax btn btn-default" href="'.api_get_path(WEB_CODE_PATH).'inc/ajax/course_home.ajax.php?a=show_course_information&amp;code='.$course['code'].'" class="thickbox">'.get_lang('Description').'</a>';
  162. }
  163. // Get access type for course button ("enter" or/and "register")
  164. $access_type = CourseManager::get_access_link_by_user(api_get_user_id(), $course);
  165. // Go To Course button (only if admin, if course public or if student already subscribed)
  166. if ($access_type && in_array('enter', $access_type)) {
  167. echo ' <a class="btn btn-primary" href="'. api_get_course_url($course['code']).'">'.get_lang('GoToCourse').'</a>';
  168. }
  169. // Register button
  170. if ($access_type && in_array('register', $access_type)) {
  171. echo ' <a class="btn btn-primary" href="'. api_get_self().'?action=subscribe_course&amp;sec_token='.$stok.'&amp;subscribe_course='.$course['code'].'&amp;search_term='.$search_term.'&amp;category_code='.$code.'">'.get_lang('Subscribe').'</a>';
  172. }
  173. // If user is already subscribed to the course
  174. if (!api_is_anonymous() && in_array($course['code'], $user_coursecodes)) {
  175. if ($course['unsubscribe'] == UNSUBSCRIBE_ALLOWED) {
  176. echo ' <a class="btn btn-primary" href="'. api_get_self().'?action=unsubscribe&amp;sec_token='.$stok.'&amp;unsubscribe='.$course['code'].'&amp;search_term='.$search_term.'&amp;category_code='.$code.'">'.get_lang('Unsubscribe').'</a>';
  177. }
  178. echo '<br />';
  179. echo '<br />';
  180. echo Display::label(get_lang("AlreadyRegisteredToCourse"), "info");
  181. }
  182. echo '</div>';
  183. echo '</p>';
  184. echo '</div>';
  185. echo '<div class="col-md-2">';
  186. echo '<div class="course-block-popularity"><span>'.get_lang('ConnectionsLastMonth').'</span><div class="course-block-popularity-score">'.$count_connections.'</div></div>';
  187. echo '</div>';
  188. echo '</div></div>';
  189. }
  190. } else {
  191. if (!isset($_REQUEST['subscribe_user_with_password']) && !isset($_REQUEST['subscribe_course'])) {
  192. echo Display::display_warning_message(get_lang('ThereAreNoCoursesInThisCategory'));
  193. }
  194. }
  195. ?>
  196. </div>
  197. </div>