251 lines
12 KiB
PHP
251 lines
12 KiB
PHP
<?php
|
|
/**
|
|
* Template Agenda Intervenant
|
|
* Affiche le calendrier complet avec filtres
|
|
* Shortcode: [crvi_intervenant_agenda]
|
|
*/
|
|
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
$user = wp_get_current_user();
|
|
?>
|
|
|
|
<div class="crvi-intervenant-agenda" id="intervenant-agenda-container">
|
|
<div class="container-fluid py-4">
|
|
<!-- En-tête -->
|
|
<div class="row mb-4">
|
|
<div class="col-12">
|
|
<h1 class="h2 mb-2">
|
|
<i class="fas fa-calendar-alt me-2"></i>Mon Agenda
|
|
</h1>
|
|
<nav class="navbar navbar-expand-lg navbar-light bg-light rounded p-3">
|
|
<div class="container-fluid">
|
|
<ul class="navbar-nav me-auto">
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="<?php echo esc_url(home_url('/espace-intervenant')); ?>">
|
|
<i class="fas fa-home me-1"></i>Hub
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link active" href="<?php echo esc_url(home_url('/espace-intervenant-agenda')); ?>">
|
|
<i class="fas fa-calendar-alt me-1"></i>Agenda
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="<?php echo esc_url(home_url('/espace-intervenant-profil')); ?>">
|
|
<i class="fas fa-user me-1"></i>Mon Profil
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="<?php echo esc_url(home_url('/encodage-permanences')); ?>">
|
|
<i class="fas fa-clock me-1"></i>Permanences
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Onglets pour basculer entre mon agenda et celui des collègues -->
|
|
<div class="row mb-3">
|
|
<div class="col-12">
|
|
<ul class="nav nav-tabs" id="agendaTabs" role="tablist">
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link active" id="my-agenda-tab" data-bs-toggle="tab" data-bs-target="#my-agenda" type="button" role="tab" aria-controls="my-agenda" aria-selected="true">
|
|
<i class="fas fa-calendar-check me-1"></i>Mon Agenda
|
|
</button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link" id="colleagues-agenda-tab" data-bs-toggle="tab" data-bs-target="#colleagues-agenda" type="button" role="tab" aria-controls="colleagues-agenda" aria-selected="false">
|
|
<i class="fas fa-users me-1"></i>Agenda de mes collègues
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Contenu des onglets -->
|
|
<div class="tab-content" id="agendaTabsContent">
|
|
<!-- Onglet Mon Agenda -->
|
|
<div class="tab-pane fade show active" id="my-agenda" role="tabpanel" aria-labelledby="my-agenda-tab">
|
|
<section class="agenda-container">
|
|
<!-- Filtres -->
|
|
<section class="filters-container">
|
|
<form class="filters" method="get" onsubmit="return false;">
|
|
<div class="filter">
|
|
<label for="local">Local</label>
|
|
<select id="local" name="local" class="select2">
|
|
<option value="">Tous</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter">
|
|
<label for="beneficiaire">Bénéficiaire</label>
|
|
<select id="beneficiaire" name="beneficiaire" class="select2">
|
|
<option value="">Tous</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter">
|
|
<label for="type_rdv">Type de RDV</label>
|
|
<select id="type_rdv" name="type_rdv" class="select2">
|
|
<option value="">Tous</option>
|
|
<option value="individuel">Individuel</option>
|
|
<option value="groupe">Groupe</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter">
|
|
<label for="departement">Département</label>
|
|
<select id="departement" name="departement" class="select2">
|
|
<option value="">Tous</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter" style="display: none;">
|
|
<label for="type_intervention">Type d'intervention</label>
|
|
<select id="type_intervention" name="type_intervention" class="select2">
|
|
<option value="">Tous</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter">
|
|
<label for="langue_filtre">Langue</label>
|
|
<select id="langue_filtre" name="langue" class="select2">
|
|
<option value="">Toutes</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter">
|
|
<label>
|
|
<input type="checkbox" id="permanences_non_assignees" name="permanences_non_assignees" value="1">
|
|
Permanences non assignées uniquement
|
|
</label>
|
|
</div>
|
|
<div class="filter" style="display: none;">
|
|
<button type="button" id="resetFiltersBtn" class="btn btn-secondary">
|
|
<i class="fas fa-times"></i> Réinitialiser
|
|
</button>
|
|
</div>
|
|
<div class="filter">
|
|
<button type="button" id="addEventBtn" class="btn btn-success">
|
|
<i class="fas fa-plus"></i> Ajouter un événement
|
|
</button>
|
|
</div>
|
|
<div class="filter">
|
|
<button type="button" id="filterBtn" class="btn btn-primary">
|
|
<i class="fas fa-filter"></i> Filtrer
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</section>
|
|
|
|
<!-- Calendrier Mon Agenda -->
|
|
<section class="agenda-inner-container" id="agenda-calendar">
|
|
<div id="loading-indicator" style="text-align: center; padding: 20px;">
|
|
<p>Chargement du calendrier...</p>
|
|
</div>
|
|
</section>
|
|
</section>
|
|
</div>
|
|
|
|
<!-- Onglet Agenda des collègues -->
|
|
<div class="tab-pane fade" id="colleagues-agenda" role="tabpanel" aria-labelledby="colleagues-agenda-tab">
|
|
<section class="agenda-container">
|
|
<!-- Filtres pour l'agenda des collègues -->
|
|
<section class="filters-container">
|
|
<form class="filters filters-colleagues" method="get" onsubmit="return false;">
|
|
<div class="filter">
|
|
<label for="local-colleagues">Local</label>
|
|
<select id="local-colleagues" name="local" class="select2">
|
|
<option value="">Tous</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter">
|
|
<label for="beneficiaire-colleagues">Bénéficiaire</label>
|
|
<select id="beneficiaire-colleagues" name="beneficiaire" class="select2">
|
|
<option value="">Tous</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter">
|
|
<label for="type_rdv-colleagues">Type de RDV</label>
|
|
<select id="type_rdv-colleagues" name="type_rdv" class="select2">
|
|
<option value="">Tous</option>
|
|
<option value="individuel">Individuel</option>
|
|
<option value="groupe">Groupe</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter">
|
|
<label for="departement-colleagues">Département</label>
|
|
<select id="departement-colleagues" name="departement" class="select2">
|
|
<option value="">Tous</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter" style="display: none;">
|
|
<label for="type_intervention-colleagues">Type d'intervention</label>
|
|
<select id="type_intervention-colleagues" name="type_intervention" class="select2">
|
|
<option value="">Tous</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter">
|
|
<label for="langue-colleagues">Langue</label>
|
|
<select id="langue-colleagues" name="langue" class="select2">
|
|
<option value="">Toutes</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter" style="display: none;">
|
|
<button type="button" id="resetFiltersBtn-colleagues" class="btn btn-secondary">
|
|
<i class="fas fa-times"></i> Réinitialiser
|
|
</button>
|
|
</div>
|
|
<div class="filter">
|
|
<button type="button" id="filterBtn-colleagues" class="btn btn-primary">
|
|
<i class="fas fa-filter"></i> Filtrer
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</section>
|
|
|
|
<!-- Calendrier Agenda des collègues -->
|
|
<section class="agenda-inner-container" id="agenda-calendar-colleagues">
|
|
<div id="loading-indicator-colleagues" style="text-align: center; padding: 20px;">
|
|
<p>Chargement du calendrier des collègues...</p>
|
|
</div>
|
|
</section>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<style>
|
|
.crvi-intervenant-agenda {
|
|
min-height: 60vh;
|
|
}
|
|
|
|
#agenda-calendar {
|
|
min-height: 600px;
|
|
}
|
|
|
|
|
|
.card {
|
|
border: none;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
.card-header.bg-light {
|
|
background-color: #f8f9fa !important;
|
|
border-bottom: 1px solid #dee2e6;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.col-md-3 {
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
#agenda-calendar {
|
|
min-height: 400px;
|
|
}
|
|
}
|
|
</style>
|
|
|
|
<!-- Le modal est injecté automatiquement dans le footer via wp_footer par Intervenant_Space_Controller::maybe_render_rdv_modal() -->
|
|
|