booking.info.html.twig 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. {% extends 'bulma.html.twig' %}
  2. {% block title %}Réservations pour {{ event.name }}{% endblock %}
  3. {% block content %}
  4. {{ component('Modal')}}
  5. <div class="columns">
  6. <div class="column is-one-third">
  7. <div class="card event-selector" {{ stimulus_controller('dropdown')}} >
  8. <div class="card-image">
  9. <figure class="image is-3by1">
  10. {% if event.picture %}
  11. <img src="/images/events/{{ event.picture }}" />
  12. {% else %}
  13. <img src="/images/events/placeholder.webp" />
  14. {% endif %}
  15. </figure>
  16. </div>
  17. <div class="card-footer">
  18. <div class="dropdown card-footer-item is-flex is-justify-content-space-between is-align-items-center" data-action="click->dropdown#toggle">
  19. <button>
  20. <span><strong>{{ event.name }}</strong></span>
  21. </button>
  22. {% if events|length > 1 %}
  23. <span class="icon is-small">
  24. <twig:ux:icon name="bi:chevron-down" />&nbsp;
  25. </span>
  26. <div data-dropdown-target="menu" class="dropdown-menu">
  27. <div class="dropdown-content">
  28. {% for evt in events %}
  29. {% if event.id != evt.id %}
  30. <a href="{{ path('app_main_booking', {id: evt.id, view: 'pictures'})}}" class="dropdown-item"><strong>{{ evt.name }}</strong><small> du {{ evt.startOn|date('d/m/y H:i', app_timezone) }} au {{ evt.endOn|date('d/m/y H:i', app_timezone)}}</small></a>
  31. {% endif %}
  32. {% endfor %}
  33. </div>
  34. </div>
  35. {% endif %}
  36. </div>
  37. </div>
  38. </div>
  39. </div>
  40. <div class="column">
  41. <div class="hero is-small">
  42. <div class="hero-body">
  43. <h2 class="title is-2">{{ event.name }}{% if event.moreLink %}<a href="{{ event.moreLink }}" target="_blank" title="En savoir plus sur le site de l'événement.">&nbsp;<small class="icon is-6"><twig:ux:icon name="bi:link-45deg"/></small></a>{% endif %}<a href="{{ app_url|replace({'https://':'webcal://'}) }}{{ path('app_main_ics', {id: event.id}) }}" target="_blank" title="Ajouter à mon agenda">&nbsp;<small class="icon is-6"><twig:ux:icon name="bi:calendar-plus"/></small></a></h2>
  44. <p class="subtitle is-4">du {{ event.startOn|date('d/m/y à H:i', app_timezone) }} au {{ event.endOn|date('d/m/y à H:i', app_timezone)}}</p>
  45. <article>
  46. <p>{{ event.description }}</p>
  47. </article>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. {% if event.isEveryoneCanAskForGame %}
  53. <div class="block is-clearfix">
  54. <div class="message is-info">
  55. <div class="message-body">
  56. <p class="block">Cet événement vous propose de demander votre parties ! Choissez un jeu, choissez un(e) meneur(euse) de jeu et nous planifierons, si possible votre partie.</p>
  57. {% if is_granted('ROLE_USER') %}
  58. <p class="block"><a href="{{ path('app_party_request', {id: event.id}) }}" class="button is-info open-modal">Demander une partie</a></p>
  59. {% else %}
  60. <p>Vous devez disposer d'un compte utilisateur pour réaliser une demande. <a href="{{ app_url }}login">Connectez-vous ou créez un compte.</a></p>
  61. {% endif %}
  62. </div>
  63. </div>
  64. </div>
  65. {% endif %}
  66. {% if not event.isHiddenPlanning or is_granted('ROLE_MANAGER') or is_granted('ROLE_ADMIN') %}
  67. <div class="tabs is-boxed">
  68. <ul>
  69. <li class="is-active"><a>Informations</a></li>
  70. <li><a href="{{ path('app_main_booking', {id: event.id, view: 'pictures'}) }}">Vignettes</a></li>
  71. <li><a href="{{ path('app_main_booking', {id: event.id, view: 'planning'}) }}">Planning</a></li>
  72. </ul>
  73. </div>
  74. {% endif %}
  75. {% set authors = [] %}
  76. {% set gamemasters = [] %}
  77. {% set games = [] %}
  78. {% for party in event.parties %}
  79. {% if party.gamemasterIsAuthor and (party.gamemaster not in authors) %}
  80. {% set authors = authors|merge([party.gamemaster]) %}
  81. {% endif %}
  82. {% if party.gamemaster not in gamemasters %}
  83. {% set gamemasters = gamemasters|merge([party.gamemaster]) %}
  84. {% endif %}
  85. {% if party.game not in games %}
  86. {% set games = games|merge([party.game]) %}
  87. {% endif %}
  88. {% endfor %}
  89. <section class="block">
  90. {% if authors|length > 0 %}
  91. <div class="content">
  92. <h2 class="title">Les auteur(rice)s présent(e)s</h2>
  93. {% for gamemaster in authors %}
  94. <article class="media">
  95. <figure class="media-left">
  96. <p class="image is-128x128">
  97. {% if gamemaster.picture %}
  98. <img class="is-rounded" src="/images/gamemasters/{{ gamemaster.picture }}" />
  99. {% else %}
  100. <twig:ux:icon name="bi:person-fill"/>
  101. {% endif %}
  102. </p>
  103. </figure>
  104. <div class="media-content">
  105. <div class="content">
  106. <h3>{{ gamemaster.preferedName }}</h3>
  107. <p>
  108. {{ gamemaster.description }}
  109. </p>
  110. {% if gamemaster.isAuthor %}
  111. <p>
  112. <em>Je suis auteur(rice) des jeux suivants : </em><br/>
  113. {{ gamemaster.authorOfGames|map(game => game.name)|join(', ') }}
  114. </p>
  115. {% endif %}
  116. </div>
  117. </div>
  118. </article>
  119. {% endfor %}
  120. </div>
  121. {% endif %}
  122. <div class="content">
  123. <h2 class="title">Les meneur(euse)s de jeu présent(e)s</h2>
  124. <p><em>Cliquez sur la vignette pour lire sa biographie et découvrir les jeux qui vous seront proposés.</em></p>
  125. <div class="fixed-grid has-6-cols-fullhd has-4-cols-widescreen has-4-cols-desktop has-4-cols-tablet has-2-cols-mobile">
  126. <div class="grid is-col-min-12">
  127. {% for gamemaster in gamemasters %}
  128. <div class="cell">
  129. <a href="{{ path('app_gamemaster_public_profile', {id: gamemaster.id}) }}" class="open-modal">
  130. <div class="box">
  131. <article class="media">
  132. <figure class="media-left">
  133. <p class="image is-64x64">
  134. {% if gamemaster.picture %}
  135. <img src="/images/gamemasters/{{ gamemaster.picture }}" />
  136. {% else %}
  137. <twig:ux:icon name="bi:person-fill"/>
  138. {% endif %}
  139. </p>
  140. </figure>
  141. <div class="media-content">
  142. <div class="content">
  143. <p>
  144. <strong>{{ gamemaster.preferedName }}</strong>
  145. <br/>
  146. {{ gamemaster.description }}
  147. </p>
  148. </div>
  149. </div>
  150. </article>
  151. </div>
  152. </a>
  153. </div>
  154. {% endfor %}
  155. </div>
  156. </div>
  157. </div>
  158. <div class="content">
  159. <h2 class="title">Les jeux proposés</h2>
  160. <p><em>Cliquez sur la vignette pour consulter la description complète du jeu.</em></p>
  161. <div class="fixed-grid has-6-cols-fullhd has-4-cols-widescreen has-4-cols-desktop has-4-cols-tablet has-2-cols-mobile">
  162. <div class="grid is-col-min-12">
  163. {% for game in games %}
  164. <div class="cell" >
  165. <a href="{{ path('app_game_public', {id: game.id}) }}" class="open-modal">
  166. <div class="card">
  167. <div class="card-image">
  168. <figure class="image is-3by1">
  169. {% if game.picture %}
  170. <img src="/images/games/{{ game.picture }}" />
  171. {% else %}
  172. <img src="/images/games/placeholder.webp" />
  173. {% endif %}
  174. </figure>
  175. </div>
  176. <div class="card-content">
  177. <div class="content">
  178. <p>
  179. <strong>{{ game.name }}</strong>
  180. </p>
  181. </div>
  182. </div>
  183. </div>
  184. </a>
  185. </div>
  186. {% endfor %}
  187. </div>
  188. </div>
  189. </div>
  190. </section>
  191. {% endblock %}