base.html.twig 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <title>{% block title %}Videothèque{% endblock %}</title>
  7. {{ encore_entry_link_tags('app') }}
  8. {% block stylesheets %}{% endblock %}
  9. <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
  10. </head>
  11. <body style="padding-top:5rem;padding-bottom:4rem;">
  12. {% for type, messages in app.session.flashBag.all %}
  13. {% for message in messages %}
  14. {% if type == 'error' %}{% set type = 'danger' %} {% endif %}
  15. <div class="position-fixed top-5 end-0 p-2" style="z-index: 11">
  16. <div id="liveToast" class="toast bg-gradient bg-{{ type }} text-white" role="alert" aria-live="assertive" aria-atomic="true" {{ stimulus_controller('toast') }}>
  17. <div class="toast-header">
  18. <strong class="me-auto">Info</strong>
  19. <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
  20. </div>
  21. <div class="toast-body">
  22. {{ message }}
  23. </div>
  24. </div>
  25. </div>
  26. {% endfor %}
  27. {% endfor %}
  28. <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
  29. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
  30. <span class="navbar-toggler-icon"></span>
  31. </button>
  32. <a class="navbar-brand" href="{{ path('videotheque_liste') }}">Videothèque</a>
  33. <div class="collapse navbar-collapse" id="navbarSupportedContent">
  34. {% if not is_granted('IS_AUTHENTICATED_REMEMBERED') %}
  35. <ul class="navbar-nav me-auto mb-2 mb-lg-0">
  36. <li class="nav-item">
  37. <a class="nav-link
  38. {% if app.request.attributes.get('_route') == 'videotheque_liste' %}active{% endif %}"
  39. href="{{ path('videotheque_liste') }}">Liste des films</a>
  40. </li>
  41. </ul>
  42. {% endif %}
  43. {% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
  44. <ul class="navbar-nav me-auto mb-2 mb-lg-0">
  45. <li class="nav-item">
  46. <a class="nav-link
  47. {% if app.request.attributes.get('_route') == 'videothequepersonnelle_maliste' %}active{% endif %}"
  48. href="{{ path('videothequepersonnelle_maliste') }}">Ma liste à voir</a>
  49. </li>
  50. <li class="nav-item">
  51. <a class="nav-link
  52. {% if app.request.attributes.get('_route') == 'videotheque_liste' %}active{% endif %}"
  53. href="{{ path('videotheque_liste') }}">Films</a>
  54. </li>
  55. <li class="nav-item">
  56. <a class="nav-link
  57. {% if app.request.attributes.get('_route') == 'realisateur_liste' %}active{% endif %}"
  58. href="{{ path('realisateur_liste') }}">Réalisateurs</a>
  59. </li>
  60. {% if is_granted('ROLE_MODERATEUR') %}
  61. <ul class="navbar-nav">
  62. <li class="nav-item dropdown">
  63. <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownAdmin" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  64. Administration
  65. </a>
  66. <div class="dropdown-menu" aria-labelledby="navbarDropdown">
  67. {% if is_granted('ROLE_ADMIN') %}
  68. <a class="dropdown-item" href="{{ path('admin_index') }}">Utilisateurs</a>
  69. <div class="dropdown-divider"></div>
  70. {% endif %}
  71. <a class="dropdown-item" href="{{ path('genre_liste') }}">Liste des genres</a>
  72. </div>
  73. </li>
  74. </ul>
  75. {% endif %}
  76. </ul>
  77. {% endif %}
  78. <ul class="navbar-nav">
  79. <li class="nav-item">
  80. <a href="#" class="nav-link" data-bs-toggle="modal" data-bs-target="#modalWindow"><i class="fa fa-info-circle fa-lg text-light nav-link" aria-hidden="true"></i></a>
  81. <li>
  82. </ul>
  83. <ul class="navbar-nav">
  84. <li class="nav-item dropdown">
  85. <a class="nav-link dropdown-toggle" href="#" id="navbarHelpDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  86. <i class="fa fa-question-circle fa-lg"></i>
  87. </a>
  88. {% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
  89. <div class="dropdown-menu dropdown-menu-end p-4" aria-labelledby="navbarHelpDropdown" style="width: 400px;">
  90. <p><i class="fa fa-bookmark fa-lg text-primary"></i> : Films que l'on souhaite voir. On les retrouve dans "Liste de mes films"</p>
  91. <p><i class="fa fa-eye fa-lg text-success"></i> : Film qu'on a vu</p>
  92. <p><i class="fa fa-eye-slash fa-lg text-secondary"></i> : Film qu'on n'a pas vu</p>
  93. </div>
  94. {% endif %}
  95. </li>
  96. </ul>
  97. <ul class="navbar-nav">
  98. <li class="nav-item dropdown">
  99. <a class="nav-link dropdown-toggle" href="#" id="navbarBellDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  100. <i class="fa fa-bell fa-lg"></i>
  101. </a>
  102. <div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarBellDropdown" style="width: 400px;">
  103. <div class="list-group px-4 py-3">
  104. {{ afficheNouveautes() | raw }}
  105. </div>
  106. </div>
  107. </li>
  108. </ul>
  109. {#{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}#}
  110. {#{% endif %}#}
  111. {% if not is_granted('IS_AUTHENTICATED_REMEMBERED') %}
  112. <ul class="navbar-nav">
  113. <li class="nav-item"><a class="nav-link" href="{{ path('app_login') }}">Se connecter</a></li>
  114. </ul>
  115. {% else %}
  116. <ul class="navbar-nav">
  117. <li class="nav-item dropdown">
  118. <a class="nav-link dropdown-toggle" href="#" id="navbarUserDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  119. {{ app.user.nomComplet }}
  120. </a>
  121. <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarUserDropdown">
  122. <a class="dropdown-item" href="{{ path('user_profil') }}">Profil</a>
  123. <div class="dropdown-divider"></div>
  124. <a class="dropdown-item" href="{{ path('app_logout') }}">Se déconnecter</a>
  125. </div>
  126. </li>
  127. </ul>
  128. {% endif %}
  129. </div>
  130. </nav>
  131. <div>
  132. <header>
  133. <div class="grid">
  134. <div class="g-col-12">
  135. <h1>{% block titre %}{% endblock %}</h1>
  136. </div>
  137. </div>
  138. <!-- Modal -->
  139. <div class="modal fade" id="modalWindow" tabindex="-1" role="dialog" aria-labelledby="ModalWindow" aria-hidden="true">
  140. <div class="modal-dialog modal-dialog-centered" role="document">
  141. <div class="modal-content">
  142. <div class="modal-header">
  143. <h5 class="modal-title" id="information">Vidéothèque partagée</h5>
  144. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close">
  145. </button>
  146. </div>
  147. <div class="modal-body">
  148. <p>
  149. Ceci est une vidéothèque partagée entre les copains.
  150. Le but, c'est de poser les films qu'on vient de voir où qu'on souhaite voir rapidement et donner des idées aux copains quand ils ne savent plus quoi regarder.
  151. </p>
  152. <p>
  153. On n'est pas là pour recréer IMDB ou Allociné, c'est plutôt une liste de films à voir.
  154. </p>
  155. <p>
  156. D'ailleurs, le but, c'est de cocher les boutons
  157. <i class="fa fa-eye fa-lg text-success"></i> ou <i class="fa fa-eye-slash fa-lg text-secondary"></i>
  158. pour que les autres sachent qui a vu quoi et le bouton <i class="fa fa-bookmark text-primary"></i>
  159. pour suivre un film, ça permet de trier les films dans l'onglet "Ma liste de films".
  160. </p>
  161. <p>
  162. Bon partage à tous !
  163. </p>
  164. <p>
  165. La bise dans vous.
  166. </p>
  167. </div>
  168. <div class="modal-footer">
  169. <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Fermer</button>
  170. </div>
  171. </div>
  172. </div>
  173. </div>
  174. </header>
  175. <main role="main">
  176. {% block body %}{% endblock %}
  177. </main>
  178. <footer class="footer">
  179. <div class="text-center fixed-bottom bg-white">
  180. <span class="text-muted small">Cette application est développée en Symfony 5.3.3 - Code source disponible sur <a target="_blank" href="https://gogs.fdlibre.eu/sangfroid/films-symfony-4-2">Gogs</a><br>Licence <a target="_blank" href="http://www.wtfpl.net">WTFLP</a></span>
  181. </div>
  182. {% block footer %}
  183. {% endblock %}
  184. </footer>
  185. </div>
  186. {{ encore_entry_script_tags('app') }}
  187. {% block javascripts %}{% endblock %}
  188. </body>
  189. </html>