overlay agenda-sport
# Résumé technique de l'overlay `Agenda_sport`
Objectif principal
Gérer des événements sportifs avec géolocalisation, réservations et métadonnées Schema.org pour le SEO. **Architecture technique**# **Structure de données**
```
Agenda_sport (extends Overlay)
├── Attributs propres
│ ├── telephone, link_url
│ ├── date_debut, date_fin
│ ├── organizer_name, organizer_url, organizer_email
│ ├── price_type, price, price_currency
│ └── booking_url, max_attendees
├── Données externes
│ ├── Locations (géolocalisation)
│ ├── Categories (sport, région)
│ └── Article YACS (description, titre)
└── Métadonnées Schema.org
```# **Modules YACS intégrés** **Fonctionnalités implémentées**
- ✅ **Locations** → Géolocalisation
- ✅ **Categories** → Sports et régions
- ✅ **Members** → Associations catégories/articles
- ✅ **Images** → Photos d'illustration
- ✅ **Links** → Liens externes
- ✅ **Dates** → Gestion des dates# **1. Interface d'édition**# **2. Affichage public**
- Formulaires en grille responsive
- Validation JavaScript
- Géolocalisation avec OpenStreetMap
- Sélection dynamique des catégories
- Carte OpenStreetMap interactive
- Métadonnées Schema.org (microdata + JSON-LD)
- Affichage responsive des informations
- Différents variants (jour, block_date, etc.)# **3. SEO avancé**# **4. Persistance**
- Schema.org SportsEvent complet
- JSON-LD pour les moteurs de recherche
- Microdata imbriquées (Place, Offer, Organization)
- Sauvegarde dans Locations pour la géolocalisation
- Mise à jour du rank pour le tri chronologique
- Gestion des images et liens associés **Points forts** **Critiques (à corriger en priorité)**
1. **SEO optimisé** → Schema.org complet
2. **Géolocalisation robuste** → OpenStreetMap + fallbacks
3. **Responsive design** → Grilles CSS modernes
4. **Validation complète** → Côté client et serveur
5. **Intégration YACS native** → Utilise les modules existants
---
# **Liste des points à améliorer**# **1. Problème de référence `$this->anchor`**# **2. Appels statiques à méthodes non-statiques**
```php
// Ligne 658 : if(!isset($this->anchor) || !is_object($this->anchor))
// La classe Overlay n'a pas de propriété 'anchor'
```
**Solution** : Utiliser `$this->item['id']` ou passer l'anchor en paramètre.
```php
// Lignes 314, 319 : Agenda_sport::list_category_by_title_for_members()
// Méthode déclarée non-statique mais appelée statiquement
```
**Solution** : Déclarer la méthode comme `static` ou utiliser `$this->`.# **3. Méthode `load_scripts_n_styles()` non définie**# **4. Dépendances JavaScript obsolètes**
```php
// Ligne 183 : $this->load_scripts_n_styles();
// Cette méthode n'existe pas dans la classe
```
**Solution** : Implémenter la méthode ou la supprimer.
```php
// Ligne 100 : Yacs.observer (n'existe peut-être plus)
// Ligne 196 : Yacs.stopWorking() (déprécié)
```
**Solution** : Utiliser des APIs JavaScript modernes. **Améliorations fonctionnelles**# **5. Gestion des erreurs insuffisante**
- Pas de try/catch pour les appels SQL
- Validation incomplète des données de géolocalisation
- Pas de logs détaillés en cas d'échec# **6. Performance des cartes**# **7. Accessibilité**
- Chargement redondant de Leaflet (déjà fait dans `display_map()`)
- Pas de lazy loading pour les cartes hors viewport
- Initialisation JavaScript lourde
- Pas d'ARIA labels sur les cartes
- Couleurs de tarifs non accessibles (contraste)
- Navigation au clavier limitée sur les cartes# **8. Internationalisation** **Évolutions possibles**
- Textes codés en dur dans certains endroits
- Formats de dates non localisés partout
- Devises limitées à 4 options# **9. Fonctionnalités avancées**# **10. Améliorations UX/UI**
- **Partage sur réseaux sociaux** avec Open Graph
- **Export calendrier** (ICS, Google Calendar)
- **Notifications** (rappel par email)
- **Recherche géolocalisée** (événements près de chez moi)
- **Prévisualisation** en temps réel de la carte
- **Auto-complétion** des adresses (API Nominatim)
- **Drag & drop** pour positionner le marqueur
- **Mode hors ligne** pour la saisie# **11. Performance et SEO**# **12. Administration**
- **Cache** des tuiles OpenStreetMap
- **Images optimisées** pour les cartes
- **Schema.org** encore plus riche (performer, audience)
- **AMP** version pour mobile
- **Tableau de bord** des événements
- **Statistiques** de participation
- **Export CSV** de tous les événements
- **Modération** des inscriptions
##