process.html.twig 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. {% extends 'bulma.html.twig' %}
  2. {% block title %}Gestion pour {{ event.name }}{% endblock %}
  3. {% block content %}
  4. <div class="card" {{ stimulus_controller('dropdown')}} >
  5. <div class="card-footer">
  6. <div class="dropdown card-footer-item is-flex is-justify-content-space-between is-align-items-center" data-action="click->dropdown#toggle">
  7. <button>
  8. <span><strong>{{ event.name }} - du {{ event.startOn|date('d/m/y à H:i', app_timezone) }} au {{ event.endOn|date('d/m/y à H:i', app_timezone)}}</strong></span>
  9. </button>
  10. {% if events|length > 1 %}
  11. <span class="icon is-small">
  12. <twig:ux:icon name="bi:chevron-down" />&nbsp;
  13. </span>
  14. <div data-dropdown-target="menu" class="dropdown-menu">
  15. <div class="dropdown-content">
  16. {% for evt in events %}
  17. {% if event.id != evt.id %}
  18. <a href="{{ path('app_manage_planning', {id: evt.id})}}" 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>
  19. {% endif %}
  20. {% endfor %}
  21. </div>
  22. </div>
  23. {% endif %}
  24. </div>
  25. </div>
  26. </div>
  27. <div class="box is-clearfix">
  28. <div class="columns">
  29. {% if not event.isHiddenPlanning %}
  30. <div class="column">
  31. <p>{{ event.getParties()|length }} parties proposées</p>
  32. </div>
  33. {% endif %}
  34. <div class="column">
  35. <p class="is-inline-block icon-text">{{ event.getGamemastersAssigned|length }} meneur(euse)s de jeu
  36. {% for gamemaster in event.getGamemastersAssigned %}
  37. <span class="icon">
  38. <a href="{{ path('app_gamemaster_public_profile', {id: gamemaster.id}) }}" class="open-modal" title="{{ gamemaster.preferedName }}"><figure class="image is-24x24 is-inline-block">
  39. {% if gamemaster.picture %}
  40. <img class="is-rounded" src="/images/gamemasters/{{ gamemaster.picture }}" alt="{{ gamemaster.preferedName }}"/>
  41. {% else %}
  42. <twig:ux:icon name="bi:person-fill"/>
  43. {% endif %}
  44. </figure></a>
  45. </span>
  46. {% endfor %}
  47. </p>
  48. </div>
  49. </div>
  50. </div>
  51. <div class="tabs is-boxed">
  52. <ul>
  53. <li><a href="{{ path('app_manage_planning', {id: event.id}) }}">Planning</a></li>
  54. <li><a href="{{ path('app_manage_party_list', {id: event.id}) }}">Liste des parties</a></li>
  55. <li><a href="{{ path('app_manage_booking', {id: event.id}) }}">Liste des participant(e)s</a></li>
  56. {% if event.isEveryoneCanAskForGame %}<li class="is-active"><a>Liste des demandes</a></li>{% endif %}
  57. </ul>
  58. </div>
  59. <section>
  60. <div clas="block">
  61. <div class="content">
  62. <h3 class="title is-3">Traiter la demande</h3>
  63. <p class="subtitle is-5">Résumer de la demande à traiter</p>
  64. <p>Suivez chaque étape, vous pouvez revenir en arrière à tout moment pour sélectionner un autre créneau dans le planning. Scrollez vers le bas pour la suite.</p>
  65. </div>
  66. <div class="box">
  67. <div class="columns">
  68. <div class="column is-one-third has-text-right">
  69. <strong>Demandeur(euse)</strong>
  70. </div>
  71. <div class="column">
  72. {{ partyRequest.requester.fullName }}
  73. </div>
  74. </div>
  75. <div class="columns">
  76. <div class="column is-one-third has-text-right">
  77. <strong>Jeu demandé</strong>
  78. </div>
  79. <div class="column">
  80. {{ partyRequest.gameChoosen.name }}
  81. </div>
  82. </div>
  83. <div class="columns">
  84. <div class="column is-one-third has-text-right">
  85. <strong>Meneur(euse) demandé(e)</strong>
  86. </div>
  87. <div class="column">
  88. {{ partyRequest.gamemasterChoosen.preferedName }}
  89. </div>
  90. </div>
  91. <div class="columns">
  92. <div class="column is-one-third has-text-right">
  93. <strong>Message</strong>
  94. </div>
  95. <div class="column">
  96. {{ partyRequest.message }}
  97. </div>
  98. </div>
  99. </div>
  100. <div class="content has-text-centered">
  101. <p><span class="has-text-danger"><em>Attention, cette version de l'application ne prend pas encore en charge la disponibilité des MJ ! Vous devez vous assurer de la disponibilité en contrôlant le planning.</em></span></p>
  102. <a class="button is-primary" href="#findSlot">Trouver un créneau</a>
  103. <a class="button is-warning" href="#" data-id="{{ path('app_manage_request_refuse', {id: partyRequest.id}) }}" {{ stimulus_controller('admin_confirm') }}>Refuser</a>
  104. </div>
  105. </div>
  106. <hr class="jump-page" />
  107. </section>
  108. <section {{ stimulus_controller('request_process') }}>
  109. <a name="findSlot" id="findSlot"></a>
  110. <div clas="block">
  111. <div class="content">
  112. <h3 class="title is-3">Trouver un créneau libre</h3>
  113. <p class="subtitle is-5">Sélectionner le créneau pour la partie demandée.</p>
  114. <p>Au pied du planning, vous disposez d'un bouton pour refuser si cette demande ne peut pas être honorée. Cliquez sur le créneau pour passer à l'étape suivante.</p>
  115. <p><span class="has-text-danger"><em>Attention, cette version de l'application ne prend pas encore en charge la disponibilité des MJ ! Vous devez vous assurer de la disponibilité en contrôlant le planning.</em></span></p>
  116. </div>
  117. {{ component('Planning', {event: partyRequest.event, pathEmptySlot: 'app_manage', displayUnvalidates: true}) }}
  118. </div>
  119. <div class="content has-text-centered">
  120. <p>Aucun créneau disponible ne convient ?</p>
  121. <a class="button is-warning" href="#" data-id="{{ path('app_manage_request_refuse', {id: partyRequest.id}) }}" {{ stimulus_controller('admin_confirm') }}>Refuser</a>
  122. </div>
  123. <hr class="jump-page" />
  124. </section>
  125. <section>
  126. <a name="lastStep" id="lastStep"></a>
  127. <div clas="block">
  128. <div class="content">
  129. <h3 class="title is-3">Finaliser la demande</h3>
  130. <p class="subtitle is-5">Sélectionner l'horaire de fin.</p>
  131. <p><span class="has-text-danger"><em>Attention, cette version de l'application ne prend pas encore en charge la disponibilité des MJ ! Vous devez vous assurer de la disponibilité en contrôlant le planning.</em></span></p>
  132. </div>
  133. <div class="content">
  134. {{ form_errors(form) }}
  135. {{ form_start(form) }}
  136. <div class="box">
  137. <div class="columns">
  138. <div class="column">
  139. <div class="field">
  140. <label class="label">Horaire de début</label>
  141. <a href="#findSlot" id="party_start"></a>
  142. <small class="help"></small>Cliquez sur la date pour changer l'horaire de début et choisissez un autre créneau.</small>
  143. </div>
  144. </div>
  145. <div class="column">
  146. <div class="field">
  147. <label class="label">Horaire de fin</label>
  148. <select id="party_slots" name="party_slots" class="input">
  149. </select>
  150. </div>
  151. </div>
  152. </div>
  153. </div>
  154. {{ form_widget(form) }}
  155. <div class="control has-text-centered">
  156. <button class="button is-primary" type="submit">Envoyer</button>
  157. <a href="#" data-id="{{ path('app_manage_request_refuse', {id: partyRequest.getId}) }}" class="button is-warning" data-turbo="false" {{ stimulus_controller('admin_confirm') }}>Refuser</a>
  158. </div>
  159. {{ form_end(form) }}
  160. </div>
  161. </div>
  162. </section>
  163. {% endblock %}