pour prod

This commit is contained in:
Loic Masi
2026-08-07 16:13:43 +02:00
commit 5fbf76868f
157 changed files with 24085 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
<section id="agent-view" class="app-view page-content">
<section class="card">
<div class="section-heading">
<div>
<h2><?= ($accessProfile['role'] ?? '') === 'AGENT' ? 'Mon planning' : 'Vue individuelle dun agent' ?></h2>
<p class="section-subtitle"><?= ($accessProfile['role'] ?? '') === 'AGENT'
? 'Consultation de votre planning mensuel et suivi de votre quota.'
: (!empty($permissions['can_copy_full_week'])
? 'Planning mensuel, modification directe des créneaux, duplication de semaines et suivi du quota annuel.'
: 'Planning mensuel des agents du lieu, modification des créneaux du lieu et suivi du quota annuel.') ?></p>
</div>
</div>
<div class="selection-grid overview-filters">
<label class="field">
<span>Agent</span>
<select id="overview-agent">
<option value="">Choisir un agent</option>
<?php foreach ($agents as $agent): ?>
<option value="<?= (int) $agent['id_agent'] ?>">
<?= htmlspecialchars($agent['prenom'] . ' ' . $agent['nom'] . ' (' . $agent['matricule'] . ')') ?>
</option>
<?php endforeach; ?>
</select>
</label>
<label class="field">
<span>Mois</span>
<input id="agent-overview-month" type="month" value="<?= htmlspecialchars((new DateTimeImmutable())->format('Y-m')) ?>">
</label>
<button id="load-agent-overview" class="button button-primary filter-button" type="button">Afficher le mois</button>
</div>
</section>
<section class="card overview-card">
<div id="agent-overview-message" class="message" role="status" aria-live="polite"></div>
<div id="agent-overview-empty" class="empty-state">Choisissez un agent et un mois.</div>
<div id="agent-overview-content" hidden></div>
</section>
</section>
<?php if (!empty($permissions['can_edit_draft'])): ?>
<div id="agent-entry-modal" class="modal-backdrop" hidden>
<section class="modal-card" role="dialog" aria-modal="true" aria-labelledby="agent-entry-modal-title">
<div class="section-heading modal-heading">
<div>
<h2 id="agent-entry-modal-title">Modifier un créneau</h2>
<p class="section-subtitle">Modifiez directement le jour, le lieu, le motif ou les horaires. Un déplacement vers une autre semaine est autorisé.</p>
</div>
<button id="close-agent-entry-modal" type="button" class="button button-ghost modal-close" aria-label="Fermer">×</button>
</div>
<form id="agent-entry-edit-form" class="admin-form">
<input id="edit-agent-entry-id" type="hidden">
<div class="admin-form-grid">
<label class="field">
<span>Jour</span>
<input id="edit-agent-entry-date" type="date" required>
</label>
<label class="field">
<span>Lieu daffectation</span>
<select id="edit-agent-entry-structure" required>
<?php foreach ($structures as $structure): ?>
<option value="<?= (int) $structure['id_structure'] ?>"><?= htmlspecialchars($structure['nom']) ?> — <?= ($structure['type_affectation'] ?? 'PERISCOLAIRE') === 'EXTRASCOLAIRE' ? 'Extrascolaire' : 'Périscolaire' ?></option>
<?php endforeach; ?>
</select>
</label>
<label class="field">
<span>Motif</span>
<select id="edit-agent-entry-motif" required>
<?php foreach ($motifs as $motif): ?>
<option value="<?= (int) $motif['id_motif'] ?>"><?= htmlspecialchars($motif['libelle']) ?></option>
<?php endforeach; ?>
</select>
</label>
<div class="field edit-time-range-field">
<span>Horaires</span>
<div class="edit-time-range">
<input id="edit-agent-entry-start" type="time" step="900" required aria-label="Heure de début">
<span>→</span>
<input id="edit-agent-entry-end" type="time" step="900" required aria-label="Heure de fin">
</div>
</div>
</div>
<p class="hint">Toute modification dun planning validé le repasse automatiquement en brouillon afin quil soit contrôlé et validé à nouveau.</p>
<div id="agent-entry-edit-message" class="message" role="status" aria-live="polite"></div>
<div class="admin-form-actions modal-actions agent-entry-modal-actions">
<button id="delete-agent-entry-edit" type="button" class="button button-danger">Supprimer le créneau</button>
<span class="modal-action-spacer" aria-hidden="true"></span>
<button id="cancel-agent-entry-edit" type="button" class="button button-secondary">Annuler</button>
<button id="save-agent-entry-edit" type="submit" class="button button-primary">Enregistrer la modification</button>
</div>
</form>
</section>
</div>
<?php endif; ?>
<?php if (!empty($permissions['can_copy_full_week'])): ?>
<div id="agent-week-copy-modal" class="modal-backdrop" hidden>
<section class="modal-card planning-entry-action-card" role="dialog" aria-modal="true" aria-labelledby="agent-week-copy-title">
<div class="section-heading modal-heading">
<div>
<h2 id="agent-week-copy-title">Dupliquer une semaine</h2>
<p id="agent-week-copy-summary" class="section-subtitle"></p>
</div>
<button id="close-agent-week-copy-modal" type="button" class="button button-ghost modal-close" aria-label="Fermer">×</button>
</div>
<form id="agent-week-copy-form" class="admin-form">
<input id="agent-week-copy-source" type="hidden">
<label class="field">
<span>Semaine cible</span>
<input id="agent-week-copy-target" type="week" required>
</label>
<fieldset class="entry-action-mode">
<legend>Mode de duplication</legend>
<label class="entry-action-option">
<input type="radio" name="agent-week-copy-mode" value="merge" checked>
<span><strong>Compléter</strong><small>Conserve les créneaux déjà présents. Refus en cas de chevauchement.</small></span>
</label>
<label class="entry-action-option">
<input type="radio" name="agent-week-copy-mode" value="replace">
<span><strong>Remplacer</strong><small>Efface les créneaux de la semaine cible avant la copie.</small></span>
</label>
</fieldset>
<div id="agent-week-copy-message" class="message" role="status" aria-live="polite"></div>
<div class="admin-form-actions modal-actions">
<button id="cancel-agent-week-copy" type="button" class="button button-secondary">Annuler</button>
<button id="confirm-agent-week-copy" type="submit" class="button button-primary">Dupliquer la semaine</button>
</div>
</form>
</section>
</div>
<?php endif; ?>