# Sophia customizations versioned

## Ambito
Questo documento elenca solo le customizzazioni Sophia versionate presenti nel repository Yii.

Regole applicate:
- baseline: `327a486` (`yii_1.1.23`);
- inclusi solo commit presenti nella history Git;
- escluse eventuali modifiche locali non committate.

## Lettura della matrice
- `commit` = hash breve del commit che ha introdotto o modificato la customizzazione;
- `ticket` = riferimento ticket presente nel messaggio commit;
- `impatto` = effetto tecnico osservabile sul framework o sulla UI.

## Matrice commit

| file | commit | ticket | impatto |
|---|---|---|---|
| `framework/web/CPagination.php` | `af68372` | `#0001616` | Porta la paginazione di default sotto `CPagination.php` tramite costante di framework, spostando la configurazione fuori dal `config_frm`. |
| `framework/web/CPagination.php` | `506e38f` | `#0002230` | Rafforza la gestione della costante `DEFAULT_PAGINATION_ROWS`: controllo di esistenza e fallback esplicito con eccezione se manca la definizione. |
| `framework/web/widgets/captcha/CCaptchaAction.php` | `dc2542d` | `#0001661` | Ripristina la visualizzazione del captcha nel recupero password con `ob_clean()` prima degli header immagine. |
| `framework/zii/widgets/assets/gridview/jquery.yiigridview.js` | `d304668` | `#0001841` | Introduce la gestione dei form di filtri avanzati nella griglia. |
| `framework/zii/widgets/assets/gridview/jquery.yiigridview.js` | `31d825c` | `#0001841` | Raffina la prima implementazione dei filtri avanzati nella griglia. |
| `framework/zii/widgets/assets/gridview/jquery.yiigridview.js` | `31e0166` | `#0001841` | Piccolo fix sulla stessa area, in pratica un ritocco puntuale al supporto dei filtri avanzati. |
| `framework/zii/widgets/assets/gridview/jquery.yiigridview.js` | `4371cc6` | n/d | Adatta la griglia ai filtri inline quando sono presenti anche filtri di ricerca avanzata. |
| `framework/zii/widgets/assets/gridview/jquery.yiigridview.js` | `98b0aef` | n/d | Aggiunge supporto specifico ai filtri textarea nelle griglie. |
| `framework/zii/widgets/assets/gridview/jquery.yiigridview.js` | `4e9aafd` | `#0003338` | Corregge il comportamento dei form di ricerca avanzata nelle griglie admin. |
| `framework/web/helpers/CHtml.php` | `34184f4` | `#0003186` | Modifica `errorSummary()` per evitare occorrenze duplicate degli stessi messaggi di errore. |
| `framework/web/CHttpSession.php` | `6e8c646` | n/d | Aggiunge `Cache-Control: no cache` all'apertura sessione per rendere piu' affidabile il back del browser. |
| `framework/base/CErrorHandler.php` | `f005c12` | `#0004693` | In ambiente `YII_DEBUG` renderizza sempre il dettaglio dell'errore, evitando la sola `site/error`. |
| `framework/views/exception.php` | `b213644` | `#0005405` | Scrive i dettagli dell'eccezione su `Exceptions_logs.txt` prima del rendering della pagina. |
| `framework/zii/widgets/grid/CGridColumn.php` | `ac110b6` | `#0006725` `#0006747` | Introduce `footer2` e la seconda cella/footer row per le griglie. |
| `framework/zii/widgets/grid/CGridView.php` | `ac110b6` | `#0006725` `#0006747` | Aggiunge il rendering della seconda riga di footer e il relativo check `getHasFooter2()`. |

## Dettaglio per file

### `framework/web/CPagination.php`
Commit chiave:
- `af68372` per la migrazione della paginazione di default su costante;
- `506e38f` per il controllo robusto della costante.

Impatto:
- la pagina corrente, il limite e il numero di pagine non dipendono piu' solo dal config applicativo;
- se la costante manca, il framework fallisce in modo esplicito invece di degradare in modo silenzioso.

Nota operativa:
- e' una customizzazione di core framework, quindi i controller Musa che usano `CActiveDataProvider` o query paginated ereditano subito il comportamento.

### `framework/web/widgets/captcha/CCaptchaAction.php`
Commit chiave:
- `dc2542d` (`#0001661`).

Impatto:
- la risposta immagine viene ripulita prima degli header;
- si evita che output residuo rompa il captcha nelle pagine sensibili.

### `framework/zii/widgets/assets/gridview/jquery.yiigridview.js`
Commit chiave:
- `d304668`, `31d825c`, `31e0166`, `4371cc6`, `98b0aef`, `4e9aafd`.

Impatto:
- la griglia supporta filtri avanzati e filtri inline nello stesso ecosistema;
- textarea e campi complessi vengono trattati in modo specifico;
- Musa puo' usare il pattern `RenderSettings` senza perdere il comportamento AJAX della griglia.

Lettura tecnica:
- questo file e' il punto di raccordo tra view, filtri e comportamento client-side;
- le customizzazioni qui hanno effetto diretto su UX e su eventuali casi di filtro non sincronizzato.

### `framework/web/helpers/CHtml.php`
Commit chiave:
- `34184f4` (`#0003186`).

Impatto:
- `errorSummary()` non ripete lo stesso messaggio piu' volte;
- i form risultano piu' leggibili, soprattutto quando piu' regole generano lo stesso testo.

### `framework/web/CHttpSession.php`
Commit chiave:
- `6e8c646`.

Impatto:
- l'header `Cache-Control: no cache` supporta il back del browser con sessione attiva;
- riduce gli effetti di pagine stale o contenuto non aggiornato dopo redirect e login.

### `framework/base/CErrorHandler.php`
Commit chiave:
- `f005c12` (`#0004693`).

Impatto:
- in debug l'utente sviluppatore vede il dettaglio completo dell'errore;
- fuori debug resta il percorso standard di errore applicativo;
- la scelta viene fatta nel framework, non in singole action.

### `framework/views/exception.php`
Commit chiave:
- `b213644` (`#0005405`).

Impatto:
- ogni eccezione renderizzata passa anche da logging su file;
- utile per diagnosi post-mortem quando il rendering HTML non basta.

### `framework/zii/widgets/grid/CGridColumn.php` e `framework/zii/widgets/grid/CGridView.php`
Commit chiave:
- `ac110b6` (`#0006725`, `#0006747`).

Impatto:
- le griglie possono esporre un secondo footer (`footer2`);
- la view di grid deve verificare sia il footer standard sia il nuovo footer esteso;
- il comportamento e' pensato per casi di consuntivazione con riepiloghi multipli.

## Sintesi per area

### Griglie
Le customizzazioni piu' invasive sono sulla parte grid:
- `jquery.yiigridview.js` per i filtri avanzati;
- `CGridColumn.php` e `CGridView.php` per footer multipli.

Effetto sul progetto Musa:
- le griglie admin possono combinare filtri inline, ricerca avanzata e componenti custom come `TbSelect2` senza spezzare il rendering standard.

### Errori
La catena error handling e' stata rinforzata in tre punti:
- `CErrorHandler.php` decide cosa mostrare;
- `exception.php` scrive i dettagli su log;
- `CHtml.php` riduce il rumore dei messaggi duplicati.

### Paginazione e sessione
La paginazione usa una costante di framework e la sessione applica cache-control esplicito.

Effetto sul progetto Musa:
- comportamento uniforme tra moduli;
- minori differenze tra browser e ambienti;
- meno logica duplicata nel `config` applicativo.

