Files
E.Noorlander 1492dcf71f v2.6.0: Content backup/git versioning, plugin type system, docs update
New features:
- ContentBackup class with ZIP backup/restore and git versioning
- Admin backup & restore page (content-backup.twig) with git init/commit/log/restore
- Plugin type system: system (blue) vs content (green) with visual badges
- PluginAPIInterface + AdminPluginAPI for plugin architecture
- Essential plugin flag (cannot edit/deactivate/delete)

Improvements:
- Consolidated enabled_plugins config (removed plugins.enabled)
- Removed Analytics/Logging toggles from admin config page
- Fixed Dashboard plugin Twig comments rendered as text
- Updated 20 guide files (NL+EN): configuratie, plugins, plugin-development,
  core-classes, theme-json, layouts, scss-styling, admin-beheerder, nieuw-thema, architectuur
- Improved accessibility test script (grep -E, min/max checks)

Cleanup:
- Removed unused classes: ARIAComponents, AccessibilityManager, ContentSecurityPolicy, etc.
- Removed vendor packages: mustache/mustache, php-mqtt/client
- Removed old templates: logs.twig, statistics.twig (now plugins)
- Moved language files to language/ directory

Tests:
- Pentest: 30/30 passed, 0 vulnerabilities
- WCAG 2.1 AA: 25/25 passed, 100% compliance
2026-08-15 19:21:04 +02:00

5.2 KiB

CodePress CMS v2.6.0 — Release Notes

Release datum: 2026-08-15
Codename: Atlas
Status: stable


Nieuwe features

Content backup & restore met git versioning

  • Nieuwe ContentBackup class (cms/core/class/ContentBackup.php) voor ZIP backup/restore en git-based versiebeheer van de content map
  • Admin pagina Backup & Restore (/admin/content-backup) met:
    • ZIP download van de volledige content-map
    • Restore vanuit een geüploade ZIP (met automatische backup van huidige content)
    • Git init, commit, log en restore-to-commit functionaliteit
  • Content git repository staat los van de CodePress hoofd-repo (content/ is in .gitignore)
  • 5 nieuwe admin routes: content-backup, content-restore, content-git-init, content-git-commit, content-git-restore
  • Backup-knop toegevoegd op de content beheer pagina

Plugin type systeem

  • Plugins worden nu onderscheiden als system (blauwe badge, bi-gear-fill) of content (groene badge, bi-puzzle-fill)
  • plugin.json ondersteunt nu type, essential en hasConfig velden
  • Essentiële plugins (zoals Navigation) kunnen niet worden bewerkt, gedeactiveerd of verwijderd
  • Visueel onderscheid op de plugins-pagina met gekleurde card-borders en type-badges
  • handlePlugins() in admin.php leest het type veld uit zowel plugin.json als de PHP class

Plugin API architectuur

  • Nieuwe PluginAPIInterface interface voor consistente plugin API toegang
  • Nieuwe AdminPluginAPI class voor admin-context plugins (light-weight, alleen config toegang)
  • CMSAPI en AdminPluginAPI implementeren beide PluginAPIInterface
  • Admin sidebar toont alleen menu-items van actieve (enabled) plugins

Verbeteringen

Config

  • Dubbele enabled_plugins config opgelost: plugins.enabled verwijderd, alleen enabled_plugins op top-level in config.json
  • Analytics & Logging toggles verwijderd van de admin config pagina (instellingen blijven in config.json beschikbaar)
  • Alle admin.php handlers gebruiken nu consistent enabled_plugins i.p.v. plugins.enabled

Dashboard

  • Twig-commentaren {# ... #} verwijderd uit Dashboard plugin PHP output — deze werden als platte tekst gerenderd

Handleidingen (20 bestanden bijgewerkt, NL + EN)

  • configuratie.md — Analytics/Logging verwijderd, Homepage + Admin taal toegevoegd
  • plugins.md — Plugin types (system/content), essential flag, protected plugins gedocumenteerd
  • plugin-development.md — Volledig herschreven met juiste plugin.json velden, class-structuur, API via setAPI(), hooks, admin integratie, CSS
  • core-classes.md — Juiste paden, doAction/applyFilters i.p.v. executeHook, CMSAPI/AdminPluginAPI/AdminAuth/LogManager toegevoegd
  • theme-json.md — Juiste structuur met config.default_template en template
  • layouts.mdlayoutstemplate, default_layoutconfig.default_template
  • scss-styling.md — CSS output pad gecorrigeerd naar assets/css_compiled/
  • admin-beheerder.md — Media en Update secties toegevoegd
  • nieuw-thema.md — guide.twig toegevoegd
  • architectuur.md — Mappenstructuur uitgebreid met alle key directories

Tests

  • Accessibility test-script verbeterd: grep -E i.p.v. basic regex, min/max checks i.p.v. exacte waarden, patroon <nav[ >] i.p.v. <nav> voor tags met attributes
  • Pentest: 30/30 tests geslaagd, 0 vulnerabilities
  • WCAG 2.1 AA: 25/25 tests geslaagd, 100% compliance

Opschoning

Verwijderde ongebruikte classes

  • ARIAComponents.php, AccessibilityManager.php, AccessibleTemplate.php
  • AssetManager.php, ContentSecurityPolicy.php, EnhancedSecurity.php
  • SearchEngine.php, SimpleTemplate.php, CodePressCMS.php.backup

Verwijderde vendor packages

  • mustache/mustache — niet meer gebruikt (Twig is de template engine)
  • php-mqtt/client — niet meer gebruikt

Verwijderde templates

  • logs.twig en statistics.twig — vervangen door Logs en Statistics plugins
  • test-guide.php — verwijderd

Verwijderde bestanden

  • cms/lang/en.php, cms/lang/nl.php — verplaatst naar language/ map

Beveiliging

  • Pentest suite: 30/30 tests geslaagd (XSS, path traversal, PHP injection, null byte, command injection, template injection, HTTP header injection, information disclosure, security headers, DoS)
  • Security headers aanwezig: X-Frame-Options, Content-Security-Policy, X-Content-Type-Options
  • Geen vulnerabilities gedetecteerd

Accessibility

  • WCAG 2.1 AA: 25/25 tests geslaagd (100%)
  • ARIA landmarks aanwezig (25+ per pagina)
  • Semantic HTML structuur (header, nav, main, footer)
  • Skip-to-content links, focus indicators, screen reader support
  • Mobile viewport en touch targets aanwezig

Systeem vereisten

  • PHP >= 8.0
  • Extensies: json, mbstring
  • Optioneel: opcache (aanbevolen voor performance)
  • Git (optioneel, voor content versioning feature)
  • ZipArchive (optioneel, voor ZIP backup/restore feature)

Upgraden

  1. Maak een backup van de huidige content map
  2. Pull de nieuwe code
  3. Run composer install om dependencies bij te werken
  4. Controleer config.json — verwijder plugins.enabled als deze nog bestaat (gebruik enabled_plugins op top-level)
  5. Test de website
  6. Optioneel: initialiseer git in content/ via Admin → Backup & Restore → Git init