Gestion site internet

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**
- ✅ **Locations** → Géolocalisation
- ✅ **Categories** → Sports et régions
- ✅ **Members** → Associations catégories/articles
- ✅ **Images** → Photos d'illustration
- ✅ **Links** → Liens externes
- ✅ **Dates** → Gestion des dates

  **Fonctionnalités implémentées**

# **1. Interface d'édition**
- Formulaires en grille responsive
- Validation JavaScript
- Géolocalisation avec OpenStreetMap
- Sélection dynamique des catégories

# **2. Affichage public**
- 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é**
- Schema.org SportsEvent complet
- JSON-LD pour les moteurs de recherche
- Microdata imbriquées (Place, Offer, Organization)

# **4. Persistance**
- Sauvegarde dans Locations pour la géolocalisation
- Mise à jour du rank pour le tri chronologique
- Gestion des images et liens associés

  **Points forts**
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**

**Critiques (à corriger en priorité)**

# **1. Problème de référence `$this->anchor`**
```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.

# **2. Appels statiques à méthodes non-statiques**
```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**
```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.

# **4. Dépendances JavaScript obsolètes**
```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**
- Chargement redondant de Leaflet (déjà fait dans `display_map()`)
- Pas de lazy loading pour les cartes hors viewport
- Initialisation JavaScript lourde

# **7. Accessibilité**
- Pas d'ARIA labels sur les cartes
- Couleurs de tarifs non accessibles (contraste)
- Navigation au clavier limitée sur les cartes

# **8. Internationalisation**
- Textes codés en dur dans certains endroits
- Formats de dates non localisés partout
- Devises limitées à 4 options

  **Évolutions possibles**

# **9. Fonctionnalités avancées**
- **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)

# **10. Améliorations UX/UI**
- **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**
- **Cache** des tuiles OpenStreetMap
- **Images optimisées** pour les cartes
- **Schema.org** encore plus riche (performer, audience)
- **AMP** version pour mobile

# **12. Administration**
- **Tableau de bord** des événements
- **Statistiques** de participation
- **Export CSV** de tous les événements
- **Modération** des inscriptions

##