ajout permanences

This commit is contained in:
theShlavuk 2026-01-20 22:35:52 +01:00
parent 3e2d5743ff
commit 62fa707291
2 changed files with 68 additions and 21 deletions

View File

@ -187,6 +187,18 @@ function setupPreviewListeners() {
heuresInputs.forEach(input => {
input.addEventListener('change', updatePreview);
});
// Écouter les changements de durée de permanence (1h ou 15min)
const dureeInputs = document.querySelectorAll('input[name="duree_permanence"]');
dureeInputs.forEach(input => {
input.addEventListener('change', updatePreview);
});
// Écouter les changements du nombre de tranches (si 15min)
const nbTranchesSelect = document.getElementById('nb-tranches');
if (nbTranchesSelect) {
nbTranchesSelect.addEventListener('change', updatePreview);
}
}
/**
@ -200,6 +212,8 @@ function updatePreview() {
.map(input => input.value)
.sort(); // Trier les heures pour un affichage cohérent
const moisDebut = document.getElementById('mois-debut')?.value;
const dureePermanence = document.querySelector('input[name="duree_permanence"]:checked')?.value || '1h';
const nbTranches = dureePermanence === '15min' ? parseInt(document.getElementById('nb-tranches')?.value || '1') : 1;
if (heuresChecked.length === 0) {
clearPreview();
@ -217,8 +231,29 @@ function updatePreview() {
}
// Calculer les tranches horaires à partir des heures sélectionnées
// Chaque heure sélectionnée = 1 tranche d'1 heure
const tranches = heuresChecked.map(heureDebut => {
let tranches = [];
if (dureePermanence === '15min') {
// Mode 15 minutes : créer des tranches de 15 minutes
heuresChecked.forEach(heureDebut => {
const [h, m] = heureDebut.split(':').map(Number);
for (let i = 0; i < nbTranches; i++) {
const minutesDebut = m + (i * 15);
const minutesFin = m + ((i + 1) * 15);
const trancheDebut = `${String(h).padStart(2, '0')}:${String(minutesDebut).padStart(2, '0')}`;
const trancheFin = `${String(h).padStart(2, '0')}:${String(minutesFin).padStart(2, '0')}`;
tranches.push({
debut: trancheDebut,
fin: trancheFin
});
}
});
} else {
// Mode 1 heure : chaque heure sélectionnée = 1 tranche d'1 heure
tranches = heuresChecked.map(heureDebut => {
const [h, m] = heureDebut.split(':').map(Number);
const heureFin = `${String(h + 1).padStart(2, '0')}:${String(m).padStart(2, '0')}`;
return {
@ -226,6 +261,7 @@ function updatePreview() {
fin: heureFin
};
});
}
// Calculer les dates à partir du mois de début sélectionné
const [year, month] = moisDebut.split('-').map(Number);

View File

@ -281,23 +281,34 @@ if (!is_wp_error($langues_terms) && !empty($langues_terms)) {
</h3>
</div>
<div class="card-body">
<?php if (!empty($langues)): ?>
<div class="mb-3">
<label for="langues-permanences" class="form-label fw-bold">Langues disponibles (optionnel) :</label>
<select class="form-select form-select-lg" id="langues-permanences" name="langues[]" multiple>
<?php if (!empty($langues)): ?>
<?php foreach ($langues as $langue): ?>
<option value="<?php echo esc_attr($langue['id']); ?>">
<?php echo esc_html($langue['nom']); ?>
</option>
<?php endforeach; ?>
<?php else: ?>
<option value="">Aucune langue disponible</option>
<?php endif; ?>
</select>
<small class="form-text text-muted">
Sélectionnez une ou plusieurs langues pour ces permanences.
Sélectionnez une ou plusieurs langues pour ces permanences. Maintenez Ctrl (ou Cmd sur Mac) pour sélectionner plusieurs langues.
</small>
</div>
<?php else: ?>
<div class="alert alert-warning" role="alert">
<i class="fas fa-exclamation-triangle me-2"></i>
<strong>Aucune langue disponible</strong>
<p class="mb-2 mt-2">Aucune langue n'a été créée dans la taxonomie "Langues". Les permanences seront créées sans langue associée.</p>
<p class="mb-0">
Pour ajouter des langues, rendez-vous dans
<a href="<?php echo esc_url(admin_url('edit-tags.php?taxonomy=langue&post_type=traducteur')); ?>" class="alert-link" target="_blank">
Traducteurs &gt; Langues
<i class="fas fa-external-link-alt ms-1"></i>
</a>
</p>
</div>
<?php endif; ?>
</div>
</div>