# Bootstrap Pagina e Migrazione MVC4

Usa questa reference per due ingressi vicini:
- creare una nuova pagina partendo dai template locali della skill;
- migrare una pagina esistente da `mvc3` a `mvc4`.

## Fonti locali da privilegiare

- `../templates/shared/template.cfm`
- `../templates/mvc3/`
- `../templates/mvc4/`
- `post-fix-checklist.md`

`docs-node` e le guide sorgente servono solo come verifica aggiuntiva, non come prerequisito operativo.

## Input minimi da chiedere

- livello della pagina;
- nome e path completo della `.cfm`;
- path completo del manager `.cfc`;
- versione manager richiesta: `mvc3` o `mvc4`;
- tipologia pagina: `ele`, `ges`, `testata`, oppure variante xgrid;
- factory del livello corretto;
- per pagine core Platform 7+: ramo di product tree / perimetro.

## Regole base di bootstrap

- La `.cfm` e' solo contenitore: non inserire logica applicativa nella pagina.
- La logica va nel manager `.cfc`, in modo da mantenere ridefinibilita' lato client.
- Aggiornare `cfg/gr*_map_pages.cfm` del livello corretto.
- Creare `.cfm` e manager partendo dai template locali inclusi nella skill.
- Aggiornare la factory del livello corretto con la chiave del nuovo manager.
- Completare almeno `init*Fields` e `init*Grid`.
- Gestire il titolo pagina nei file `pagetitle.{lingua}.properties`.

## Selezione template locale

- nuova pagina `ele`: `../templates/mvc4/ele.cfc` oppure `../templates/mvc3/ele.cfc`
- nuova pagina `ges`: `../templates/mvc4/ges.cfc` oppure `../templates/mvc3/ges.cfc`
- nuova pagina `testata`: `../templates/mvc4/testata.cfc` oppure `../templates/mvc3/testata.cfc`
- `.cfm` base: `../templates/shared/template.cfm`

Per i casi xgrid usa la reference `xgrid-and-mvc-variants.md`.

## Checklist sintetica migrazione `mvc3 -> mvc4`

- Ripartire sempre dal template aggiornato, non rifattorizzare in place la vecchia struttura.
- Far estendere il manager a `framework.gr_cfc.managers.mvc4`.
- Impostare `my.mgrVersion=4`.
- Rimuovere il `title` dalla `render()` e spostare il titolo in `pagetitle.*.properties`.
- Spostare condizioni di visibilita' da `visible_condition` a `visible.field` / `visible.data`.
- Rimuovere logiche da `init*ButtonsGrid` e `initTabGrid` che ora devono usare `fields_cfg`.
- Eliminare parametri non piu supportati in `getDialogs` e `init*Dialog`.
- Verificare JS legacy: `hidden` -> `d-none`, `disabled` -> `setFieldDisabled(...)`.
- Se la pagina e' core o client/core, aggiornare il perimetro / product tree.

## Verifiche minime

- stessa esecuzione base della pagina pre/post migrazione;
- nessuna logica applicativa residua nella `.cfm`;
- manager risolto dalla factory corretta;
- titolo pagina risolto tramite `pagetitle`;
- lint in audit e controlli post-fix secondo `post-fix-checklist.md`.
