Files
CodePress/TODO.md
Edwin Noorlander e14f418e63 Bump version to 1.6.0, update docs and guides to match current project state
- 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
2026-06-24 17:15:14 +02:00

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 ![alt](url), 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-rename route/handler/template

Thema's

  • Thema's in subdirectory themes/naam/theme.json (ipv themes/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:40 in 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/false naar plugin config.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 Linuxstat() 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, $searchResults zouden 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. .bak bestanden)
  • 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)