feat(F-128): completed feature
This commit is contained in:
39
work/artifacts/F-128/implementer.md
Normal file
39
work/artifacts/F-128/implementer.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# F-128 — CMS plantillas: contenido por defecto editable
|
||||
|
||||
## Cambios
|
||||
|
||||
### `apps/admin/src/app/(dashboard)/cms/page.tsx`
|
||||
- Añadido `defaultBody` (HTML) a cada uno de los 4 templates en el array `TEMPLATES`:
|
||||
- **home**: bienvenida + descripción de envío
|
||||
- **products**: intro sobre filtros y atributos
|
||||
- **categories**: intro sobre las categorías principales
|
||||
- **brands**: intro sobre las marcas
|
||||
- `openTemplate(tpl)` modificado: cuando no existe CMS page para el slug, ahora pre-rellena `form.body = tpl.defaultBody` (antes era `''`).
|
||||
|
||||
```diff
|
||||
const openTemplate = (tpl: typeof TEMPLATES[number]) => {
|
||||
const existing = items.find(p => p.slug === tpl.slug);
|
||||
if (existing) { openEdit(existing); return; }
|
||||
setEditing(null);
|
||||
- setForm({ slug: tpl.slug, title: tpl.defaultTitle, body: '' });
|
||||
+ setForm({ slug: tpl.slug, title: tpl.defaultTitle, body: tpl.defaultBody });
|
||||
setShowForm(true);
|
||||
};
|
||||
```
|
||||
|
||||
## Por qué `defaultBody` y no auto-crear la página
|
||||
|
||||
- El operador debe poder revisar/ajustar el contenido antes de guardarlo en DB.
|
||||
- Si auto-creáramos la página al abrir el template, cada apertura accidental ensucia la DB con contenido placeholder.
|
||||
- Con el body pre-rellenado, el botón Guardar se habilita (porque `!form.body` ya no es true) y el operador puede ajustar y guardar cuando quiera.
|
||||
|
||||
## Verificación
|
||||
|
||||
- `cd apps/admin && npx tsc --noEmit` → exit 0.
|
||||
- `cd apps/admin && NEXT_PUBLIC_API_URL=http://192.168.18.93:3000 npm run build` → exit 0.
|
||||
|
||||
## Notas
|
||||
|
||||
- Sin cambios en backend: el endpoint `/api/cms/pages` ya devuelve `body` correctamente para las páginas existentes (privacy, terms, etc.).
|
||||
- Las 6 páginas existentes (about, contact, cookies, privacy, shipping, terms) no se ven afectadas: siguen apareciendo en la lista inferior con su contenido real.
|
||||
- El operador debe reiniciar el admin (`./scripts/monolith.sh prod restart`) para desplegar el nuevo CMS.
|
||||
Reference in New Issue
Block a user