# PTA V7.14 — Groupe « Management » : les agents et les lieux ont chacun leur onglet ## Le problème traité L’onglet « Administration » réunissait trois objets sans rapport les uns avec les autres : - le référentiel des **agents** (création, fiches, rattachements) ; - le référentiel des **lieux d’affectation** (création, type périscolaire/extrascolaire) ; - les **horaires de couverture attendus**, qui ne décrivent ni une personne ni un lieu mais une exigence de présence. L’écran était aussi organisé à l’envers : les deux formulaires de création côte à côte en haut, puis les deux tableaux plus bas, séparés par les horaires de couverture. Créer un agent puis vérifier sa fiche demandait de traverser tout l’écran. ## Ce qui change ### 1. Un groupe de navigation « Management », deux onglets La barre de navigation gagne un cinquième groupe, au même titre que « Piloter », « Planifier », « Consulter » et « Paramétrer » : | Groupe | Onglets | | --- | --- | | Piloter | Tableau de bord, À valider, Couverture | | Planifier | Saisie, Équipes | | Consulter | Par agent, Par lieu, Vue annuelle, PTA détaillé | | **Management** | **Agents**, **Lieux d’affectation** | | Paramétrer | Vacances, Administration, Accès & journaux | Chaque onglet porte **la création puis la liste** de son objet : « Ajouter un agent » puis « Informations des agents » ; « Ajouter un lieu » puis « Paramètres des lieux ». C’est l’ordre du travail réel. Le groupe se place volontairement **avant** « Paramétrer » : on y crée et corrige au fil de l’eau, là où « Paramétrer » se règle une fois pour l’année. ### 2. « Administration » ne garde que la couverture Il ne reste que l’encadré « Horaires de couverture des lieux » — le paramètre que contrôle l’onglet « Couverture ». Le sous-titre de la page le dit, et la page ne charge plus que le module `coverage` : les 578 lignes du module `administration` partent avec les deux nouveaux onglets. ### 3. Rien n’a changé côté serveur Endpoints, gardes, contrôles et modules JS sont **identiques** : c’est un déplacement de markup, pas une réécriture. Les identifiants HTML — points d’ancrage du module `administration` — sont conservés à la lettre, et ce module fonctionne indifféremment sur l’un ou l’autre onglet : ses écouteurs sont tous posés en `?.`, donc sans effet quand l’élément visé n’est pas sur la page. Deux adaptations d’affichage : le raccourci du tableau de bord pointe sur « Agents », et le guide d’utilisation renvoie aux nouveaux onglets. La tuile « Lieux à paramétrer » continue de mener à « Administration » : elle parle bien de couverture. ## Une singularité de nommage à connaître Les deux méthodes de `PageController` s’appellent `manage_agents()` et `manage_structures()`, en snake_case, à rebours de tout le reste du projet. Ce n’est pas un oubli : le nom de la méthode **est** la clé de page passée à `runPage()` et inscrite dans `acces_role_page`, où les clés sont en minuscules (`dashboard`, `coverage`, `pending`…). Garder les deux identiques prime sur l’uniformité de style — c’est cette identité qui permet à PTA de se passer de routeur. ## Fichiers | Fichier | Rôle | | --- | --- | | `database/migration_v7_9g_management.sql` | Droits d’accès aux deux pages pour le Service Enfance | | `manage_agents.php`, `manage_structures.php` | Points d’entrée | | `app/Views/pages/manage_*.php`, `app/Views/partials/manage_*.php` | Vues et markup déplacé | | `app/Views/partials/administration.php` | Ne conserve que les horaires de couverture | | `app/Controllers/PageController.php` | `manage_agents()`, `manage_structures()`, `administration()` allégé | | `app/Views/layouts/header.php` | Groupe « Management » dans `$navigationGroups` | | `app/Views/partials/dashboard.php`, `app/Views/partials/faq.php` | Renvois mis à jour | ## Point d’attention Sans la migration, les pages sont refusées et les onglets n’apparaissent pas — c’est la règle de PTA depuis la V7.8 : **les pages autorisées sont lues en base**, jamais écrites en PHP. La migration supprime au passage la ligne `management` d’une version intermédiaire : une page inconnue laissée dans `acces_role_page` finirait dans le groupe de repêchage « Autres » de la barre de navigation.