Fix: _ mappen verborgen in frontend + image URL rewriting naar /-media/

- Bug: mappen met _ prefix (zoals _drafts, _data) werden zichtbaar in
  frontend navigatie omdat scanDirectory() alleen . en - oversloeg.
  scanDirectory(), searchInDirectory() en scanForPageTitles() skippen
  nu ook _ prefix (consistente filtering).
- Bug: images in markdown niet weergegeven. ![alt](test.svg) werd
  <img src=test.svg> (relatief -> 404) en ![alt](/content/test.svg)
  werd /content/test.svg (buiten webroot -> 404). processContent()
  herschrijft nu lokale image/link URLs naar /-media/ endpoint.
  Externe URLs (http(s)://), /-media/, /-assets/, /themes/, /plugins/,
  /admin/, data: en mailto: worden ongewijzigd gelaten.
- Release notes v2.6.2 bijgewerkt met beide bugfixes
- Pentest 30/30, WCAG 25/25
This commit is contained in:
2026-08-19 10:52:07 +00:00
parent d91a5acf9b
commit a3b9a81199
3 changed files with 44 additions and 5 deletions
+4 -1
View File
@@ -117,6 +117,8 @@ De file-upload/delete/move handler-families zijn per-scope behouden (plugin: pro
## Bug fixes
- **Thema-naam niet overgenomen bij kopiëren** — bij het aanmaken van een nieuw thema met een basisthema werd de `title` uit het basisthema's `theme.json` gekopieerd; nu wordt de `title` overschreven met de nieuwe themanaam en krijgt `README.md` een nieuwe header
- **Mappen met `_` prefix zichtbaar in frontend navigatie** — mappen zoals `_drafts`, `_data` werden in het menu getoond omdat `scanDirectory()` alleen `.` en `-` prefixen oversloeg. Nu worden ook `_`-prefix mappen overgeslagen in `scanDirectory()`, `searchInDirectory()` en `scanForPageTitles()` (consistente filtering)
- **Images in markdown niet weergegeven** — `![alt](test.svg)` werd gerenderd als `<img src="test.svg">` (relatieve URL → 404) of `![alt](/content/test.svg)` als `<img src="/content/test.svg">` (content/ staat buiten webroot → 404). `processContent()` herschrijft nu lokale image/link URLs naar de `/-media/` endpoint die bestanden uit `content/` serveert met juiste MIME-type. Externe URLs (`http(s)://`), `/-media/`, `/-assets/`, `/themes/`, `/plugins/`, `/admin/`, `data:` en `mailto:` worden ongewijzigd gelaten.
---
@@ -153,6 +155,7 @@ De file-upload/delete/move handler-families zijn per-scope behouden (plugin: pro
- `admin/theme/default/views/pages/theme-new.twig` — base-theme keuze dropdown
- `admin/theme/default/views/pages/_media-modal.twig``?theme=` scope support
- `admin/theme/default/assets/js/editor-toolbar.js``twig``htmlmixed` mode toegevoegd
- `cms/core/class/CodePressCMS.php``scanDirectory`/`searchInDirectory`/`scanForPageTitles` skippen nu `_` prefix; `processContent()` herschrijft lokale image/link URLs naar `/-media/`
- `language/{nl,en,de}/admin.php` — ~45 nieuwe vertaalstrings (theme-editor + content-editor)
- `guide/{nl,en}/admin-beheerder/thema-beheer.md` — volledig herschreven met thema-editor uitleg
- `guide/{nl,en}/admin-beheerder/content-beheer.md` — volledig herschreven met content-editor uitleg
@@ -165,7 +168,7 @@ De file-upload/delete/move handler-families zijn per-scope behouden (plugin: pro
- **Pentest**: 30/30 tests geslaagd — 0 vulnerabilities
- **WCAG 2.1 AA accessibility**: 25/25 tests geslaagd — 100% compliance
- **PHP lint**: alle bestanden schoon (geen syntax errors)
- **curl tests**: alle nieuwe routes getest (aanmaken, bewerken, opslaan, uploaden, verwijderen, verplaatsen, map aanmaken/hernoemen/verwijderen, SCSS compileren, thema activeren/verwijderen, thema kopiëren); path-traversal pogingen (delete/new_file/upload) allemaal geblokkeerd; default/active theme bescherming geverifieerd; theme.json verwijderen/plaatsen geblokkeerd
- **curl tests**: alle nieuwe routes getest (aanmaken, bewerken, opslaan, uploaden, verwijderen, verplaatsen, map aanmaken/hernoemen/verwijderen, SCSS compileren, thema activeren/verwijderen, thema kopiëren); path-traversal pogingen (delete/new_file/upload) allemaal geblokkeerd; default/active theme bescherming geverifieerd; theme.json verwijderen/plaatsen geblokkeerd; image-URL rewriting geverifieerd (relatief, /content/, subdir, extern ongewijzigd); `_`-map niet in frontend navigatie
---