137 lines
7.7 KiB
PHP
137 lines
7.7 KiB
PHP
<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 d’un 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 d’affectation</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 d’un planning validé le repasse automatiquement en brouillon afin qu’il 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; ?>
|