templates/base.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html>
  2. <html lang="fr" class="h-100">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>
  6. {% block title %}
  7. ComPass
  8. {% endblock %}
  9. </title>
  10. {# Run `composer require symfony/webpack-encore-bundle` to start using Symfony UX #}
  11. {% if app.session.get('parametre') is not null %}
  12. <link rel="icon" href="{{ app.session.get('parametre').url }}/favicon.ico?" />
  13. {% endif %}
  14. {% block stylesheets %}
  15. {{ encore_entry_link_tags('app') }}
  16. {% endblock %}
  17. {% block javascripts %}
  18. {{ encore_entry_script_tags('app') }}
  19. {% endblock %}
  20. </head>
  21. {% if app.session.get('parametre') is not null %}
  22. {% set parametre = app.session.get('parametre') %}
  23. {% set darken = "color-mix(in srgb," ~ parametre.colorprimary ~ ", black 20%)" %}
  24. {% set darkenDarken = "color-mix(in srgb," ~ parametre.colorprimary ~ ", black 40%)" %}
  25. {% set lighten = "color-mix(in srgb," ~ parametre.colorprimary ~ ", white 20%)" %}
  26. {% set lightenLighten = "color-mix(in srgb," ~ parametre.colorprimary ~ ", white 40%)" %}
  27. {% set darkenSecondary = "color-mix(in srgb," ~ parametre.colorsecondary ~ ", black 20%)" %}
  28. {% set darkenDarkenSecondary = "color-mix(in srgb," ~ parametre.colorsecondary ~ ", black 40%)" %}
  29. {% set lightenSecondary = "color-mix(in srgb," ~ parametre.colorsecondary ~ ", white 20%)" %}
  30. {% set lightenLightenSecondary = "color-mix(in srgb," ~ parametre.colorsecondary ~ ", white 40%)" %}
  31. <style>
  32. /* ------- H -------- */
  33. h1 {
  34. color: {{ parametre.colorprimary }};
  35. }
  36. h2 {
  37. color: {{ parametre.colorsecondary }};
  38. }
  39. /* ------- Loader -------- */
  40. #loader:before {
  41. border-top-color: {{ parametre.colorsecondary }};
  42. }
  43. #loader:after {
  44. border-top-color: {{ parametre.colorprimary }};
  45. }
  46. /* ------- Placeholder Image -------- */
  47. .placeholderLink:hover {
  48. color: {{ parametre.colorprimary }} !important;
  49. }
  50. /* ------- NavBarre -------- */
  51. .nav-link-menu:hover {
  52. background-color: {{ parametre.colorprimary }};
  53. }
  54. .btn-nav-active {
  55. background-color: {{ parametre.colorprimary }};
  56. }
  57. /* ------- ProgressBar -------- */
  58. .progress,
  59. .progress-stacked {
  60. background-color: {{ parametre.colorprimary }};
  61. }
  62. .progress-bar {
  63. background-color: {{ parametre.colorprimary }};
  64. }
  65. /* ------- Background -------- */
  66. .bg-primary {
  67. background-color: {{ parametre.colorprimary }} !important;
  68. }
  69. .bg-secondary {
  70. background-color: {{ parametre.colorsecondary }} !important;
  71. }
  72. /* ------- Text -------- */
  73. .text-primary {
  74. color: {{ parametre.colorprimary }} !important;
  75. }
  76. .text-secondary {
  77. color: {{ parametre.colorsecondary }} !important;
  78. }
  79. /* ------- DataTable -------- */
  80. .active>.page-link {
  81. background-color: {{ parametre.colorprimary }};
  82. border-color: {{ darken }};
  83. }
  84. .page-link {
  85. color: {{ parametre.colorprimary }};
  86. }
  87. .page-link:hover {
  88. color: {{ darken }};
  89. }
  90. /* ------- Bootstrap -------- */
  91. .dropdown-item:active {
  92. background-color: {{ parametre.colorprimary }};
  93. border-color: {{ parametre.colorprimary }};
  94. }
  95. .form-check-input:checked {
  96. background-color: {{ parametre.colorprimary }};
  97. border-color: {{ parametre.colorprimary }};
  98. }
  99. /* ------- Buttons -------- */
  100. .btn-primary {
  101. color: #FFFFFF;
  102. background-color: {{ parametre.colorprimary }};
  103. border-color: {{ darken }};
  104. }
  105. .btn-primary:hover {
  106. color: #FFFFFF;
  107. background-color: {{ darken }};
  108. border-color: {{ darkenDarken }};
  109. }
  110. .btn-primary.disabled,
  111. .btn-primary:disabled {
  112. color: #FFFFFF;
  113. background-color: {{ parametre.colorprimary }};
  114. border-color: {{ darken }};
  115. }
  116. .btn-primary:not(:disabled):not(.disabled):active,
  117. .btn-primary:not(:disabled):not(.disabled).active,
  118. .show>.btn-primary.dropdown-toggle {
  119. color: #FFFFFF;
  120. background-color: {{ darken }};
  121. border-color: {{ darkenDarken }};
  122. }
  123. .btn-outline-primary {
  124. color: {{ parametre.colorprimary }};
  125. background-color: transparent;
  126. background-image: none;
  127. border-color: {{ parametre.colorprimary }};
  128. }
  129. .btn-outline-primary:hover {
  130. color: #FFFFFF;
  131. background-color: {{ darken }};
  132. border-color: {{ parametre.colorprimary }};
  133. }
  134. .btn-outline-primary.disabled,
  135. .btn-outline-primary:disabled {
  136. color: {{ parametre.colorprimary }};
  137. background-color: transparent
  138. }
  139. .btn-outline-primary:not(:disabled):not(.disabled):active,
  140. .btn-outline-primary:not(:disabled):not(.disabled).active,
  141. .show>.btn-outline-primary.dropdown-toggle {
  142. color: #FFFFFF;
  143. background-color: {{ darken }};
  144. border-color: {{ parametre.colorprimary }};
  145. }
  146. .btn-secondary {
  147. color: #FFFFFF;
  148. background-color: {{ parametre.colorsecondary }};
  149. border-color: {{ darkenSecondary }};
  150. }
  151. .btn-secondary:hover {
  152. color: #FFFFFF;
  153. background-color: {{ darkenSecondary }};
  154. border-color: {{ darkenDarkenSecondary }};
  155. }
  156. .btn-secondary.disabled,
  157. .btn-secondary:disabled {
  158. color: #FFFFFF;
  159. background-color: {{ parametre.colorsecondary }};
  160. border-color: {{ darkenSecondary }};
  161. }
  162. .btn-secondary:not(:disabled):not(.disabled):active,
  163. .btn-secondary:not(:disabled):not(.disabled).active,
  164. .show>.btn-secondary.dropdown-toggle {
  165. color: #FFFFFF;
  166. background-color: {{ darkenSecondary }};
  167. border-color: {{ darkenDarkenSecondary }};
  168. }
  169. .btn-outline-secondary {
  170. color: {{ parametre.colorsecondary }};
  171. background-color: transparent;
  172. background-image: none;
  173. border-color: {{ parametre.colorsecondary }};
  174. }
  175. .btn-outline-secondary:hover {
  176. color: #FFFFFF;
  177. background-color: {{ darkenSecondary }};
  178. border-color: {{ parametre.colorsecondary }};
  179. }
  180. .btn-outline-secondary.disabled,
  181. .btn-outline-secondary:disabled {
  182. color: {{ parametre.colorsecondary }};
  183. background-color: transparent
  184. }
  185. .btn-outline-secondary:not(:disabled):not(.disabled):active,
  186. .btn-outline-secondary:not(:disabled):not(.disabled).active,
  187. .show>.btn-outline-secondary.dropdown-toggle {
  188. color: #FFFFFF;
  189. background-color: {{ darkenSecondary }};
  190. border-color: {{ parametre.colorsecondary }};
  191. }
  192. </style>
  193. {% endif %}
  194. {% if app.user %}
  195. {% if app.session.get('vueAdministrateur') %}
  196. {% set vueEspace = 'Administrateur' %}
  197. {% else %}
  198. {% if app.session.get('typeUtilisateur') == 'Administrateur' %}
  199. {% set vueEspace = 'Enseignant' %}
  200. {% else %}
  201. {% set vueEspace = app.session.get('typeUtilisateur') %}
  202. {% endif %}
  203. {% endif %}
  204. {% endif %}
  205. <body class="text-center d-flex flex-column h-100">
  206. <header style="z-index: 4;">
  207. <nav class="navbar sticky-top navbar-expand-lg bg-light shadow">
  208. <div class="container-fluid">
  209. {% if app.user %}
  210. {% set path = path('app_eclac_secure-index') %}
  211. {% else %}
  212. {% set path = path('app_public_index') %}
  213. {% endif %}
  214. <a class="navbar-brand" href="{{ path }}">
  215. <div class="flex row col-md-6">
  216. <div class="col-md-4 mx-auto my-auto ms-0 p-0">
  217. {% set parametreLogo = NULL %}
  218. {% if app.session.get('parametre') is not null %}
  219. {% set parametreLogo = app.session.get('parametre').logonavbarre %}
  220. {% endif %}
  221. <img src="{{ asset('build/images/' ~ parametreLogo) }}" alt="Logo" style="max-height: 65px;" class="mx-2"/>
  222. </div>
  223. </div>
  224. </a>
  225. {% if eleve is defined %}
  226. <h1>{{ eleve.nomeleve }} {{ eleve.prenomeleve }} - <u>{{ 'espace_eleve'|trans({}, 'libelles')|capitalize|raw }}</u></h1>
  227. {% else %}
  228. <h1>
  229. {% if enseignant is defined %}
  230. {{ enseignant.nomenseignant }} {{ enseignant.prenomenseignant }} -
  231. {% endif %}
  232. {% if vueEspace is defined %}
  233. {% set transVueEspace = 'espace_' ~ vueEspace|lower %}
  234. <u>{{ transVueEspace|trans({}, 'libelles')|capitalize|raw }}</u>
  235. {% endif %}
  236. </h1>
  237. {% endif %}
  238. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
  239. <div class="collapse navbar-collapse" id="navbarNav">
  240. <ul class="navbar-nav me-auto mb-2 mb-lg-0">
  241. {% if contents is defined %}
  242. {% for content in contents %}
  243. <li class="col-md-4 nav-item m-1 rounded-3 shadow">
  244. <a class="{{ content.class }} btn btn-default300 btn-nav" aria-current="{{ content.current }}" href="{{ content.href }}">{{ content.nom|raw }}</a>
  245. </li>
  246. {% endfor %}
  247. {% endif %}
  248. </ul>
  249. {% if app.session.get('modeMaintenance') == true and app.session.get('droitadmin') == true %}
  250. <span class="text-danger fs-3 me-1">{{ 'mode_maintenance_actif'|trans({}, 'libelles')|capitalize|raw }}</span>
  251. &nbsp;
  252. <i class="bi bi-exclamation-triangle-fill text-danger fs-2 me-5" data-toggle="tooltip" title="{{ 'mode_maintenance_actif'|trans({}, 'libelles')|capitalize|raw }}"></i>
  253. {% endif %}
  254. {# Drop down #}
  255. <ul class="navbar-nav d-flex flex-row">
  256. <li class="nav-item dropdown nav-item mx-auto">
  257. {% if app.session.get('utilisateurconnecte') %}
  258. {% if app.session.get('vueAdministrateur') %}
  259. {% set vueEspace = 'Administrateur' %}
  260. {% else %}
  261. {% if app.session.get('typeUtilisateur') == 'Administrateur' %}
  262. {% set vueEspace = 'Enseignant' %}
  263. {% else %}
  264. {% set vueEspace = app.session.get('typeUtilisateur') %}
  265. {% endif %}
  266. {% endif %}
  267. <a class="nav-link dropdown-toggle show" href="" data-bs-toggle="dropdown" aria-expanded="true">{{ app.session.get('utilisateur') }}&nbsp;<i class="bi bi-person-fill"></i></a>
  268. <ul class="dropdown-menu hide" data-bs-popper="static">
  269. {% if app.session.get('typeUtilisateur') == 'Élève' %}
  270. <li>
  271. <a class="dropdown-item" href="{{ path('app_ecleleve_index') }}">{{ 'mon_espace'|trans({}, 'libelles')|capitalize|raw }}</a>
  272. </li>
  273. {% else %}
  274. <li>
  275. <a class="dropdown-item" href="{{ path('app_eclenseignant_index') }}">{{ 'mon_espace'|trans({}, 'libelles')|capitalize|raw }}</a>
  276. </li>
  277. {% if app.session.get('droitadmin') == true %}
  278. {% if app.session.get('vueAdministrateur') %}
  279. <li>
  280. <a class="dropdown-item" href="{{ path('app_eclac_choix-espace') }}" data-turbo="false">{{ 'view.administrator.disabled'|trans({}, 'messages')|capitalize|raw }}</a>
  281. </li>
  282. <li>
  283. <a class="dropdown-item" href="{{ path('app_eclac_parametre') }}" data-turbo="false">{{ 'parametres'|trans({}, 'libelles')|capitalize|raw }}</a>
  284. </li>
  285. {% else %}
  286. <li>
  287. <a class="dropdown-item" href="{{ path('app_eclac_choix-espace') }}" data-turbo="false">{{ 'view.administrator.enabled'|trans({}, 'messages')|capitalize|raw }}</a>
  288. </li>
  289. {% endif %}
  290. {% if auth_method == "locale" %}
  291. <li>
  292. <a class="dropdown-item" href="{{ path('app_public_logout') }}" data-turbo="false">{{ 'logout'|trans({}, 'libelles')|capitalize|raw }}</a>
  293. </li>
  294. {% endif %}
  295. {% else %}
  296. {% set test = app.session.get('typeUtilisateur') %}
  297. {{ test }}
  298. {% endif %}
  299. {% endif %}
  300. </ul>
  301. {% else %}
  302. <a class="col-md-12 mx-auto btn btn-text text-dark" href="{{ path('app_eclac_choix-espace') }}" data-turbo="false"><i class="bi bi-person-fill"></i>&nbsp;{{ 'se_connecter'|trans({}, 'libelles')|capitalize|raw }}</a>
  303. {% endif %}
  304. </li>
  305. </ul>
  306. </div>
  307. </div>
  308. </nav>
  309. </header>
  310. {# Nav barres #}
  311. {% if app.session.get('afficheNavbarre') != false and (app.session.get('modeMaintenance') == false or app.session.get('droitadmin') == true) %}
  312. <div class="container-fluid col-md-12 p-0 m-0" style="z-index: 1;">
  313. {% set vueEspace = '' %}
  314. {% if app.user %}
  315. {% if app.session.get('vueAdministrateur') %}
  316. {% set vueEspace = 'Administrateur' %}
  317. {% else %}
  318. {% if app.session.get('typeUtilisateur') == 'Administrateur' %}
  319. {% set vueEspace = 'Enseignant' %}
  320. {% else %}
  321. {% set vueEspace = app.session.get('typeUtilisateur') %}
  322. {% endif %}
  323. {% endif %}
  324. {% endif %}
  325. {% if eleve is defined and eleve is not null %}
  326. <nav class="navbar navbar-expand-lg bg-light shadow">
  327. <div class="col-md-2 mx-auto my-1">
  328. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_ecleleve_index') }}"><i class="bi bi-person-vcard-fill"></i>&nbsp;{{ 'synthese'|trans({}, 'libelles')|capitalize|raw }}</a>
  329. </div>
  330. <div class="col-md-2 mx-auto my-1">
  331. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_ecleleve_note') }}"><i class="bi bi-star-fill"></i>&nbsp;{{ 'notes'|trans({}, 'libelles')|capitalize|raw }}</a>
  332. </div>
  333. <div class="col-md-2 mx-auto my-1">
  334. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_ecleleve_prochaines-evaluations') }}"><i class="bi bi-clock"></i>&nbsp;{{ 'evaluations'|trans({}, 'libelles')|capitalize|raw }}&nbsp;{{ 'a_venir'|trans({}, 'libelles')|lower|raw }}</a>
  335. </div>
  336. <div class="col-md-2 mx-auto my-1">
  337. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_ecleleve_cours') }}" data-turbo="false"><i class="bi bi-list-ul"></i>&nbsp;{{ 'cours'|trans({}, 'libelles')|capitalize|raw }}</a>
  338. </div>
  339. {% set classDiplome = "disabled" %}
  340. {% set chemin = "" %}
  341. {% set nomDiplome = "" %}
  342. {% if diplome is defined and diplome is not null %}
  343. {% if diplome.generer and diplome.disponible %}
  344. {% set classDiplome = "" %}
  345. {% set chemin = diplome.chemintemp %}
  346. {% set nomDiplome = diplome.numerodiplome %}
  347. {% endif %}
  348. {% endif %}
  349. <div class="col-md-2 mx-auto my-1">
  350. <a class="btn-warning btn btn-primary col-md-12 mx-auto {{ classDiplome }}" href="{{ chemin }}" data-turbo="false" data-toggle="tooltip" title="{{ 'telecharger'|trans({}, 'libelles')|capitalize|raw }} {{ 'certificat'|trans({}, 'libelles')|lower|raw }}" download="{{nomDiplome}}.pdf"><i class="bi bi-download"></i>&nbsp;{{ 'certificat'|trans({}, 'libelles')|capitalize|raw }}</a>
  351. </div>
  352. </nav>
  353. {% if vueEspace == 'Enseignant' %}
  354. <nav class="navbar navbar-expand-lg bg-light">
  355. <div class="col-md-2 mx-auto my-1">
  356. <a class="btn btn-primary col-md-12 mx-auto btn-warning" href="{{ path('app_eclenseignant_index') }}" data-turbo="false"><i class="bi bi-person-fill"></i>&nbsp;{{ 'retour'|trans({}, 'libelles')|capitalize|raw }}&nbsp;{{ 'espace_enseignant'|trans({}, 'libelles')|lower|raw }}</a>
  357. </div>
  358. </nav>
  359. {% endif %}
  360. {% if vueEspace == 'Administrateur' %}
  361. <nav class="navbar navbar-expand-lg bg-light">
  362. <div class="col-md-2 mx-auto my-1">
  363. <a class="btn-warning btn btn-primary col-md-12 mx-auto" href="{{ path('app_ecladmin_eleves') }}" data-turbo="false"><i class="bi bi-people-fill"></i>&nbsp;{{ 'retour'|trans({}, 'libelles')|capitalize|raw }}&nbsp;{{ 'espace_enseignant'|trans({}, 'libelles')|lower|raw }}</a>
  364. </div>
  365. </nav>
  366. {% endif %}
  367. {% else %}
  368. {% if vueEspace == 'Enseignant' or vueEspace == 'Administrateur' %}
  369. <nav class="navbar navbar-expand-lg bg-light">
  370. <div class="col-md-2 mx-auto my-1 p-1">
  371. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_eclenseignant_mescours') }}" data-turbo="false"><i class="bi bi-list-ul"></i>&nbsp;{{ 'mes_cours'|trans({}, 'libelles')|capitalize|raw }}</a>
  372. </div>
  373. <div class="col-md-2 mx-auto my-1 p-1">
  374. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_eclenseignant_lescours') }}" data-turbo="false"><i class="bi bi-list-ul"></i>&nbsp;{{ 'cours'|trans({}, 'libelles')|capitalize|raw }}</a>
  375. </div>
  376. <div class="col-md-2 mx-auto my-1 p-1">
  377. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_eclenseignant_note') }}"><i class="bi bi-star-fill"></i>&nbsp;{{ 'notes'|trans({}, 'libelles')|capitalize|raw }}</a>
  378. </div>
  379. <div class="col-md-2 mx-auto my-1 p-1">
  380. {% if app.session.get('jeanneDupont') %}
  381. <a class="btn btn btn-secondary col-md-12 mx-auto" href="{{ path('app_eclenseignant_switchdemo') }}"><i class="bi bi-person-fill"></i>&nbsp;Jeanne&nbsp;DUPONT</a>
  382. {% else %}
  383. <div data-toggle="tooltip" title="{{ 'eleve_non_disponible'|trans({}, 'libelles')|capitalize|raw }}"><button class="btn btn btn-secondary col-md-12 mx-auto" disabled><i class="bi bi-person-fill"></i>&nbsp;Jeanne&nbsp;DUPONT</button></div>
  384. {% endif %}
  385. </div>
  386. {% if app.session.get('vueAdministrateur') %}
  387. <div class="col-md-2 mx-auto my-1 p-1">
  388. {% if app.session.get('jeanDupont') %}
  389. <a class="btn btn btn-secondary col-md-12 mx-auto" href="{{ path('app_eclenseignant_switchdemofinale') }}"><i class="bi bi-person-fill"></i>&nbsp;Jean&nbsp;DUPONT</a>
  390. {% else %}
  391. <div data-toggle="tooltip" title="{{ 'eleve_non_disponible'|trans({}, 'libelles')|capitalize|raw }}"><button class="btn btn btn-secondary col-md-12 mx-auto" disabled><i class="bi bi-person-fill"></i>&nbsp;Jean&nbsp;DUPONT</button></div>
  392. {% endif %}
  393. </div>
  394. {% endif %}
  395. </nav>
  396. {% if app.session.get('vueAdministrateur') %}
  397. <nav class="navbar navbar-expand-lg bg-light">
  398. <div class="col-md-2 mx-auto my-1 p-1">
  399. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_ecladmin_eleves') }}" data-turbo="false"><i class="bi bi-people-fill"></i>&nbsp;{{ 'eleves'|trans({}, 'libelles')|capitalize|raw }}</a>
  400. </div>
  401. <div class="col-md-2 mx-auto my-1 p-1">
  402. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_ecladmin_enseignants') }}" data-turbo="false"><i class="bi bi-people-fill"></i>&nbsp;{{ 'enseignants'|trans({}, 'libelles')|capitalize|raw }}</a>
  403. </div>
  404. <div class="col-md-2 mx-auto my-1 p-21">
  405. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_eclenseignant_notifenseignantcourscours') }}"><i class="bi bi-send-fill"></i>&nbsp;{{ 'notifications'|trans({}, 'libelles')|capitalize|raw }}</a>
  406. </div>
  407. <div class="col-md-2 mx-auto my-1 p-1">
  408. <a class="btn btn-primary col-md-12 mx-auto" href="{{ path('app_ecladmin_certificat-competence') }}"><i class="bi bi-award-fill"></i>&nbsp;{{ 'certificats'|trans({}, 'libelles')|capitalize|raw }}</a>
  409. </div>
  410. <div class="col-md-2 mx-auto my-1 p-1">
  411. <a class="btn btn-primary position-relative col-md-12 mx-auto" data-turbo="false" href="{{ path('app_import_gestion') }}">
  412. <i class="bi bi-database-fill-gear"></i>&nbsp;{{ 'imports'|trans({}, 'libelles')|capitalize|raw }}
  413. {% if app.session.get('importEnErreur') == true %}
  414. <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill">
  415. <i data-toggle="tooltip" title="{{ 'imports_en_erreur'|trans({}, 'libelles')|capitalize|raw }}" class="bi bi-exclamation-circle-fill text-danger fs-4 ms-1"></i>
  416. </span>
  417. {% endif %}
  418. </a>
  419. </div>
  420. </nav>
  421. {% endif %}
  422. {% endif %}
  423. {% endif %}
  424. </div>
  425. {% endif %}
  426. <main class="mb-5">
  427. {% block body %}
  428. {% endblock %}
  429. </main>
  430. <!-- Footer -->
  431. <footer class="footer mt-auto bg-light text-center shadow-lg" style="z-index: -5;">
  432. <div class="pb-0 pt-4 bg-light" style="z-index : -5;">
  433. {% set parametreContact = NULL %}
  434. {% if app.session.get('parametre') is not null %}
  435. {% set parametreContact = app.session.get('parametre').contactfooter %}
  436. {% endif %}
  437. <p class="text-center text-muted">{{ 'contact'|trans({}, 'libelles')|capitalize|raw }} : {{ parametreContact }}</p>
  438. <img src="{{ asset('build/images/Logo-ComPass-min.webp') }}" alt="Logo" style="max-height: 35px;" class="mt-2 mb-3"/>
  439. <p class="text-center text-muted">ComPass - {{ parametre.versionapp }}</p>
  440. </div>
  441. </footer>
  442. <div id="toast-container" class="toast-container position-fixed bottom-0 end-0 p-3" style="z-index: 4;">
  443. {% for flash in app.flashes('success') %}
  444. {{ include('_toast.html.twig', { context: 'success', title: 'succes'|trans({}, 'libelles')|capitalize|raw, body: flash }) }}
  445. {% endfor %}
  446. {% for flash in app.flashes('error') %}
  447. {{ include('_toast.html.twig', { context: 'danger', title: 'erreur'|trans({}, 'libelles')|capitalize|raw, body: flash }) }}
  448. {% endfor %}
  449. {% for flash in app.flashes('warning') %}
  450. {{ include('_toast.html.twig', { context: 'warning', title: 'attention'|trans({}, 'libelles')|capitalize|raw, body: flash }) }}
  451. {% endfor %}
  452. </div>
  453. </body>
  454. </html>