Files
sondage/_vote_date.html
T

226 lines
13 KiB
HTML

{{* ---------- Purge automatique des créneaux dont la date est passée ----------
TODO : mettre un paramètre ou/non pour la purge.
Si non, bloquer l'inscription sur ce créneau
{{:assign var="aujourdhui_s" value=$now|date:"Y-m-d"}}
{{:assign var="suppression_faite" value=false}}
{{#foreach from=$s.creneaux item="c"}}
{{if !$c.date || $c.date >= $aujourdhui_s}}
{{:assign var="creneaux_actifs." value=$c}}
{{else}}
{{:assign var="suppression_faite" value=true}}
{{/if}}
{{/foreach}}
{{if $suppression_faite}}
{{:save id=$s.id creneaux=$creneaux_actifs}}
{{:redirect url="%s?id=%s"|args:$_url:$s.id}}
{{/if}}
*}}
{{* ---------- Créneaux triés par ordre chronologique ---------- *}}
{{#foreach from=$s.creneaux item="c"}}
{{:assign var="cle_date" value=$c.date|strval}}
{{if !$cle_date}}{{:assign var="cle_date" value="9999-99-99"}}{{/if}}
{{:assign var="cle_tri" value="%s_%s_%s"|args:$cle_date:$c.debut:$c.id}}
{{:assign var="tri.%s"|args:$cle_tri value=$c}}
{{/foreach}}
{{if $s.creneaux|count}}{{:assign var="creneaux" value=$tri|ksort|values}}{{/if}}
{{* ---------- Ligne en cours de modification ----------
{{:assign var="edit_nom" value=$_POST.edit_nom|strval}}
{{#foreach from=$s.votes item="v"}}
{{if $v.nom == $edit_nom}}
{{:assign var="edit_choix" value=$v.choix}}
{{:assign var="edit_remarque" value=$v.remarque}}
{{/if}}
{{/foreach}}
*}}
{{* ---------- Créneau en cours de modification ----------
{{:assign var="edit_creneau" value=$_POST.edit_creneau|strval}}
{{#foreach from=$s.creneaux item="c"}}
{{if $c.id == $edit_creneau}}
{{:assign var="edit_c_titre" value=$c.titre}}
{{:assign var="edit_c_date" value=$c.date}}
{{:assign var="edit_c_debut" value=$c.debut}}
{{:assign var="edit_c_fin" value=$c.fin}}
{{:assign var="edit_c_ok" value=1}}
{{/if}}
{{/foreach}}
*}}
{{* ---------- Totaux par créneau ---------- *}}
{{:assign var="max_oui" value=0}}
{{:assign var="nb_votants" value=0}}
<div class="card">
<h2>Créneaux</h2>
{{if $creneaux|count}}
<form method="post" action="">
<div class="scroll">
<table class="grille">
<thead>
<tr>
<th></th>
{{#foreach from=$creneaux item="c"}}
{{:assign var="th_oui" from="tot_oui.%s"|args:$c.id}}{{:assign var="th_peut" from="tot_peut.%s"|args:$c.id}}
<th class="creneau">{{if $c.titre|trim}}<em class="titre">{{$c.titre}}</em>{{/if}}{{if $c.date}}<b>{{$c.date|date_long}}</b><small>{{$c.debut}} → {{$c.fin}}</small>{{else}}<b>{{$c.label}}</b>{{/if}}
{{if $est_admin}}
{{if $th_oui < 1 && $th_peut < 1}}
{{*<button type="submit" name="edit_creneau" value="{{$c.id}}" class="mini" formnovalidate="formnovalidate" title="Modifier ce créneau">&#9998;</button>*}}
{{:button type="submit" class="mini" name="edit_creneau" shape="edit" title="Modifier ce créneau" value="%d"|args:$c.id}}
{{/if}}
{{*<button type="submit" name="suppr_creneau" value="{{$c.id}}" class="mini" formnovalidate="formnovalidate" title="Supprimer ce créneau">&#10005;</button>*}}
{{:button type="submit" class="mini" name="suppr_creneau" shape="delete" title="Supprimer ce créneau" value="%d"|args:$c.id}}
{{/if}}
</th>
{{/foreach}}
</tr>
</thead>
<tbody>
{{#foreach from=$s.votes item="v"}}
<tr>
<th>{{$v.nom}}
{{*<button type="submit" name="edit_nom" value="{{$v.nom}}" class="mini" formnovalidate="formnovalidate" title="Modifier cette ligne">&#9998;</button>*}}
{{:button type="submit" class="mini" name="edit_nom" label="Modifier cette ligne" default=$v.nom}}
{{if $est_admin}}
{{*<button type="submit" name="suppr_nom" value="{{$v.nom}}" class="mini" formnovalidate="formnovalidate" title="Supprimer cette ligne">&#10005;</button>*}}
{{:button type="submit" class="mini" name="suppr_nom" label="Supprimer cette ligne" default=$v.nom}}
{{/if}}
</th>
{{#foreach from=$creneaux item="c"}}
{{:assign var="val" from="v.choix.%s"|args:$c.id}}
{{if $val == 2}}<td class="oui">&#10004;</td>{{elseif $val == 1}}<td class="peut">(&#10004;)</td>{{else}}<td class="non"></td>{{/if}}
{{/foreach}}
</tr>
{{/foreach}}
<tr class="saisie">
<th>
{{if $is_logged}}
{{:input type="text" name="nom_vote" label="Votre nom" default=$logged_user.nom readonly="readonly" required=true}}
{{else}}
{{:input type="text" name="nom_vote" label="Votre nom" placeholder="Votre nom" default=$edit_nom required=true}}
{{/if}}
</th>
{{#foreach from=$creneaux item="c"}}
{{:assign var="pre" from="edit_choix.%s"|args:$c.id}}
<td>
{{*:debug c=$c pre=$pre*}}
{{:input type="radio" name="dispo[%s]"|args:$c.id label="oui" value="2"}}
{{:input type="radio" name="dispo[%s]"|args:$c.id label="si besoin" value="1"}}
{{:input type="radio" name="dispo[%s]"|args:$c.id label="non" value="0"}}
{{*
<label><input type="radio" class="normal" name="dispo[{{$c.id}}]" value="2" {{if $pre == 2}}checked="checked"{{/if}} /> oui</label>
<label><input type="radio" class="normal" name="dispo[{{$c.id}}]" value="1" {{if $pre == 1}}checked="checked"{{/if}} /> si besoin</label>
<label><input type="radio" class="normal" name="dispo[{{$c.id}}]" value="0" {{if $pre != 1 && $pre != 2}}checked="checked"{{/if}} /> non</label>
*}}
</td>
{{/foreach}}
</tr>
<tr class="somme">
<th>Somme<small>{{$nb_votants}} votant(s)</small></th>
{{#foreach from=$creneaux item="c"}}
{{:assign var="n_oui" from="tot_oui.%s"|args:$c.id}}
{{:assign var="n_peut" from="tot_peut.%s"|args:$c.id}}
<td>{{if $n_oui > 0 && $n_oui == $max_oui}}<span class="best">&#9733; {{$n_oui}}</span>{{elseif $n_oui > 0}}{{$n_oui}}{{else}}0{{/if}}{{if $n_peut > 0}}<small>(+{{$n_peut}})</small>{{/if}}</td>
{{/foreach}}
</tr>
</tbody>
</table>
</div>
<p class="champ" style="margin-top:.8rem;">
{{:input type="textarea" cols=40 rows=2 name="remarque" label="Une précision à ajouter ?" default=$edit_remarque required=false}}
{{*
<label style="display:block; font-size:.9rem; color:#666; margin-bottom:.3rem;">Remarque (facultatif)</label>
<textarea name="remarque"
rows="2" placeholder="Une précision à ajouter ?"
style="width:100%; font-family:inherit; font-size:1rem; padding:.45rem .7rem; border:1px solid #bbb; border-radius:.4rem;">{{$edit_remarque}}</textarea>
*}}
</p>
<p>
{{* <button type="submit" name="enregistrer" value="1">Enregistrer mes disponibilités</button>*}}
{{:button type="submit" name="voter_creneau" label="Enregistrer mes disponibilités" help="Pour corriger votre vote, retapez le même nom et choisissez une autre option." class="main" value="%d"|args:$s.id}}
</p>
<p class="aide">Tapez votre nom, cochez vos disponibilités puis enregistrez. Pour corriger une ligne existante, cliquez sur le crayon à côté du nom.</p>
</form>
{{else}}
<p class="vide">Aucun créneau pour l'instant.{{if $est_admin}} Ajoutez-en un ci-dessous pour commencer.{{/if}}</p>
{{/if}}
</div>
{{:assign var="remarque_trouvee" value=false}}
<div class="card">
<h2>Remarques</h2>
<ul style="list-style:none; margin:0; padding:0;">
{{#foreach from=$s.votes item="v"}}
{{if $v.remarque|trim}}
{{:assign var="remarque_trouvee" value=true}}
<li style="padding:.5rem 0; border-bottom:1px solid #eceae8;"><b>{{$v.nom}}</b> — {{$v.remarque}}</li>
{{/if}}
{{/foreach}}
</ul>
{{if !$remarque_trouvee}}<p class="vide">Aucune remarque pour l'instant.</p>{{/if}}
</div>
{{*if $est_admin}}
<div class="card">
{{if $edit_c_ok}}
<h2>Modifier ce créneau</h2>
<form method="post" action="" class="ajout">
<label>Titre <input type="text" name="titre" value="{{$edit_c_titre}}" placeholder="ex. Permanence atelier" /></label>
<label>Date <input type="date" name="date" value="{{$edit_c_date}}" required="required" /></label>
<label>de <input type="time" name="debut" value="{{$edit_c_debut}}" required="required" /></label>
<label>à <input type="time" name="fin" value="{{$edit_c_fin}}" required="required" /></label>
<button type="submit" name="rename_creneau" value="{{$edit_creneau}}">Enregistrer</button>
<a class="retour" href="{{$_url}}?id={{$s.id}}">Annuler</a>
</form>
{{else}}
<h2>Ajouter un créneau</h2>
<form method="post" action="" class="ajout">
<label>Titre <input type="text" name="titre" placeholder="ex. Permanence atelier" /></label>
<label>Date <input type="date" name="date" required="required" /></label>
<label>de <input type="time" name="debut" value="19:00" required="required" /></label>
<label>à <input type="time" name="fin" value="21:00" required="required" /></label>
<button type="submit" name="add_creneau" value="1">Ajouter la colonne</button>
</form>
{{/if}}
</div>
<div class="card">
<h2>Ajouter plusieurs créneaux (saisie libre)</h2>
<form method="post" action="">
<table style="width:100%; border-collapse:collapse;">
<thead><tr><th style="text-align:left; font-size:.85rem; color:#666;">Titre</th><th style="text-align:left; font-size:.85rem; color:#666;">Date</th><th style="text-align:left; font-size:.85rem; color:#666;">De</th><th style="text-align:left; font-size:.85rem; color:#666;">À</th></tr></thead>
<tbody>
<tr><td><input type="text" name="titre_1" placeholder="ex. Permanence" /></td><td><input type="date" name="date_1" /></td><td><input type="time" name="debut_1" value="19:00" /></td><td><input type="time" name="fin_1" value="21:00" /></td></tr>
<tr><td><input type="text" name="titre_2" placeholder="ex. Permanence" /></td><td><input type="date" name="date_2" /></td><td><input type="time" name="debut_2" value="19:00" /></td><td><input type="time" name="fin_2" value="21:00" /></td></tr>
<tr><td><input type="text" name="titre_3" placeholder="ex. Permanence" /></td><td><input type="date" name="date_3" /></td><td><input type="time" name="debut_3" value="19:00" /></td><td><input type="time" name="fin_3" value="21:00" /></td></tr>
<tr><td><input type="text" name="titre_4" placeholder="ex. Permanence" /></td><td><input type="date" name="date_4" /></td><td><input type="time" name="debut_4" value="19:00" /></td><td><input type="time" name="fin_4" value="21:00" /></td></tr>
<tr><td><input type="text" name="titre_5" placeholder="ex. Permanence" /></td><td><input type="date" name="date_5" /></td><td><input type="time" name="debut_5" value="19:00" /></td><td><input type="time" name="fin_5" value="21:00" /></td></tr>
</tbody>
</table>
<p class="aide">Laissez la date vide pour ignorer une ligne. Seules les lignes avec une date seront ajoutées.</p>
<p><button type="submit" name="ajout_multiple" value="1">Ajouter ces créneaux</button></p>
</form>
</div>
<div class="card">
<h2>Générer des créneaux automatiquement</h2>
<form method="post" action="" class="ajout">
<label>Titre <input type="text" name="g_titre" placeholder="ex. Permanence atelier" /></label>
<label>de <input type="time" name="g_heure_debut" value="19:00" required="required" /></label>
<label>à <input type="time" name="g_heure_fin" value="21:00" required="required" /></label>
<label>Du <input type="date" name="g_debut_periode" required="required" /></label>
<label>au <input type="date" name="g_fin_periode" required="required" /></label>
<button type="submit" name="generer_creneaux" value="1">Générer les créneaux</button>
<div style="width:100%; display:flex; gap:1rem; flex-wrap:wrap; margin-top:.5rem;">
<label style="display:flex; align-items:center; gap:.3rem; font-size:.9rem;"><input type="checkbox" name="g_jour[]" value="1" /> Lundi</label>
<label style="display:flex; align-items:center; gap:.3rem; font-size:.9rem;"><input type="checkbox" name="g_jour[]" value="2" /> Mardi</label>
<label style="display:flex; align-items:center; gap:.3rem; font-size:.9rem;"><input type="checkbox" name="g_jour[]" value="3" /> Mercredi</label>
<label style="display:flex; align-items:center; gap:.3rem; font-size:.9rem;"><input type="checkbox" name="g_jour[]" value="4" /> Jeudi</label>
<label style="display:flex; align-items:center; gap:.3rem; font-size:.9rem;"><input type="checkbox" name="g_jour[]" value="5" /> Vendredi</label>
<label style="display:flex; align-items:center; gap:.3rem; font-size:.9rem;"><input type="checkbox" name="g_jour[]" value="6" /> Samedi</label>
<label style="display:flex; align-items:center; gap:.3rem; font-size:.9rem;"><input type="checkbox" name="g_jour[]" value="7" /> Dimanche</label>
</div>
</form>
<p class="aide">Crée un créneau pour chaque jour correspondant dans la période choisie (ex. "tous les mardis du 1er au 30 septembre"). Limité à un an à partir de la date de début.</p>
</div>
{{/if*}}
{{:debug sondage=$s}}