- version.php: 1.5.0 → 1.6.0 + changelog for media browser, editor, theme management, content move/rename, /-media/ prefix - README.md/README.en.md: complete rewrite with current project structure, config format, admin features, CodeMirror, themes, quick start - guide/nl.codepress.md, guide/en.codepress.md: comprehensive update matching all current admin routes, features, and project layout - TODO.md: compiled from docs/TODO.md with completed/future items
5.6 KiB
5.6 KiB
CodePress TODO
✅ Voltooid (recent)
Media & Editor
- Media browser modal met upload, thumbnail grid, en size-prompt
- Media knop in editor toolbar voor alle modes (md/html/php)
- Recursieve scan van
content/voor media bestanden (ipv alleen-assets/) /-media/URL prefix voor media bestanden (consistente routing, geen special cases)/-assets/blijft werken voor backward compatibility- Size prompt voor afbeeldingen: Markdown
, HTML/PHP<img>met width/height - Editor change detectie:
editor.on('change', ...)werkt nu correct - "Terug" knop verandert naar rode "Annuleren" bij ongewijzigde wijzigingen (content-edit + content-new)
- Upload knop disabled tot bestand geselecteerd
- "Aanmaken" knop disabled tot bestandsnaam ingevuld
- Editor mode switching in content-new werkt via
switchMode()(mode + toolbar + data-ext)
Content Management
- Inline rename veld in content-edit pagina (geen aparte rename knop)
- Bestanden en mappen verplaatsen (content-move)
- Breadcrumb toont geen
.meer (dirname check op PHP niveau) - Verwijderde aparte
content-file-renameroute/handler/template
Thema's
- Thema's in subdirectory
themes/naam/theme.json(ipvthemes/naam.json) - Thema CRUD in admin (aanmaken, activeren, bewerken, verwijderen)
- File upload voor thema achtergrond afbeeldingen
Security & Code Quality (docs/TODO.md)
- Path traversal fix (
realpath()+ prefix-check) - JWT secret fallback verwijderd
executePhpFile()pad-restrictie- IP spoofing fix in MQTTTracker
- Debug uitgezet in admin config
- Cookie security (Secure/HttpOnly/SameSite)
- Dead code verwijderd
htmlspecialchars()op bestandspad gecorrigeerd- Ongebruikte methode
scanForPageNames()verwijderd - Breadcrumb titels geescaped
- Taalparameter in zoekresultaat-URLs
- Operator precedence bug in MQTTTracker
- Hardcoded strings vervangen
- HTML lang attribuut dynamisch gemaakt
- console.log verwijderd
- Sidebar toggle aria attributes
🔴 Nog openstaand
Kritiek
- Plugin auto-loading — Elke map in
plugins/wordt blind geladen zonder allowlist of validatie (PluginManager.php:40in docs/TODO.md)
Hoog
- autoLinkPageTitles() — Regex kan geneste
<a>tags produceren (CodePressCMS.php) - MQTT wachtwoord — Credentials in plain text JSON (
MQTTTracker.php) - Markdown editor — WYSIWYG/split-view Markdown editor integreren in content-edit (bijv. EasyMDE, SimpleMDE, of Toast UI Editor). Live preview, toolbar met opmaakknoppen, drag & drop afbeeldingen
- Plugin activeren/deactiveren — Toggle knop per plugin in admin Plugins pagina. Schrijft
enabled: true/falsenaar pluginconfig.json - Plugin API — Uitgebreide API voor plugins zodat ze kunnen inhaken op CMS events (hooks/filters):
onPageLoad,onBeforeRender,onAfterRender,onSearch,onMenuBuild
Medium
- Taalwisselaar verliest pagina — Wisselen van taal navigeert altijd naar homepage (
header.mustache) - ctime is geen creatietijd op Linux —
stat()ctime is inode-wijzigingstijd (CodePressCMS.php) - getGuidePage() dupliceert markdown parsing — Zelfde CommonMark setup als
parseMarkdown() - HTMLBlock ontbrekende
</div>— Niet-gesloten tags bij null-check - formatDisplayName() redundante logica — Dubbele checks en overtollige str_replace
- Plugin configuratie editor — Per-plugin config.json bewerken vanuit admin panel
- Admin activity log — Logboek van alle admin acties (wie deed wat wanneer) met viewer in dashboard
- Wachtwoord wijzigen eigen account — Apart formulier voor ingelogde gebruiker om eigen wachtwoord te wijzigen (met huidig wachtwoord verificatie)
- Admin thema — Admin sidebar kleur overnemen van site thema config (
header_color) - Map aanmaken/verwijderen — Directory management in admin Content pagina
- Bestand uploaden — Uploaden naar andere mappen dan
-assets/via admin Content pagina - Content preview — Live preview van Markdown/HTML content naast de editor
Laag
- Geen type hints — Ontbrekende type declarations op properties en methoden
- Public properties —
$config,$currentLanguage,$searchResultszouden private moeten zijn - Inline CSS — ~250 regels statische CSS in template i.p.v. extern bestand
- style.css is Bootstrap — Bestandsnaam is misleidend, Bootstrap wordt mogelijk dubbel geladen
- Geen error handling op
file_get_contents()— Meerdere calls zonder return-check - Logger slikt fouten —
@file_put_contents()met error suppression - Logger tail() leest heel bestand — Geheugenprobleem bij grote logbestanden
- Externe links missen
rel="noreferrer" - Zoekformulier mist aria-label
- mobile.css override Bootstrap utilities met
!important - Content versioning — Simpele file-based backup bij elke save (bijv.
.bakbestanden) - Zoeken in admin — Zoekfunctie binnen de admin content browser
- Drag & drop — Bestanden herordenen/verplaatsen via drag & drop
- Keyboard shortcuts — Ctrl+S om op te slaan in editor, Ctrl+N voor nieuw bestand
- Dark mode — Admin panel dark mode toggle
- Responsive admin — Admin sidebar inklapbaar op mobiel (nu is het gestacked)
- ARIAComponents.php parse error — Bestaande PHP parse error op regel 67 (
syntax error, unexpected double-quote mark)