templates/Front/Scholar/Partial/menu_lessons.html.twig line 1

Open in your IDE?
  1. {% set routes_allowed = [
  2. 'front_channel_lesson_show',
  3. 'front_channel_lesson_show_review',
  4. 'manager_channel_module_lesson_show',
  5. 'manager_channel_training_module_lesson_show',
  6. 'front_channel_chapter_show',
  7. 'front_channel_exercise_show',
  8. 'manager_channel_module_chapter_show',
  9. 'manager_channel_training_module_chapter_show'
  10. ] %}
  11. {% set lesson_routes = [
  12. 'front_channel_lesson_show',
  13. 'manager_channel_lesson_show',
  14. 'manager_channel_module_lesson_show',
  15. 'manager_channel_training_module_lesson_show',
  16. ] %}
  17. {% set lesson_review_routes = [
  18. 'front_channel_lesson_show_review',
  19. ] %}
  20. {% set practical_case_routes = [
  21. 'front_channel_practical_case_show',
  22. ] %}
  23. {% set sub_routes_allowed = [
  24. 'front_channel_lesson_show',
  25. 'front_channel_lesson_show_review',
  26. 'manager_channel_training_module_lesson_show',
  27. 'front_channel_chapter_show',
  28. 'manager_channel_training_module_chapter_show',
  29. 'front_channel_exercise_show'
  30. ] %}
  31. {% set front_routes = [
  32. 'front_channel_lesson_show',
  33. 'front_channel_chapter_show',
  34. 'front_channel_exercise_show',
  35. 'front_channel_lesson_show_review',
  36. 'front_channel_exercise_show'
  37. ] %}
  38. {% if currentRoute in routes_allowed %}
  39. <div class="dropdown-div w-100">
  40. <div class="dropdown-item-to-hover font-weight-bold d-flex justify-content-between align-items-center module-menu">
  41. <div>Module : {{ module.name }}</div>
  42. {% if currentRoute in sub_routes_allowed %}
  43. <i class="fas fa-chevron-down"></i>
  44. {% endif %}
  45. </div>
  46. {% if currentRoute in sub_routes_allowed %}
  47. <div class="dropdown-content">
  48. {% set trainingModules = training | get_modules %}
  49. {% for trainingModule in trainingModules %}
  50. {% set moduleLink = null %}
  51. {% if currentRoute in front_routes %}
  52. {% set moduleLink = path('front_channel_module_show_redirection', {'trainingId': training.id, 'moduleId': trainingModule.id}) %}
  53. {% elseif currentRoute == 'manager_channel_training_module_lesson_show' or currentRoute == 'manager_channel_training_module_chapter_show' %}
  54. {% set moduleLink = path('manager_channel_training_module_show', {'channelId': channel.id, 'trainingId': training.id, 'moduleId': trainingModule.id}) %}
  55. {% endif %}
  56. <a class="dropdown-content-item font-weight-bold w-100" href="{{- moduleLink -}}"
  57. style="color: #212529;{% if loop.first %}padding: 8px 10px 4px 10px;{% else %}padding: 4px 10px;{% endif %}{% if trainingModule.id == module.id %}color: #4050B5;background-color: rgba(64, 80, 181, 0.11);{% endif %}">
  58. - {{ trainingModule.name }}
  59. </a>
  60. {% endfor %}
  61. </div>
  62. {% endif %}
  63. </div>
  64. {% endif %}
  65. <div class="accordion-nellapp accordion-style">
  66. {% for trainingModuleLesson in trainingModuleLessons %}
  67. {% set chapters = getChapters(trainingModuleLesson) %}
  68. {% set exercises = getExercises(trainingModuleLesson) %}
  69. {% set practicalCase = trainingModuleLesson.getActivePracticalCase %}
  70. {% set practicalCaseArchiveds = get_archived_practical_cases(trainingModuleLesson, app.user) %}
  71. {% set lessonReviewActivated = trainingModuleLesson.lessonReviewActivated %}
  72. {% if training is not defined or training is null %}
  73. {% set lessonBlockedStatus = constant('App\\Enum\\ScholarLessonBlockedReasonEnum::NOT_BLOCKED') %}
  74. {% else %}
  75. {% set lessonBlockedStatus = get_lesson_blocked_reason(training, module, trainingModuleLesson) %}
  76. {% endif %}
  77. {% set front_access = true %}
  78. {% if lessonBlockedStatus is not same as constant('App\\Enum\\ScholarLessonBlockedReasonEnum::NOT_BLOCKED') %}
  79. {% set front_access = false %}
  80. {% endif %}
  81. {% set lesson_progression = get_lesson_progression(trainingModuleLesson, module, training, app.user) %}
  82. <div id="heading{{ trainingModuleLesson.id }}" class="accordion-nellapp-header"
  83. {% if not loop.first %}style="border-top: 1px solid #dee2e6"{% endif %}>
  84. <h5 class="mb-0">
  85. <button class="btn-nellapp-accordion btn-nellapp-accordion-style"
  86. data-toggle="collapse"
  87. data-target="#collapse{{- trainingModuleLesson.id -}}"
  88. aria-expanded="{% if trainingModuleLesson.id == lesson.id %}true{% else %}false{% endif %}"
  89. aria-controls="collapse{{- trainingModuleLesson.id -}}"
  90. >
  91. <div class="d-flex justify-content-between align-items-center w-100 line-style">
  92. <div class="progress-circle">
  93. {% set lesson_progression_total = currentRoute in front_routes ? (lesson_progression ? lesson_progression.progression : 0) : 0 %}
  94. <div class="c100 {{ 'p' ~ lesson_progression_total }} small green mr-3 me-3 font-size-20">
  95. <div class="slice">
  96. <div class="bar"></div>
  97. <div class="fill"></div>
  98. </div>
  99. </div>
  100. {% if lesson_progression_total == 100 %}
  101. <i class="fas fa-check check-style"></i>
  102. {% endif %}
  103. </div>
  104. <div class="d-flex justify-content-between align-items-center w-100">
  105. <div class="lesson-name"
  106. {% if lessonBlockedStatus is same as constant('App\\Enum\\ScholarLessonBlockedReasonEnum::LESSON_BLOCKED') %}title="Pour débloquer ce cours, réalisez les QCM et Cas pratiques précédents"{% endif %}
  107. >
  108. <span>
  109. {{- trainingModuleLesson.name -}}
  110. </span>
  111. {% if lessonBlockedStatus is same as constant('App\\Enum\\ScholarLessonBlockedReasonEnum::LESSON_BLOCKED') %}
  112. <i class="fad fa-exclamation-circle"></i>
  113. {% endif %}
  114. </div>
  115. <img class="add-style" src="{{ asset('build/common/icon-add.svg', 'common') }}"
  116. alt="Open courses module"/>
  117. </div>
  118. </div>
  119. </button>
  120. </h5>
  121. </div>
  122. <div id="collapse{{ trainingModuleLesson.id }}"
  123. class="collapse {% if trainingModuleLesson.id == lesson.id %}show{% endif %}"
  124. style="border-top: 1px solid #dee2e6"
  125. >
  126. <div class="card-body padding-075">
  127. <ul class="lesson-list p-0 m-0">
  128. <li class="progress-list">
  129. <div class="d-flex justify-content-center align-items-center ptb-5px w-100">
  130. <div class="circle-icon-done{% if currentRoute in front_routes and lesson_progression ? lesson_progression.done is same as true : false %} success{% endif %}">
  131. </div>
  132. {% set route_cases = [
  133. front_routes,
  134. ['manager_channel_lesson_show', 'manager_channel_chapter_show', 'manager_channel_lesson_exercise_show', 'manager_channel_practical_case_show', 'manager_channel_chapter_show_message'],
  135. ['manager_channel_module_lesson_show', 'manager_channel_module_chapter_show', 'manager_channel_module_lesson_exercise_show', 'manager_channel_module_practical_case_show'],
  136. ['manager_channel_training_module_lesson_show', 'manager_channel_training_module_chapter_show', 'manager_channel_training_module_lesson_exercise_show', 'manager_channel_training_module_practical_case_show']
  137. ] %}
  138. {% set summaryPath = null %}
  139. {% if front_access is same as false %}
  140. {% set summaryPath = null %}
  141. {% elseif currentRoute in route_cases[0] %}
  142. {% set summaryPath = path('front_channel_lesson_show', {'trainingId': training.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id}) %}
  143. {% elseif currentRoute in route_cases[1] %}
  144. {% set summaryPath = path('manager_channel_lesson_show', {'channelId': channel.id, 'lessonId': trainingModuleLesson.id}) %}
  145. {% elseif currentRoute in route_cases[2] %}
  146. {% set summaryPath = path('manager_channel_module_lesson_show', {'channelId': channel.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id}) %}
  147. {% elseif currentRoute in route_cases[3] %}
  148. {% set summaryPath = path('manager_channel_training_module_lesson_show', {'channelId': channel.id, 'trainingId': training.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id}) %}
  149. {% endif %}
  150. {{ scholar_navigation_link('Sommaire', currentRoute in lesson_routes and trainingModuleLesson.id == lesson.id, summaryPath) }}
  151. </div>
  152. </li>
  153. {% for chapter in chapters %}
  154. <li class="progress-list">
  155. <div class="d-flex justify-content-center align-items-center ptb-5px w-100">
  156. <div class="circle-icon-done{% if currentRoute in front_routes and lesson_progression ? lesson_progression|has_chapter_done(chapter) is same as true : false %} success{% endif %}">
  157. </div>
  158. {% set chapterPath = null %}
  159. {% if front_access is same as false %}
  160. {% set chapterPath = null %}
  161. {% elseif currentRoute in route_cases[0] %}
  162. {% set chapterPath = path('front_channel_chapter_show', {'trainingId': training.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id, 'chapterId': chapter.id}) %}
  163. {% elseif currentRoute in route_cases[1] %}
  164. {% set chapterPath = path('manager_channel_chapter_show', {'channelId': channel.id, 'lessonId': trainingModuleLesson.id, 'chapterId': chapter.id}) %}
  165. {% elseif currentRoute in route_cases[2] %}
  166. {% set chapterPath = path('manager_channel_module_chapter_show', {'channelId': channel.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id, 'chapterId': chapter.id}) %}
  167. {% elseif currentRoute in route_cases[3] %}
  168. {% set chapterPath = path('manager_channel_training_module_chapter_show', {'channelId': channel.id, 'trainingId': training.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id, 'chapterId': chapter.id}) %}
  169. {% endif %}
  170. {{ scholar_navigation_link(chapter.name, current_chapter is defined and current_chapter.id == chapter.id, chapterPath) }}
  171. </div>
  172. </li>
  173. {% endfor %}
  174. {% for exercise in exercises %}
  175. <li class="progress-list">
  176. <div class="d-flex justify-content-center align-items-center ptb-5px w-100">
  177. {% set exercise_done_status = exercise|get_exercise_done_status(app.user) %}
  178. <div class="circle-icon-done{% if exercise_done_status is same as true %} success{% elseif exercise_done_status is same as false %} failed{% endif %}">
  179. </div>
  180. {% set exercisePath = null %}
  181. {% if front_access is same as false %}
  182. {% set exercisePath = null %}
  183. {% elseif currentRoute in route_cases[0] %}
  184. {% set exercisePath = path('front_channel_exercise_show', {'trainingId': training.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id, 'exerciseId': exercise.id}) %}
  185. {% elseif currentRoute in route_cases[1] %}
  186. {% set exercisePath = path('manager_channel_lesson_exercise_show', {'channelId': channel.id, 'lessonId': trainingModuleLesson.id, 'exerciseId': exercise.id}) %}
  187. {% elseif currentRoute in route_cases[2] %}
  188. {% set exercisePath = path('manager_channel_module_lesson_exercise_show', {'channelId': channel.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id, 'exerciseId': exercise.id}) %}
  189. {% elseif currentRoute in route_cases[3] %}
  190. {% set exercisePath = path('manager_channel_training_module_lesson_exercise_show', {'channelId': channel.id, 'trainingId': training.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id, 'exerciseId': exercise.id}) %}
  191. {% endif %}
  192. {{ scholar_navigation_link(exercise.name, current_exercise is defined and exercise.id == current_exercise.id, exercisePath) }}
  193. </div>
  194. </li>
  195. {% endfor %}
  196. {% if practicalCase is not null %}
  197. <li class="progress-list">
  198. <div class="d-flex justify-content-center align-items-center ptb-5px w-100">
  199. <div class="circle-icon-done{% if practicalCase is practical_case_done(app.user) %} success{% elseif practicalCase is practical_case_failed(app.user) %} failed{% endif %}">
  200. </div>
  201. {% set practicalCasePath = null %}
  202. {% if front_access is same as false %}
  203. {% set practicalCasePath = null %}
  204. {% elseif currentRoute in route_cases[0] %}
  205. {% set practicalCasePath = path('front_channel_practical_case_show', {'trainingId': training.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id, 'practicalCaseId': practicalCase.id}) %}
  206. {% elseif currentRoute in route_cases[1] %}
  207. {% set practicalCasePath = path('manager_channel_practical_case_show', {'channelId': channel.id, 'lessonId': trainingModuleLesson.id}) %}
  208. {% elseif currentRoute in route_cases[2] %}
  209. {% set practicalCasePath = path('manager_channel_module_practical_case_show', {'channelId': channel.id, 'lessonId': trainingModuleLesson.id, 'moduleId': module.id}) %}
  210. {% elseif currentRoute in route_cases[3] %}
  211. {% set practicalCasePath = path('manager_channel_training_module_practical_case_show', {'channelId': channel.id, 'lessonId': trainingModuleLesson.id, 'moduleId': module.id, 'trainingId': training.id}) %}
  212. {% endif %}
  213. {{ scholar_navigation_link(practicalCase.title, currentRoute in practical_case_routes and trainingModuleLesson.id == lesson.id, practicalCasePath) }}
  214. </div>
  215. </li>
  216. {% endif %}
  217. {% if practicalCaseArchiveds is defined and practicalCaseArchiveds is not empty %}
  218. {% for practicalCaseArchived in practicalCaseArchiveds %}
  219. <li class="progress-list">
  220. <div class="d-flex justify-content-center align-items-center ptb-5px w-100">
  221. <div class="circle-icon-done">
  222. <div class="badge badge-info">{{ 'practical_case.archived.label' | trans }}</div>
  223. </div>
  224. {% set practicalCasePath = null %}
  225. {% if front_access is same as false %}
  226. {% set practicalCasePath = null %}
  227. {% elseif currentRoute in route_cases[0] %}
  228. {% set practicalCasePath = path('front_channel_practical_case_show', {'trainingId': training.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id, 'practicalCaseId': practicalCaseArchived.getPracticalCase.id}) %}
  229. {% elseif currentRoute in route_cases[1] %}
  230. {% set practicalCasePath = path('manager_channel_practical_case_show', {'channelId': channel.id, 'lessonId': trainingModuleLesson.id}) %}
  231. {% elseif currentRoute in route_cases[2] %}
  232. {% set practicalCasePath = path('manager_channel_module_practical_case_show', {'channelId': channel.id, 'lessonId': trainingModuleLesson.id, 'moduleId': module.id}) %}
  233. {% elseif currentRoute in route_cases[3] %}
  234. {% set practicalCasePath = path('manager_channel_training_module_practical_case_show', {'channelId': channel.id, 'lessonId': trainingModuleLesson.id, 'moduleId': module.id, 'trainingId': training.id}) %}
  235. {% endif %}
  236. {{ scholar_navigation_link(practicalCaseArchived.getPracticalCase.title, currentRoute in practical_case_routes and trainingModuleLesson.id == lesson.id, practicalCasePath) }}
  237. </div>
  238. </li>
  239. {% endfor %}
  240. {% endif %}
  241. {% if lessonReviewActivated %}
  242. <li class="progress-list">
  243. <div class="d-flex justify-content-center align-items-center ptb-5px w-100">
  244. {% set path = null %}
  245. {% if training is defined and training is not null and app.user is not null %}
  246. {% if is_granted('FRONT_ACCESS_REVIEW', {'training': training, 'module': module, 'lesson': trainingModuleLesson}) is same as false %}
  247. {% set path = null %}
  248. {% else %}
  249. {% set path = path('front_channel_lesson_show_review', {'trainingId': training.id, 'moduleId': module.id, 'lessonId': trainingModuleLesson.id}) %}
  250. {% endif %}
  251. {% endif %}
  252. <div class="circle-icon-done review{% if path is null %} disabled{% endif %}">
  253. </div>
  254. {{ scholar_navigation_link('lessons.entity.lessonReviewActivated.menu_front_label' | trans, currentRoute in lesson_review_routes and trainingModuleLesson.id == lesson.id, path) }}
  255. </div>
  256. </li>
  257. {% endif %}
  258. </ul>
  259. </div>
  260. </div>
  261. {% endfor %}
  262. </div>