booking.info.html.twig 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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 = event.gamemastersAssigned %}
  77. {% set games = event.gameAssigned %}
  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. {% endfor %}
  83. <section class="block">
  84. {% if authors|length > 0 %}
  85. <div class="content">
  86. <h2 class="title">Les auteur(rice)s présent(e)s</h2>
  87. {% for gamemaster in authors %}
  88. <article class="media">
  89. <figure class="media-left">
  90. <p class="image is-128x128">
  91. {% if gamemaster.picture %}
  92. <img class="is-rounded" src="/images/gamemasters/{{ gamemaster.picture }}" />
  93. {% else %}
  94. <twig:ux:icon name="bi:person-fill"/>
  95. {% endif %}
  96. </p>
  97. </figure>
  98. <div class="media-content">
  99. <div class="content">
  100. <h3>{{ gamemaster.preferedName }}</h3>
  101. <p>
  102. {{ gamemaster.description }}
  103. </p>
  104. {% if gamemaster.isAuthor %}
  105. <p>
  106. <em>Je suis auteur(rice) des jeux suivants : </em><br/>
  107. {{ gamemaster.authorOfGames|map(game => game.name)|join(', ') }}
  108. </p>
  109. {% endif %}
  110. </div>
  111. </div>
  112. </article>
  113. {% endfor %}
  114. </div>
  115. {% endif %}
  116. <div class="content">
  117. <h2 class="title">Les meneur(euse)s de jeu présent(e)s</h2>
  118. <p><em>Cliquez sur la vignette pour lire sa biographie et découvrir les jeux qui vous seront proposés.</em></p>
  119. <div class="fixed-grid has-6-cols-fullhd has-4-cols-widescreen has-4-cols-desktop has-4-cols-tablet has-2-cols-mobile">
  120. <div class="grid is-col-min-12">
  121. {% for gamemaster in gamemasters %}
  122. <div class="cell">
  123. <a href="{{ path('app_gamemaster_public_profile', {id: gamemaster.id}) }}" class="open-modal">
  124. <div class="box">
  125. <article class="media">
  126. <figure class="media-left">
  127. <p class="image is-64x64">
  128. {% if gamemaster.picture %}
  129. <img src="/images/gamemasters/{{ gamemaster.picture }}" />
  130. {% else %}
  131. <twig:ux:icon name="bi:person-fill"/>
  132. {% endif %}
  133. </p>
  134. </figure>
  135. <div class="media-content">
  136. <div class="content">
  137. <p>
  138. <strong>{{ gamemaster.preferedName }}</strong>
  139. </p>
  140. </div>
  141. </div>
  142. </article>
  143. </div>
  144. </a>
  145. </div>
  146. {% endfor %}
  147. </div>
  148. </div>
  149. </div>
  150. <div class="content">
  151. <h2 class="title">Les jeux proposés</h2>
  152. <p><em>Cliquez sur la vignette pour consulter la description complète du jeu.</em></p>
  153. <div class="fixed-grid has-6-cols-fullhd has-4-cols-widescreen has-4-cols-desktop has-4-cols-tablet has-2-cols-mobile">
  154. <div class="grid is-col-min-12">
  155. {% for game in games %}
  156. <div class="cell" >
  157. <a href="{{ path('app_game_public', {id: game.id}) }}" class="open-modal">
  158. <div class="card">
  159. <div class="card-image">
  160. <figure class="image is-3by1">
  161. {% if game.picture %}
  162. <img src="/images/games/{{ game.picture }}" />
  163. {% else %}
  164. <img src="/images/games/placeholder.webp" />
  165. {% endif %}
  166. </figure>
  167. </div>
  168. <div class="card-content">
  169. <div class="content">
  170. <p>
  171. <strong>{{ game.name }}</strong>
  172. </p>
  173. </div>
  174. </div>
  175. </div>
  176. </a>
  177. </div>
  178. {% endfor %}
  179. </div>
  180. </div>
  181. </div>
  182. </section>
  183. {% endblock %}