71 lines
2.7 KiB
Markdown
71 lines
2.7 KiB
Markdown
# 🧠 MEMORY.md — Stato Progetto
|
|
|
|
## Goal
|
|
- 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
|
|
```
|