# Content beheer CodePress biedt twee weergaven voor content-beheer: 1. **Lijst weergave** (`/admin/content`) — klassieke tabel met filter, upload, nieuwe map/bestand per map 2. **Content editor** (`/admin/content-files`) — bestandsbrowser zijbalk + CodeMirror editor (uniform met plugin/theme-editors) Beide werken naast elkaarlijk en gebruiken dezelfde content-map. De content-editor biedt dezelfde functionaliteit als de lijst weergave, maar dan met een geneste bestandsboom zijbalk zoals de plugin- en thema-editors — voor consistente editor-ervaring. ## Content editor (content-files) ### Bestandsbrowser zijbalk - Toont de geneste bestandsboom van `content/` - Verborgen mappen (`.bak`, `.git`) en dotfiles worden overgeslagen - Klik op een bestand om het te openen in de CodeMirror editor - Mappen die het actieve bestand bevatten zijn automatisch uitgeklapt - Per map staan actie-knoppen: nieuw bestand, nieuwe map, hernoemen, verwijderen ### Bewerkbare bestandstypen `.md` (Markdown), `.php` (PHP), `.html` (HTML) — consistent met de bestaande content-edit pagina. ### Nieuw bestand aanmaken - Klik op **Nieuw bestand** (bovenaan of per map in de zijbalk) - Geef een pad op binnen content (bijv. `nl.pagina` of `blog/nl.post`) - Kies het bestandstype (Markdown/PHP/HTML) - Submappen worden automatisch aangemaakt - Frontmatter met `layout`, `author_name`, `author_email`, `created` wordt automatisch gegenereerd ### Bestand uploaden - Klik op **Upload** om bestanden naar `content/` te uploaden - Toegestaan: afbeeldingen, video, audio, PDF, ZIP, office docs, CSS, SCSS, JS, JSON, HTML, MD - Path-traversal bescherming: doelmap moet binnen `content/` blijven ### Bestand verplaatsen / verwijderen - In de bestandsboom heeft elk bestand een verplaats-knop (pijlen-icoon) en een verwijder-knop (prullenbak) - **Verplaatsen**: kies een doelmap uit de dropdown met alle mappen in content - **Verwijderen**: met bevestiging ### Mappen beheer - **Nieuwe map**: per map in de zijbalk of bovenaan - **Map hernoemen**: potlood-icoon per map - **Map verwijderen**: prullenbak-icoon per map (alleen lege mappen) ### Layout selectie Op de editor-pagina kun je de layout kiezen uit de layouts gedefinieerd in `theme.json` (template mapping). De geselecteerde layout wordt opgeslagen in de frontmatter `layout:` key. ### Plugins op pagina's - Content plugins (uit `plugin.json` met `type: "content"`) verschijnen in de plugin selectie - Kies welke plugins op de pagina draaien - De plugin selectie wordt opgeslagen in de frontmatter `plugins:` key ### Git / Backup integratie (Fase 5) Bovenaan de content-editor staan backup- en git-acties: - **Git init**: initialiseert een git repository in `content/` (als er nog geen is) - **Commit**: committed alle niet-committed wijzigingen (alleen als er een git repo is en er wijzigingen zijn) - **Backup**: link naar de backup-pagina (`/admin/content-backup`) voor ZIP backup/restore - De git status badge toont de huidige branch, of er niet-committed wijzigingen zijn, en de laatste commit ### Frontmatter De editor werkt de frontmatter live bij bij wijzigingen van layout of plugin selectie: ```markdown --- layout: left_sidebar author_name: Admin author_email: admin@example.com created: 2026-08-19 10:30:25 plugins: HTMLBlock, Navigation --- # Pagina titel Content... ``` ## Lijst weergave (content) ### Bestanden beheren - **Nieuwe map** — Mappen structuur aanmaken - **Nieuw bestand** — Pagina aanmaken (`.md`, `.php`, `.html`) - **Bewerken** — Bestaande content wijzigen in CodeMirror editor - **Hernoemen** — Bestands- of mapnamen aanpassen - **Verplaatsen** — Content verplaatsen naar andere map - **Verwijderen** — Content verwijderen - **Map hernoemen** — Map naam wijzigen ### Editor (content-edit) - **CodeMirror** met syntax highlighting (Markdown, PHP, HTML) - **Toolbar** voor snel Markdown invoeren - **Sneltoetsen**: Ctrl+S (opslaan), Ctrl+N (nieuw) ## Frontmatter De editor werkt de frontmatter live bij bij wijzigingen van layout of plugin selectie: ```markdown --- layout: left_sidebar plugins: - HTMLBlock - Navigation --- # Pagina titel Content... ```