5.0 KiB
5.0 KiB
🧠 MEMORY.md — Stato Progetto
Obiettivo
App gestionale Laravel 13 con AdminLTE 4 per gestione Persone e Gruppi.
Funzionalità Implementate
Page-length selector
- 4 pagine: Individui, Eventi, Email, Gruppi
- Valori: 10, 20, 25, 50, 100 (default 20)
- Dropdown nel card-footer con campi hidden per preservare query params
- GruppoController: usa
LengthAwarePaginatorper paginare la collezione ordinata gerarchicamente
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, try/catch su ogni riga
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
build-dist.sh (script di distribuzione)
- Genera
glastree-YYYYMMDD_HHMM.tar.gz - Include: sorgenti, vendor (production)
- Esclude: .git, node_modules, tests, cache, storage content, vendor/docs/tests, Docker
- Istruzioni post-estrazione complete: mkdir, permessi, configurazione, cache clear
Bug Fix Recenti
2026-06-07 — Colonne mancanti in eventi e gruppo_individuo
descrizione_eventoeis_incontro_gruppomancanti in install.sql → creata migration + ALTER TABLEruolo_nel_gruppomancante in install.sql per pivotgruppo_individuoVistaReport.php: aggiuntois_defaulta$fillable
2026-06-08 — build-dist.sh: "provide valid cache path" su server remoto
Problema: Le esclusioni in build-dist.sh usavano --exclude='storage/framework/cache' (e simili per sessions, views, logs), che escludevano l'intera directory dall'archivio. Dopo l'estrazione, le directory necessarie a Laravel non esistevano.
Fix:
- Cambiati exclude patterns per contenuti soltanto (non la directory):
--exclude='storage/framework/cache/*'(non/cache)--exclude='storage/framework/sessions/*'--exclude='storage/framework/views/*'--exclude='storage/logs/*'--exclude='storage/debugbar/*'
- Aggiunte esclusioni per upload utente:
--exclude='storage/app/public'--exclude='storage/app/private'
- Creato
.gitignoreinstorage/framework/views/(mancante) - Istruzioni post-estrazione riscritte con:
mkdir -pper tutte le directory necessarie (cache, sessions, views, logs, public, backups, documenti, bootstrap/cache)chmod -R 775echown -R www-data:www-dataper permessiphp artisan config:clear,route:clear,view:clear
Problema 419 (Page Expired) su Produzione
Il codice NON ha errori di CSRF — tutte le form hanno @csrf. Il problema è configurazione sessione del server:
storage/framework/sessions/non scrivibile dal web serverAPP_URLin.envnon corrisponde all'URL realeSESSION_SECURE_COOKIE=truema sito in HTTP
Soluzione:
chmod -R 775 storage/framework/sessions
php artisan config:clear
2026-06-08 — build-dist.sh: impossibilità salvare logo su server remoto
Problema:
public/storageera un symlink assoluto (/var/www/html/glastree/storage/app/public) incluso nell'archivio → all'estrazione su altro server puntava a path inesistente.php artisan storage:linkfalliva perché il symlink rotto esisteva già.- Sottodirectory
logos/,documenti/eventi/,avatars/gruppi/non create dalmkdir -p.
Fix:
- Aggiunto
--exclude='public/storage'al tar — il symlink va ricreato sul target. - Aggiunto
rm -f public/storageprima diphp artisan storage:linkper evitare conflitto. - Usato
ln -sf ../storage/app/public public/storage(invece diphp artisan storage:link --relativeche richiedesymfony/filesystemnon sempre presente). - Aggiunte al
mkdir -ple sottodirectory mancanti:storage/app/public/logos(logo upload)storage/app/public/documenti/eventi(event documenti)storage/app/private/avatars/gruppi(avatar gruppi)
- Aggiunta creazione
.gitignoreinstorage/app/public/(placeholder Laravel).
Fix form annidato salvataggio email
2026-06-08 — Problema: Il form di DELETE era annidato dentro il form di SAVE in entrambe le pagine:
resources/views/impostazioni/index.blade.phpresources/views/admin/email-settings/index.blade.php- HTML invalido: il browser chiudeva implicitamente il form SAVE all'apertura del form DELETE, causando l'invio alla route sbagliata.
Fix: Spostato il form DELETE fuori dal form SAVE, separato in un div autonomo.
DiagnoseEmail Command
php artisan diagnose:email— controlla APP_KEY, tabella email_settings, record, decrittazione password, sender_accounts, log errori, estensioni PHP.
Prossimi Passi
- (nessuno — in attesa di nuove richieste)