Files
glastree/MEMORY.md
T

71 lines
2.7 KiB
Markdown
Raw Normal View History

2026-06-01 22:55:50 +02:00
# 🧠 MEMORY.md — Stato Progetto
## Goal
2026-06-07 20:56:38 +02:00
- Implementare page-length selector su liste (Individui, Eventi, Email)
- Implementare CSV import per gruppi
- Implementare ICS import per eventi
- Creare script build-dist.sh per distribuzione
## Modifiche Effettuate (10 file + 3 nuovi)
### File modificati
| File | Cosa |
|------|------|
| `app/Http/Controllers/IndividuoController.php` | perPage support (20 default, clamp [10,20,25,50,100]) |
| `app/Http/Controllers/EventoController.php` | perPage + importIcs/importIcsStore (Sabre\VObject) |
| `app/Http/Controllers/GruppoController.php` | import/importStore/downloadTemplate CSV gruppi |
| `app/Http/Controllers/EmailController.php` | perPage support |
| `app/Models/Evento.php` | `uid_esterno` aggiunto a $fillable (bug fix) |
| `resources/views/individui/index.blade.php` | dropdown perPage in card-footer |
| `resources/views/eventi/index.blade.php` | dropdown perPage + pulsante Importa ICS |
| `resources/views/gruppi/index.blade.php` | pulsante Importa CSV |
| `resources/views/email/index.blade.php` | dropdown perPage in card-footer |
| `routes/web.php` | route gruppi/import, gruppi/template, eventi/import |
### File nuovi
| File | Cosa |
|------|------|
| `resources/views/gruppi/import.blade.php` | form upload CSV gruppi |
| `resources/views/eventi/import.blade.php` | form upload ICS eventi |
| `build-dist.sh` | script build distribuzione |
## Feature
### 1. Page-length selector
- **3 pagine**: Individui, Eventi, Email
- **Valori**: 10, 20, 25, 50, 100 (default 20)
- Dropdown nel card-footer con hidden fields per preservare altri query param
### 2. CSV Import Gruppi
- Stesso pattern di `IndividuoController` (import GET, importStore POST, downloadTemplate GET)
- Colonne: nome, descrizione, parent_id, diocesi_id, indirizzo_incontro, cap_incontro, città_incontro, sigla_provincia_incontro
- Fault-tolerant: skip righe vuote, log errori
### 3. ICS Import Eventi
- Usa `Sabre\VObject\Reader::read()` già in vendor/
- Mapping: SUMMARY→nome_evento, DESCRIPTION→descrizione, DTSTART→data_specifica+ora_inizio, DTEND→durata_minuti, LOCATION→luogo_indirizzo, UID→uid_esterno
- Dedup via uid_esterno
- RRULE: import come evento singolo con prima occorrenza
### 4. Script build-dist.sh
- Genera `glastree-YYYYMMDD_HHMM.tar.gz` (~26MB)
- Include: sorgenti, vendor (production), Dockerfile, docker-compose, install.php, install.sql
- Esclude: .git, node_modules, tests, cache, storage content, vendor/docs/tests
## Installazione su server remoto
```bash
# Estrarre
tar xzf glastree-20260607_2052.tar.gz
# Configurare
cp .env.example .env
php artisan key:generate
php artisan storage:link
# Opzione A — Docker
docker compose up -d
# Opzione B — Apache nativo (MySQL)
php install.php
```