templates/Front/Exercise/show.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block back_to_dashboard %}
  3. {% include 'Front/Scholar/Partial/_back_to_dashboard.html.twig' %}
  4. {% endblock back_to_dashboard %}
  5. {% block title %}{{ lesson.name }} - {{ parent() }}{% endblock %}
  6. {% block stylesheets %}
  7. {{ parent() }}
  8. {{ encore_entry_link_tags('styles', 'core', 'core') }}
  9. {% endblock %}
  10. {% set currentRoute = app.request.attributes.get('_route') %}
  11. {% block before_navbar %}
  12. {% include 'Front/Scholar/Partial/_preview_manager_heager.html.twig' with {
  13. 'channel': channel,
  14. 'currentRoute': currentRoute,
  15. } %}
  16. {% endblock before_navbar %}
  17. {% block body_markup %}
  18. <body class="progression" style="font-family: 'Poppins';" id="page-training-lesson">{% endblock body_markup %}
  19. {% set next_informations = null %}
  20. {% if currentRoute == 'front_channel_exercise_show' %}
  21. {% set next_informations = get_next_informations_exercise_result(training, module, lesson, bestExerciseResult) %}
  22. {% endif %}
  23. {% block content %}
  24. {% if currentRoute in ['front_channel_exercise_show', 'manager_channel_module_lesson_exercise_show', 'manager_channel_training_module_lesson_exercise_show'] %}
  25. {% set trainingModuleLessons = module | get_lessons %}
  26. {% elseif currentRoute == 'manager_channel_lesson_exercise_show' %}
  27. {% set trainingModuleLessons = [lesson] %}
  28. {% endif %}
  29. {% include 'Front/Scholar/Partial/_menu_lessons_mobile.html.twig' with {
  30. 'current_exercise': current_exercise
  31. } %}
  32. <div class="container pt-md-5 pb-md-5 pt-3 pb-3 summary-lesson font-size-14">
  33. <div class="row">
  34. <div class="col-md-9 col-12">
  35. <h3 class="mb-4" style="font-size: 16px;">{{- lesson.name -}}</h3>
  36. <h2 class="v2-title-big">{{- current_exercise.name -}}</h2>
  37. {% if lesson.updatedAt is not null or lesson.createdAt is not null %}
  38. <div class="col-12 col-md-6 d-flex justify-content-between align-items-baseline p-0">
  39. <div>
  40. {% if current_exercise.updatedAt is not null %}
  41. {{- 'front.scholar.training.show.createdAt.label'|trans({
  42. '%date%': current_exercise.updatedAt|format_date('long', locale=app.request.locale),
  43. })|raw -}}
  44. {% else %}
  45. {{- 'front.scholar.training.show.createdAt.label'|trans({
  46. '%date%': current_exercise.createdAt|format_date('long', locale=app.request.locale),
  47. })|raw -}}
  48. {% endif %}
  49. </div>
  50. </div>
  51. {% endif %}
  52. <div class="pt-40px-mobile description-container">
  53. <div class="row">
  54. {% set stat = current_exercise.stat|default(stat|default(null)) %}
  55. {% set displayStatistics = false %}
  56. {% if stat is not empty and stat.hasResults %}
  57. {% set displayStatistics = true %}
  58. {% endif %}
  59. <div class="col-md-4 col-12 d-none">
  60. <div style="box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);padding:15px;border-radius: 6px;">
  61. <div class="font-weight-bold text-center mb-3">{{- 'exercise.stat.title.label'|trans -}}</div>
  62. <div class="d-flex justify-content-between mb-1">
  63. <div>{{ 'exercises.stats.entity.avgScore.label'|trans }} :</div>
  64. {% if displayStatistics %}
  65. <div class="little-grey">{{ stat.avgScore }} / 100</div>
  66. {% else %}
  67. <div class="little-grey">-</div>
  68. {% endif %}
  69. </div>
  70. <div class="d-flex justify-content-between mb-1">
  71. <div>{{ 'exercises.stats.entity.medianScore.label'|trans }} :</div>
  72. {% if displayStatistics %}
  73. <div class="little-grey">{{ stat.medianScore }} / 100</div>
  74. {% else %}
  75. <div class="little-grey">-</div>
  76. {% endif %}
  77. </div>
  78. <div class="d-flex justify-content-between mb-1">
  79. <div>{{ 'exercises.stats.entity.avgTime.label'|trans }} :</div>
  80. {% if displayStatistics %}
  81. <div class="little-grey">{{ stat.avgTime|timer_display }}</div>
  82. {% else %}
  83. <div class="little-grey">-</div>
  84. {% endif %}
  85. </div>
  86. <div class="d-flex justify-content-between mb-1">
  87. <div>{{ 'exercises.stats.entity.medianTime.label'|trans }} :</div>
  88. {% if displayStatistics %}
  89. <div class="little-grey">{{ stat.medianTime|timer_display }}</div>
  90. {% else %}
  91. <div class="little-grey">-</div>
  92. {% endif %}
  93. </div>
  94. <div class="d-flex justify-content-between mb-1">
  95. <div>{{ 'exercises.stats.entity.totalDone.label'|trans }} :</div>
  96. {% if displayStatistics %}
  97. <div class="little-grey">{{ stat.totalDone }}</div>
  98. {% else %}
  99. <div class="little-grey">0</div>
  100. {% endif %}
  101. </div>
  102. </div>
  103. </div>
  104. <div class="col-10 offset-1 exercise-statistics-description-separator d-block d-md-none"></div>
  105. <div class="col-12 col-lg-9 exercise-description-container">
  106. <div class="exercise-description-block">
  107. <div class="font-weight-bold mb-3">{{- 'Description de l\'exercice' -}}</div>
  108. <div class="description-style">{{- current_exercise.description -}}</div>
  109. </div>
  110. <div class="separation"></div>
  111. {% if bestExerciseResult is defined and bestExerciseResult is not null %}
  112. {% set exercise_failed = true %}
  113. {% if bestExerciseResult.isSuccessful %}
  114. {% set exercise_failed = false %}
  115. {% endif %}
  116. {% if bestExerciseResult.startedAt is not null %}
  117. {% set exerciseStartPath = null %}
  118. {% if currentRoute == 'front_channel_exercise_show' %}
  119. {% set exerciseStartPath = path('front_exercise_start', {'trainingId': training.id,'moduleId': module.id,'lessonId': lesson.id,'id': current_exercise.id}) %}
  120. {% elseif currentRoute == 'manager_channel_lesson_exercise_show' %}
  121. {% set exerciseStartPath = path('manager_channel_lesson_exercise_start', {'channelId': channel.id, 'lessonId': lesson.id, 'exerciseId': current_exercise.id}) %}
  122. {% elseif currentRoute == 'manager_channel_module_lesson_exercise_show' %}
  123. {% set exerciseStartPath = path('manager_channel_module_lesson_exercise_start', {'channelId': channel.id, 'moduleId': module.id, 'lessonId': lesson.id, 'exerciseId': current_exercise.id}) %}
  124. {% elseif currentRoute == 'manager_channel_training_module_lesson_exercise_show' %}
  125. {% set exerciseStartPath = path('manager_channel_training_module_lesson_exercise_start', {'channelId': channel.id, 'trainingId': training.id, 'moduleId': module.id, 'lessonId': lesson.id, 'exerciseId': current_exercise.id}) %}
  126. {% endif %}
  127. <div class="last-results-container">
  128. <div class="results-container">
  129. {% if exercise_failed is same as false %}
  130. <div class="date-score-container">
  131. <div class="answer-timer-container d-flex justify-content-center align-items-center score-container passed">
  132. <i class="fal fa-check icone"></i>
  133. <div class="score">
  134. Score : {{ bestExerciseResult.score / 10 }} / 10
  135. </div>
  136. </div>
  137. <p>Réalisé le {{ bestExerciseResult.startedAt|date('d/m/Y') }}.</p>
  138. </div>
  139. <p class="text-success font-weight-bold result-sentence">
  140. Vous avez obtenu un score suffisant à ce QCM pour poursuivre vers le
  141. cours suivant.
  142. </p>
  143. <div class="exercise-start-block">
  144. <a href="{{- exerciseStartPath -}}"
  145. class="btn-nellapp-v2 btn-begin-exercise">
  146. <i class="far fa-money-check-edit mark-icon"></i>
  147. Recommencer l'exercice
  148. </a>
  149. {% if currentRoute == 'front_channel_exercise_show' %}
  150. <a href="{{ path('front_exercise_solution', {
  151. 'id': current_exercise.id,
  152. 'trainingId': training.id,
  153. 'moduleId': module.id,
  154. 'lessonId': lesson.id,
  155. 'resultId': bestExerciseResult.id
  156. }) }}"
  157. class="btn-nellapp-v2"
  158. >
  159. Voir mon résultat
  160. </a>
  161. {% endif %}
  162. </div>
  163. {% else %}
  164. <div class="date-score-container justify-content-center justify-content-md-start">
  165. <div class="answer-timer-container d-flex justify-content-center align-items-center score-container not-passed">
  166. <i class="fal fa-times icone"></i>
  167. <div class="score">
  168. Score : {{ bestExerciseResult.score / 10 }} / 10
  169. </div>
  170. </div>
  171. <p>Réalisé le {{ bestExerciseResult.startedAt|date('d/m/Y') }}.</p>
  172. </div>
  173. <div class="result-advice">
  174. <p class="text-danger font-weight-bold result-sentence">Vous n'avez
  175. pas
  176. obtenu un score suffisant à ce QCM pour
  177. poursuivre vers le cours suivant.</p>
  178. <p class="advice">Veuillez retravailler le cours et repasser le
  179. QCM.</p>
  180. </div>
  181. <div class="exercise-start-block">
  182. <a href="{{- exerciseStartPath -}}"
  183. class="btn-nellapp-v2 btn-begin-exercise">
  184. <i class="far fa-money-check-edit mark-icon"></i>
  185. Recommencer l'exercice
  186. </a>
  187. {% if currentRoute == 'front_channel_exercise_show' %}
  188. <a href="{{ path('front_exercise_solution', {
  189. 'id': current_exercise.id,
  190. 'trainingId': training.id,
  191. 'moduleId': module.id,
  192. 'lessonId': lesson.id,
  193. 'resultId': bestExerciseResult.id
  194. }) }}"
  195. class="btn-nellapp-v2"
  196. >
  197. Voir mon résultat
  198. </a>
  199. {% endif %}
  200. </div>
  201. {% endif %}
  202. </div>
  203. </div>
  204. {% endif %}
  205. {% else %}
  206. <div class="exercise-start-block with-separation">
  207. {% set exerciseStartPath = null %}
  208. {% if currentRoute == 'front_channel_exercise_show' %}
  209. {% set exerciseStartPath = path('front_exercise_start', {'trainingId': training.id,'moduleId': module.id,'lessonId': lesson.id,'id': current_exercise.id}) %}
  210. {% elseif currentRoute == 'manager_channel_lesson_exercise_show' %}
  211. {% set exerciseStartPath = path('manager_channel_lesson_exercise_start', {'channelId': channel.id, 'lessonId': lesson.id, 'exerciseId': current_exercise.id}) %}
  212. {% elseif currentRoute == 'manager_channel_module_lesson_exercise_show' %}
  213. {% set exerciseStartPath = path('manager_channel_module_lesson_exercise_start', {'channelId': channel.id, 'moduleId': module.id, 'lessonId': lesson.id, 'exerciseId': current_exercise.id}) %}
  214. {% elseif currentRoute == 'manager_channel_training_module_lesson_exercise_show' %}
  215. {% set exerciseStartPath = path('manager_channel_training_module_lesson_exercise_start', {'channelId': channel.id, 'trainingId': training.id, 'moduleId': module.id, 'lessonId': lesson.id, 'exerciseId': current_exercise.id}) %}
  216. {% endif %}
  217. <a href="{{- exerciseStartPath -}}" class="btn-nellapp-v2 btn-begin-exercise">
  218. <i class="far fa-money-check-edit mark-icon"></i>
  219. Commencer l'exercice
  220. </a>
  221. </div>
  222. {% endif %}
  223. </div>
  224. </div>
  225. {% if currentRoute == 'front_channel_exercise_show' %}
  226. {% include 'Front/Scholar/Partial/_scholar_navigation_previous_after.html.twig' with {
  227. next_informations: next_informations,
  228. previous_informations: get_previous_informations_exercise(training, module, lesson, current_exercise),
  229. } %}
  230. {% endif %}
  231. </div>
  232. </div>
  233. <div class="col-3 d-none d-md-block">
  234. {% include 'Front/Scholar/Partial/menu_lessons.html.twig' with {
  235. 'current_exercise': current_exercise
  236. } %}
  237. </div>
  238. </div>
  239. </div>
  240. {{ parent() }}
  241. {% endblock content %}
  242. {% block inner_content %}
  243. {{ parent() }}
  244. {% endblock inner_content %}
  245. {% block body %}
  246. {{ parent() }}
  247. {% endblock %}