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
CodePress CMS Plugins
Deze map bevat plugins voor de CodePress CMS. Elke plugin heeft zijn eigen submap met de plugin code.
Plugin Structuur
Elke plugin map moet het volgende bevatten:
PluginName/
├── PluginName.php # Hoofd plugin bestand
├── README.md # Plugin documentatie (optioneel)
├── config.json # Plugin configuratie (optioneel)
└── assets/ # CSS, JS, images (optioneel)
├── css/
├── js/
└── images/
Beschikbare Plugins
HTMLBlock
Toont een custom HTML blok in de sidebar met pagina-informatie en navigatie.
Locatie: HTMLBlock/HTMLBlock.php
Functies:
- Toont huidige pagina informatie
- Dynamische navigatie
- Bestandsinformatie
- Interactive controls
Plugin Development
Basis Plugin Class
<?php
class MyPlugin
{
private ?CMSAPI $api = null;
public function setAPI(CMSAPI $api): void
{
$this->api = $api;
}
public function getSidebarContent(): string
{
return '<div>Mijn plugin content</div>';
}
}
Beschikbare API Methodes
getCurrentPage()- Huidige pagina datagetCurrentPageTitle()- Huidige pagina titelgetMenu()- Menu structuurgetConfig($key)- Configuratie waardestranslate($key)- VertalingengetCurrentLanguage()- Huidige taalisHomepage()- Check of homepagegetCurrentPageFileInfo()- BestandsinformatiecreateUrl($page, $lang)- URL generatie
Plugin Hooks
Plugins kunnen de volgende methodes implementeren:
getSidebarContent()- Content voor sidebarsetAPI(CMSAPI $api)- API injectie
Configuratie
Plugins kunnen een config.json bestand hebben:
{
"enabled": true,
"settings": {
"option1": "value1",
"option2": "value2"
}
}
Installatie
- Maak een nieuwe map in
plugins/ - Plaats de plugin class in
PluginName/PluginName.php - Optioneel: voeg README.md en config.json toe
- De plugin wordt automatisch geladen door de CMS
Best Practices
- Gebruik
htmlspecialchars()voor output - Implementeer
setAPI()voor CMS toegang - Volg PSR-12 coding standards
- Gebruik namespace indien nodig
- Documenteer je plugin met README.md