templates/layout/base.html.twig line 48

Open in your IDE?
  1. <!DOCTYPE html>
  2. <html lang="fr">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>{% block title 'BETHESDA' %}</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  8. {# ── SEO ── #}
  9. <meta name="keywords" content="bethesda isbb">
  10. <meta name="description" content="Institut secondaire bilingue bethesda">
  11. <meta name="author" content="Arsene Fokam Poka, Ing">
  12. {% block stylesheets %}
  13. {# ── Favicon ── #}
  14. <link rel="icon" type="image/png" href="{{ asset('assets/images/BethesdaLogo.png') }}"/>
  15. <link rel="apple-touch-icon" href="{{ asset('assets/images/BethesdaLogo.png') }}">
  16. {# ── Google Fonts (preconnect pour la performance) ── #}
  17. <link rel="preconnect" href="https://fonts.googleapis.com">
  18. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  19. {# ── Bootstrap ── #}
  20. <link rel="stylesheet" href="{{ asset('assets/css/bootstrap.min.css') }}"/>
  21. <link href="{{ asset('assets/css/bootstrap-grid.min.css') }}" rel="stylesheet" type="text/css"/>
  22. <link href="{{ asset('assets/css/bootstrap-reboot.min.css') }}" rel="stylesheet" type="text/css"/>
  23. {# ── Icônes ── #}
  24. <link href="{{ asset('assets/css/font-awesome.min.css') }}" rel="stylesheet">
  25. {# ── CSS personnalisé unifié (remplace l'ancien style.css) ── #}
  26. <link href="{{ asset('assets/css/liveedu-custom.css') }}" rel="stylesheet" type="text/css"/>
  27. {# ── Surcouches spécifiques (navbar, custom, etc.) ── #}
  28. <link href="{{ asset('assets/css/custom.css') }}" rel="stylesheet" type="text/css"/>
  29. <link href="{{ asset('assets/css/navbar-fix.css') }}" rel="stylesheet" type="text/css"/>
  30. {% endblock %}
  31. </head>
  32. <body class="host_version">
  33. {% block main %}
  34. {# JUST FOR BACKEND #}
  35. {% endblock %}
  36. {% block partials %}
  37. {# ── Flash Messages ── #}
  38. {% include 'layout/partials/flash_messages.html.twig' %}
  39. {% if not app.user %}
  40. {% include 'layout/partials/modal.html.twig' %}
  41. {% include 'layout/partials/loader.html.twig' %}
  42. {% include 'layout/partials/header.html.twig' %}
  43. {% endif %}
  44. {% endblock %}
  45. <div>
  46. {% block body %}
  47. {# JUST FOR FRONTEND #}
  48. {% endblock %}
  49. {% block footer %}
  50. {% include 'layout/partials/partners.html.twig' %}
  51. {% include 'layout/partials/footer.html.twig' %}
  52. {% endblock footer %}
  53. </div>
  54. {# Enregistre la route courante en session #}
  55. {{ app.session.set('referer', app.request.get('_route')) }}
  56. {% block javascripts %}
  57. {# ── 1. jQuery ── #}
  58. <script src="https://code.jquery.com/jquery-3.7.1.min.js"
  59. integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo="
  60. crossorigin="anonymous"></script>
  61. {# ── 2. jQuery UI ── #}
  62. <script src="{{ asset('assets/js/jquery-ui.min.js') }}"></script>
  63. {# ── 3. Bootstrap 4.6 ── #}
  64. <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.bundle.min.js"></script>
  65. {# ── 4. Chart.js ── #}
  66. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.0/chart.min.js"></script>
  67. {# ── 5. Scripts personnalisés ── #}
  68. <script src="{{ asset('assets/js/jquery.mCustomScrollbar.concat.min.js') }}"></script>
  69. <script src="{{ asset('assets/js/menu.js') }}"></script>
  70. <script src="{{ asset('assets/js/all.js') }}"></script>
  71. <script src="{{ asset('assets/js/front.js') }}"></script>
  72. <script src="{{ asset('assets/js/custom.js') }}"></script>
  73. <script src="{{ asset('assets/js/timeline.min.js') }}"></script>
  74. <script src="{{ asset('assets/js/d3.v4.min.js') }}"></script>
  75. {# ── 6. Sidebar toggle & school year ── #}
  76. <script>
  77. $(document).ready(function () {
  78. $('#toggle-btn').on('click', function (e) {
  79. e.preventDefault();
  80. if ($(window).width() > 1199) {
  81. $('body').toggleClass('sidebar-collapsed');
  82. $('.side-navbar').toggleClass('shrinked');
  83. $('.page').toggleClass('active');
  84. } else {
  85. $('.side-navbar').toggleClass('show-sm');
  86. $('.page').toggleClass('active-sm');
  87. }
  88. });
  89. {# Fermer le sidebar en cliquant en dehors (mobile) #}
  90. $(document).on('click', function (e) {
  91. if ($(window).width() <= 1199) {
  92. if (!$(e.target).closest('.side-navbar, #toggle-btn').length) {
  93. $('.side-navbar').removeClass('show-sm');
  94. $('.page').removeClass('active-sm');
  95. }
  96. }
  97. });
  98. {# Changement d'année scolaire #}
  99. $('#select_year').on('change', function () {
  100. $.ajax({
  101. type: 'POST',
  102. url: '{{ path('update_school_year') }}',
  103. data: { selectedSchoolYear: $(this).val() },
  104. success: function () { location.reload(); },
  105. error: function (e) { alert('Échec du changement d\'année.'); console.error(e); }
  106. });
  107. });
  108. });
  109. </script>
  110. {# ── 7. Timeline ── #}
  111. <script>
  112. timeline(document.querySelectorAll('.timeline'), {
  113. forceVerticalMode: 700,
  114. mode: 'horizontal',
  115. verticalStartPosition: 'left',
  116. visibleItems: 4
  117. });
  118. </script>
  119. {# ── 8. Google Analytics ── #}
  120. <script async src="https://www.googletagmanager.com/gtag/js?id=UA-208287842-1"></script>
  121. <script>
  122. window.dataLayer = window.dataLayer || [];
  123. function gtag() { dataLayer.push(arguments); }
  124. gtag('js', new Date());
  125. gtag('config', 'UA-208287842-1');
  126. </script>
  127. {% endblock javascripts %}
  128. </body>
  129. </html>