templates/layout/backEndLayout.html.twig line 73

Open in your IDE?
  1. {% extends 'layout/base.html.twig' %}
  2. {% block stylesheets %}
  3. {{ parent() }}
  4. <link rel="stylesheet" href="{{ asset('assets/css/style.blue.css') }}">
  5. <link rel="stylesheet" href="{{ asset('assets/css/jquery.mCustomScrollbar.css') }}">
  6. <link rel="stylesheet" href="{{ asset('assets/cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css') }}">
  7. <style>
  8. /* Sidebar */
  9. .side-navbar {
  10. position: fixed;
  11. top: 0;
  12. left: 0;
  13. width: 220px;
  14. height: 100vh;
  15. background: #2f3e47;
  16. color: white;
  17. overflow-y: auto;
  18. transition: all 0.3s ease;
  19. z-index: 999;
  20. }
  21. .side-navbar a { color: #d1d4d6; display:block; padding:10px 15px; }
  22. .side-navbar a:hover { background:#1e2a31; color:white; }
  23. .sidenav-header img { width:70px; border-radius:50%; margin-bottom:10px; }
  24. /* Collapsed sidebar (mobile) */
  25. .side-navbar.collapsed {
  26. left: -220px;
  27. }
  28. /* Content */
  29. .flex-grow-1 {
  30. margin-left: 220px;
  31. transition: margin 0.3s ease;
  32. }
  33. .side-navbar.collapsed ~ .flex-grow-1 {
  34. margin-left: 0;
  35. }
  36. /* Header */
  37. .header { background:white; border-bottom:1px solid #eee; padding:10px 20px; display:flex; justify-content:space-between; align-items:center; }
  38. /* Dashboard cards */
  39. .dashboard-card { background:white; border-radius:8px; padding:15px; box-shadow:0 2px 6px rgba(0,0,0,0.1); text-align:center; }
  40. .dashboard-card i { font-size:2em; margin-bottom:5px; }
  41. /* Toggle button */
  42. #toggle-btn { font-size:1.3em; cursor:pointer; color:#2f3e47; }
  43. /* Responsive */
  44. @media (max-width: 768px) {
  45. .flex-grow-1 { margin-left: 0; }
  46. .side-navbar { left: -220px; }
  47. .side-navbar.collapsed { left: 0; }
  48. }
  49. </style>
  50. {% endblock %}
  51. {% block title %}
  52. {{ parent() }} / Administration
  53. {% endblock %}
  54. {% block main %}
  55. <div class="d-flex">
  56. {# Sidebar #}
  57. {% block sidebar %}
  58. <nav class="side-navbar">
  59. <div class="side-navbar-wrapper">
  60. {% block identification %}
  61. <div class="sidenav-header text-center py-4">
  62. <img src="{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}{{ app.user.avatar(75) }}{% else %}{{ asset('img/avatar-2.jpg') }}{% endif %}" alt="user-avatar">
  63. <h6 class="text-white mt-2">{% if app.user %}{{ app.user.username }}{% endif %}</h6>
  64. </div>
  65. {% endblock %}
  66. {% block menu %}
  67. <ul class="list-unstyled">
  68. {% if is_granted('ROLE_ADMIN') %}
  69. <li><a href="{{ path('admin_school_years') }}"><i class="fa fa-calendar"></i> Années scolaires</a></li>
  70. <li><a href="{{ path('admin_quaters') }}"><i class="fa fa-calendar-check-o"></i> Trimestres</a></li>
  71. <li><a href="{{ path('admin_sequences') }}"><i class="fa fa-calendar-minus-o"></i> Séquences</a></li>
  72. <li><a href="{{ path('admin_programs') }}"><i class="fa fa-table"></i> Programmes</a></li>
  73. <li><a href="{{ path('admin_sections') }}"><i class="fa fa-th-large"></i> Sections</a></li>
  74. <li><a href="{{ path('admin_cycles') }}"><i class="fa fa-th-list"></i> Cycles</a></li>
  75. <li><a href="{{ path('admin_levels') }}"><i class="fa fa-list-ul"></i> Niveaux</a></li>
  76. <li><a href="{{ path('admin_classrooms') }}"><i class="fa fa-indent"></i> Classes</a></li>
  77. <li><a href="{{ path('admin_modules') }}"><i class="fa fa-folder-open-o"></i> Module</a></li>
  78. <li><a href="{{ path('admin_domains') }}"><i class="fa fa-user-md"></i> Département</a></li>
  79. <li><a href="{{ path('admin_courses') }}"><i class="fa fa-book"></i> Matières</a></li>
  80. <li><a href="{{ path('admin_subscriptions') }}"><i class="fa fa-exchange"></i> Inscriptions</a></li>
  81. <li><a href="{{ path('admin_students', {'type': 'new_students_not_yet_registered_checkbox'}) }}"><i class="fa fa-users"></i> Élèves</a></li>
  82. <li><a href="{{ path('admin_attributions') }}"><i class="fa fa-map-signs"></i> Attributions</a></li>
  83. <li><a href="{{ path('admin_users') }}"><i class="fa fa-user"></i> Personnel</a></li>
  84. <li><a href="{{ path('admin_statistics') }}"><i class="fa fa-area-chart"></i> Statistiques</a></li>
  85. {% endif %}
  86. <li><a href="{{ path('admin_evaluations') }}"><i class="fa fa-file-pdf-o"></i> Evaluations</a></li>
  87. <li><a href="{{ path('app_account') }}"><i class="fa fa-user-circle"></i> Account</a></li>
  88. </ul>
  89. {% endblock %}
  90. </div>
  91. </nav>
  92. {% endblock %}
  93. {# Contenu principal #}
  94. <div class="flex-grow-1">
  95. {% block header %}
  96. <header class="header d-flex align-items-center justify-content-between">
  97. <a id="toggle-btn" href="#" class="menu-btn"><i class="fa fa-bars"></i></a>
  98. <a href="{{ path('app_home') }}" class="navbar-brand text-center">
  99. <strong class="text-primary">SCHOOL MANAGEMENT SYSTEM</strong>
  100. </a>
  101. {% if app.user %}
  102. <a id="logout_btn" href="#" onclick="event.preventDefault(); document.getElementById('js-logout-form').submit();" class="btn btn-warning">
  103. <i class="fa fa-sign-out"></i>
  104. </a>
  105. <form id="js-logout-form" action="{{ path('app_logout') }}" style="display:none;" method="POST">
  106. <input type="hidden" name="_csrf_token" value="{{ csrf_token('logout') }}">
  107. </form>
  108. {% endif %}
  109. </header>
  110. {% endblock %}
  111. <section class="container-fluid mt-4">
  112. {% if is_granted('ROLE_ADMIN') %}
  113. <div class="row mb-4">
  114. <div class="col-md-3">
  115. <div class="dashboard-card text-center">
  116. <i class="fa fa-graduation-cap text-primary"></i>
  117. <h4>{{ students_count() }}</h4>
  118. <p>Élèves</p>
  119. </div>
  120. </div>
  121. <div class="col-md-3">
  122. <div class="dashboard-card text-center">
  123. <i class="fa fa-users text-success"></i>
  124. <h4>{{ teachers_count() }}</h4>
  125. <p>Enseignants</p>
  126. </div>
  127. </div>
  128. <div class="col-md-3">
  129. <div class="dashboard-card text-center">
  130. <i class="fa fa-home text-warning"></i>
  131. <h4>{{ rooms_count() }}</h4>
  132. <p>Classes</p>
  133. </div>
  134. </div>
  135. <div class="col-md-3">
  136. <select class="form-control" id="select_year">
  137. {% for year in years()|reverse %}
  138. <option value="{{ year.id }}" {% if app.session.get('session_school_year') == year.id %}selected{% endif %}>{{ year.code }}</option>
  139. {% endfor %}
  140. </select>
  141. </div>
  142. </div>
  143. {% endif %}
  144. {% block content %}{% endblock %}
  145. </section>
  146. </div>
  147. </div>
  148. {% endblock %}
  149. {% block footer %}{% endblock %}
  150. {% block javascripts %}
  151. {{ parent() }}
  152. <script src="{{ asset('assets/js/jquery.cookie.js') }}"></script>
  153. <script src="{{ asset('assets/js/grasp_mobile_progress_circle-1.0.0.min.js') }}"></script>
  154. <script src="{{ asset('assets/js/jquery.validate.min.js') }}"></script>
  155. <script src="{{ asset('assets/js/jquery.mCustomScrollbar.concat.min.js') }}"></script>
  156. <script>
  157. // Toggle sidebar menu
  158. $('#toggle-btn').on('click', function(e) {
  159. e.preventDefault();
  160. $('.side-navbar').toggleClass('collapsed');
  161. });
  162. // Changement d'année scolaire
  163. $('#select_year').on('change', function() {
  164. $.ajax({
  165. type: "POST",
  166. url: "{{ path('update_school_year') }}",
  167. data: { selectedSchoolYear: $(this).val() },
  168. success: function(){ location.reload(); },
  169. error: function(e){ console.log(e); alert("Echec."); }
  170. });
  171. });
  172. </script>
  173. {% endblock %}