netgescon-master/docs/00-LAYOUT-MANAGEMENT-GUIDE.md

179 lines
5.7 KiB
Markdown

# GUIDA GESTIONE LAYOUT NETGESCON
**Data Creazione:** 22/07/2025
**Ultima Modifica:** 22/07/2025
**Versione:** 1.0
## PROBLEMA RICORRENTE: REGRESSIONE GRAFICA CON LOGOUT
### DESCRIZIONE PROBLEMA
Durante l'implementazione del sistema di logout, si è verificata una regressione grafica dove:
- Il logout funziona correttamente ✅
- La grafica tornava al layout vecchio (non bello) ❌
- Le pagine utilizzavano `layouts.app-universal-v2` invece di `admin.layouts.netgescon`
### CAUSA ROOT
Il problema si verifica quando si modifica il layout base e alcune pagine mantengono riferimenti al layout sbagliato.
## LAYOUT SYSTEM NETGESCON
### LAYOUT CORRETTO DA USARE
```blade
@extends('admin.layouts.netgescon')
```
### LAYOUT DA EVITARE
```blade
@extends('layouts.app-universal-v2') <!-- SBAGLIATO -->
```
### CARATTERISTICHE LAYOUT CORRETTO
- **File:** `/resources/views/admin/layouts/netgescon.blade.php`
- **Header:** Blu con menu utente e logout funzionale
- **Sidebar:** Scura con navigazione (NETGESCON, Dashboard, Stabili, Condomini, etc.)
- **Design:** Moderno e professionale
- **Framework:** Bootstrap 5
- **Logout:** Menu dropdown in alto a destra con icona utente
## PROCEDURA DI RISOLUZIONE
### STEP 1: IDENTIFICARE PAGINE CON LAYOUT SBAGLIATO
```bash
grep -r "@extends('layouts.app-universal-v2')" resources/views/
```
### STEP 2: SOSTITUIRE LAYOUT ERRATO
Per ogni file trovato, sostituire:
```blade
# DA:
@extends('layouts.app-universal-v2')
# A:
@extends('admin.layouts.netgescon')
```
### STEP 3: PULIRE CACHE
```bash
php artisan view:clear
php artisan config:clear
php artisan route:clear
```
### STEP 4: VERIFICARE RISULTATO
- Controllare che tutte le pagine abbiano la grafica bella
- Verificare che il logout funzioni
- Testare navigazione sidebar
## PAGINE SISTEMATE (22/07/2025)
### ADMIN PAGES
-`/admin/stabili/index.blade.php`
-`/admin/stabili/create.blade.php`
-`/admin/stabili/edit.blade.php`
-`/admin/stabili/show.blade.php`
-`/admin/palazzine/show.blade.php`
-`/admin/unita-immobiliari/show.blade.php`
-`/admin/dashboard.blade.php`
### SUPERADMIN PAGES
-`/superadmin/archivi/comuni.blade.php`
-`/superadmin/archivi/index.blade.php`
-`/superadmin/comuni/index.blade.php`
## COMANDO RAPIDO DI SISTEMA
### DIAGNOSI RAPIDA
```bash
# Trova tutte le pagine con layout sbagliato
grep -r "@extends('layouts.app-universal-v2')" /var/www/netgescon/resources/views/
# Conta quante pagine hanno layout sbagliato
grep -r "@extends('layouts.app-universal-v2')" /var/www/netgescon/resources/views/ | wc -l
```
### CORREZIONE AUTOMATICA (DA USARE CON ATTENZIONE)
```bash
# Sostituisce automaticamente in tutti i file
find /var/www/netgescon/resources/views/ -name "*.blade.php" -exec sed -i "s/@extends('layouts\.app-universal-v2')/@extends('admin.layouts.netgescon')/g" {} \;
# Pulisce cache dopo correzione
php artisan view:clear && php artisan config:clear && php artisan route:clear
```
## LAYOUT HEADER CON LOGOUT
### CODICE LOGOUT MENU (FUNZIONANTE)
```blade
<!-- User Dropdown Menu -->
<div class="dropdown">
<a class="nav-link dropdown-toggle d-flex align-items-center text-white text-decoration-none"
href="#" role="button" id="userDropdown" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fas fa-user-circle me-2"></i>
<span>{{ Auth::user()->name }}</span>
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">
<li><a class="dropdown-item" href="#"><i class="fas fa-user me-2"></i>Profilo</a></li>
<li><a class="dropdown-item" href="#"><i class="fas fa-cog me-2"></i>Impostazioni</a></li>
<li><hr class="dropdown-divider"></li>
<li>
<form method="POST" action="{{ route('logout') }}" class="d-inline">
@csrf
<button type="submit" class="dropdown-item">
<i class="fas fa-sign-out-alt me-2"></i>Logout
</button>
</form>
</li>
</ul>
</div>
```
### JAVASCRIPT NECESSARIO
```javascript
// Assicurarsi che Bootstrap JS sia caricato per dropdown
document.addEventListener('DOMContentLoaded', function() {
// Bootstrap dropdown auto-inizializzazione
var dropdownElementList = [].slice.call(document.querySelectorAll('.dropdown-toggle'));
var dropdownList = dropdownElementList.map(function (dropdownToggleEl) {
return new bootstrap.Dropdown(dropdownToggleEl);
});
});
```
## PREVENZIONE FUTURA
### CHECKLIST MODIFICHE LAYOUT
1. ✅ Testare logout funziona
2. ✅ Verificare grafica belle mantiene
3. ✅ Controllare tutte le pagine principali
4. ✅ Pulire cache Laravel
5. ✅ Documentare cambiamenti
### FILE DA MONITORARE
- `admin.layouts.netgescon` - Layout principale
- Tutte le blade in `resources/views/admin/`
- Tutte le blade in `resources/views/superadmin/`
### BACKUP IMPORTANTE
Prima di modifiche ai layout, backup di:
- `resources/views/admin/layouts/netgescon.blade.php`
- Lista completa pagine con layout corretto
## LOGS SESSIONE RISOLUZIONE
### 22/07/2025 - RISOLUZIONE COMPLETA
**Problema:** Regressione grafica dopo implementazione logout
**Causa:** Pagine con `@extends('layouts.app-universal-v2')`
**Soluzione:** Cambio a `@extends('admin.layouts.netgescon')`
**Pagine sistemate:** 8 admin pages + 3 superadmin pages
**Risultato:** ✅ Logout funzionale + ✅ Grafica bella mantenuta
### COMMAND LOG
```bash
# Comandi eseguiti
grep -r "@extends('layouts.app-universal-v2')" resources/views/
# Sostituzioni multiple con replace_string_in_file
php artisan view:clear && php artisan config:clear && php artisan route:clear
```
---
**NOTA:** Questo documento deve essere aggiornato ogni volta che si interviene sui layout per mantenere traccia delle modifiche e prevenire regressioni future.