Explorar el Código

Upload dei font da parte dell'utente

main
Lorenzo Pollutri hace 3 semanas
padre
commit
1621e4c73f
Se han modificado 2 ficheros con 8 adiciones y 8 borrados
  1. +6
    -6
      README.md
  2. +2
    -2
      app/admin/page.tsx

+ 6
- 6
README.md Ver fichero

@@ -111,7 +111,7 @@ Tutte le impostazioni globali sono **flag build-time** nel file [`lib/config.ts`
| Variabile | Default | Descrizione |
|---|---|---|
| `EXTERNAL_LINK_ENABLED` | `true` | Mostra il tipo di card "External Link" nel menu dell'admin. Le card di quel tipo già esistenti restano comunque visibili e cliccabili anche se messo a `false`. |
| `FACTORY_PRESET_SAVE_ENABLED` | `false` | Mostra il bottone "💾 Save as Factory Preset (dev)" nell'admin (funzione developer per ricreare/aggiornare il preset). Il bottone "🏭 Factory Reset" e lo stato del preset sono **sempre visibili** indipendentemente da questo flag — vedi [Factory Preset](#factory-preset-developer). L'endpoint API `POST /api/admin/factory-preset` resta attivo a prescindere. |
| `FACTORY_PRESET_SAVE_ENABLED` | `false` | Mostra il bottone "Save as Factory Preset (dev)" nell'admin (funzione developer per ricreare/aggiornare il preset). Il bottone "Factory Reset" e lo stato del preset sono **sempre visibili** indipendentemente da questo flag — vedi [Factory Preset](#factory-preset-developer). L'endpoint API `POST /api/admin/factory-preset` resta attivo a prescindere. |
| `DEFAULT_FONT` | `''` | Font di default se il portale non ne ha impostato uno. Stringa vuota = font di sistema (Arial). Altrimenti il nome esatto di un file in `data/fonts/` (es. `"Geist-Variable.woff2"`). |
| `TEXT_LIMITS` | vedi sotto | Limiti caratteri di tutti i campi testuali. |
| `UPLOAD_LIMITS` | vedi sotto | Dimensioni massime upload per famiglia di file. |
@@ -281,13 +281,13 @@ Lo zip così prodotto è caricabile direttamente dal pulsante "Restore from ZIP"

Stato "di fabbrica" ripristinabile con un click. Pensato per preparare preset standard (es. banner + icona + una card di redirect) da distribuire a più macchine MajorNet.

**La sezione è sempre visibile in admin.** Il bottone "🏭 Factory Reset" e lo stato del preset corrente sono mostrati sempre (è un'operazione lecita per qualunque amministratore). Il bottone "💾 Save as Factory Preset (dev)" — che riscrive il preset di fabbrica — è invece **gated** da `FACTORY_PRESET_SAVE_ENABLED = true` in `lib/config.ts` (default `false`): tienilo attivo solo sulla macchina di sviluppo dove prepari/aggiorni il preset. Gli endpoint API restano comunque attivi a prescindere dal flag.
**La sezione è sempre visibile in admin.** Il bottone "Factory Reset" e lo stato del preset corrente sono mostrati sempre (è un'operazione lecita per qualunque amministratore). Il bottone "Save as Factory Preset (dev)" — che riscrive il preset di fabbrica — è invece **gated** da `FACTORY_PRESET_SAVE_ENABLED = true` in `lib/config.ts` (default `false`): tienilo attivo solo sulla macchina di sviluppo dove prepari/aggiorni il preset. Gli endpoint API restano comunque attivi a prescindere dal flag.

Il preset è un file fisso: **`factory/preset.zip`** alla radice del progetto (fuori da `data/`, quindi non viene toccato dai reset; fuori da `public/`, quindi non scaricabile via web).

### Dall'interfaccia
- **🏭 Factory Reset** — sempre visibile. Ripristina tutto al preset (disabilitato se il preset non esiste). La `data/` precedente resta come `data.bak-<timestamp>/`.
- **💾 Save as Factory Preset (dev)** — visibile solo con `FACTORY_PRESET_SAVE_ENABLED = true`. Congela lo stato corrente in `factory/preset.zip`.
- **Factory Reset** — sempre visibile. Ripristina tutto al preset (disabilitato se il preset non esiste). La `data/` precedente resta come `data.bak-<timestamp>/`.
- **Save as Factory Preset (dev)** — visibile solo con `FACTORY_PRESET_SAVE_ENABLED = true`. Congela lo stato corrente in `factory/preset.zip`.

### Da riga di comando / API
URL con `BASE_PATH = '/cards'` (default). Se hai `BASE_PATH = ''` togli il `/cards` dal path.
@@ -310,7 +310,7 @@ zip -r ../factory/preset.zip cards.txt portals.txt uploads fonts -x "uploads/.tm
```

### Distribuzione su altre macchine
Copia `factory/preset.zip` sulle altre installazioni: l'admin lo vedrà subito in Settings → Factory Preset come "Current preset: present · X MB · data/ora", e potrà cliccare 🏭 Factory Reset per allinearsi allo stato standard. Non serve attivare `FACTORY_PRESET_SAVE_ENABLED` sulle macchine target — quella flag riguarda solo la creazione del preset, non il suo ripristino.
Copia `factory/preset.zip` sulle altre installazioni: l'admin lo vedrà subito in Settings → Factory Preset come "Current preset: present · X MB · data/ora", e potrà cliccare Factory Reset per allinearsi allo stato standard. Non serve attivare `FACTORY_PRESET_SAVE_ENABLED` sulle macchine target — quella flag riguarda solo la creazione del preset, non il suo ripristino.

---

@@ -581,4 +581,4 @@ rm -rf .next && npm run build

**Recupero dopo un ripristino sbagliato**: lo stato precedente è in `data.bak-<timestamp>/`. Ferma il server, rinomina quella cartella in `data/` e riavvia.

**Il bottone "Save as Factory Preset (dev)" non compare**: è dietro il flag `FACTORY_PRESET_SAVE_ENABLED` in `lib/config.ts`. Mettilo a `true` e ricostruisci (di norma lo si tiene `false` in produzione). Il bottone "🏭 Factory Reset" e lo stato del preset restano comunque sempre visibili.
**Il bottone "Save as Factory Preset (dev)" non compare**: è dietro il flag `FACTORY_PRESET_SAVE_ENABLED` in `lib/config.ts`. Mettilo a `true` e ricostruisci (di norma lo si tiene `false` in produzione). Il bottone "Factory Reset" e lo stato del preset restano comunque sempre visibili.

+ 2
- 2
app/admin/page.tsx Ver fichero

@@ -1009,7 +1009,7 @@ export default function AdminDashboard() {
title={factoryPreset?.exists ? undefined : 'No preset configured'}
className="bg-red-700 text-white px-5 py-2.5 rounded-lg hover:bg-red-800 font-medium shadow-sm disabled:opacity-60 disabled:cursor-not-allowed"
>
{factoryResetting ? 'Reset in progress…' : '🏭 Factory Reset'}
{factoryResetting ? 'Reset in progress…' : 'Factory Reset'}
</button>
{FACTORY_PRESET_SAVE_ENABLED && (
<button
@@ -1019,7 +1019,7 @@ export default function AdminDashboard() {
title="Developer function: save the current state as a new factory preset"
className="bg-emerald-700 text-white px-5 py-2.5 rounded-lg hover:bg-emerald-800 font-medium shadow-sm disabled:opacity-60"
>
{savingPreset ? 'Saving…' : '💾 Save as Factory Preset (dev)'}
{savingPreset ? 'Saving…' : 'Save as Factory Preset (dev)'}
</button>
)}
</div>


Cargando…
Cancelar
Guardar