- Bug: dashboard toonde 0 content (AdminPluginAPI::getContentDir() gaf relatief pad terug zonder normalisatie) - Dynamische pad-resolutie: PluginAPIInterface uitgebreid met getProjectRoot/getContentDir/getPluginsDir/getVersionInfo; CMSAPI en AdminPluginAPI implementeren deze universeel - public/index.php media-serving gebruikt $config['content_dir'] i.p.v. hardcoded /content - Navigation en Logs plugins halen paden via de API i.p.v. hardcoded dirname(__DIR__) - WordPress-stijl docblocks toegevoegd voor alle classes, methods, properties en functies (~450 docblocks, @since 2.6.5) - Security: hardcoded plaintext-wachtwoord 'admin' verwijderd uit AdminAuth.php; bij eerste installatie wordt een cryptografisch veilig wachtwoord gegenereerd (random_bytes, 16 tekens) en eenmalig op het inlogscherm getoond - Security: git-geschiedenis schoongemaakt (admin.json, admin.json.example, admin-console/config/admin.json verwijderd uit alle commits; filter-branch over alle branches + tags, gc --prune --aggressive) - README.md, README.en.md, AGENTS.md bijgewerkt - Test-scripts bijgewerkt naar clean-URL structuur + actuele ARIA-waarden - Versie verhoogd naar 2.6.5 - Tests: pentest 29/29, WCAG 25/25, functioneel 16/16, enhanced 25/25
CodePress CMS Plugins
Deze map bevat alle plugins voor de CodePress CMS. Elke plugin heeft zijn eigen submap.
Plugin overzicht
| Plugin | Type | Essentieel | Beschrijving |
|---|---|---|---|
| Dashboard | system | ja | Site informatie, content statistieken en plugin overzicht op het dashboard |
| GeoIPInfo | system | nee | GeoIP-informatie (IP adres en land) in admin |
| HTMLBlock | content | nee | Custom HTML-blok in de sidebar van content-pagina's |
| Logs | system | nee | Admin activiteitlogs en front-end request logs met filter tabs |
| Navigation | content | ja | Navigatie voor handleidingen en content (beschermd) |
| Statistics | system | nee | Bezoekersstatistieken: views, unieke bezoekers, landen, top pagina's |
Elke plugin heeft een eigen README.md met specifieke documentatie.
Plugin structuur (uniform)
Elke plugin-map heeft de volgende structuur:
PluginName/
├── PluginName.php # Hoofd plugin class (naam = mapnaam)
├── plugin.json # Plugin metadata + instellingen-schema
├── README.md # Plugin documentatie
├── config.json # Optionele runtime configuratie (overschrijft defaults)
├── assets/ # Optionele CSS/JS/SCSS (.gitkeep als leeg)
│ ├── css/
│ └── scss/
└── language/ # Vertalingen
├── nl/
│ ├── admin.php # Admin labels (systeem plugins)
│ └── site.php # Front-end labels (content plugins)
└── en/
├── admin.php
└── site.php
plugin.json velden
| Veld | Waarde | Beschrijving |
|---|---|---|
name |
string | Weergavenaam in admin |
version |
string | Versienummer |
author |
string | Auteur |
description |
string | Korte beschrijving |
type |
"system" of "content" |
Systeem (blauwe badge) of content (groene badge) |
essential |
boolean | Essentiële plugins kunnen niet worden bewerkt/verwijderd |
hasConfig |
boolean | Toont een Config-knop in admin |
default_language |
string | Fallback taal voor plugin-vertalingen (bijv. nl) |
settings |
array | Instellingen-schema (zie hieronder) |
Instellingen-schema
Elke instelling in settings ondersteunt:
| Veld | Beschrijving |
|---|---|
key |
Instelling-sleutel (opgeslagen in config.json) |
type |
text, checkbox, number, select, multi-select |
default |
Standaardwaarde |
label |
Hardcoded label (fallback als geen label_key) |
help |
Hardcoded help-tekst (fallback als geen help_key) |
label_key |
Sleutel in plugin language/<lang>/admin.php voor vertaald label |
help_key |
Sleutel in plugin language/<lang>/admin.php voor vertaalde help-tekst |
option_label_key |
Sleutel naar een array met optie-labels voor select/multi-select |
options |
Opties voor select/multi-select ({waarde: label}) |
Taal support
- Systeem plugins volgen de geselecteerde admin taal (uit
config.admin_language). - Content plugins volgen de geselecteerde content taal (uit de URL of
config.language.default).
Fallback chain voor plugin-vertalingen:
- Geselecteerde taal (
language/<lang>/admin.phpofsite.php) - Plugin
default_language(plugin.json) - CMS
language.default - Lege array (sleutel wordt ongewijzigd getoond)
Plugins halen hun vertalingen op via de API:
- Systeem plugins:
$this->api->getPluginTranslations('PluginName')(AdminPluginAPI) - Content plugins:
$this->api->getPluginTranslations('PluginName')(CMSAPI)
Uitgebreide documentatie
Zie de handleiding voor uitgebreide plugin development documentatie:
guide/nl/codepress-developer/plugin-development.mdguide/en/codepress-developer/plugin-development.md
Installatie
- Maak een nieuwe map in
plugins/(mapnaam = plugin class naam) - Voeg de hoofd plugin class toe als
<Naam>.php - Maak een
plugin.jsonmet metadata en (optioneel) instellingen-schema - Voeg een
README.mdtoe met plugin documentatie - Voeg
language/<lang>/admin.phpofsite.phptoe voor vertalingen - Schakel de plugin in via
enabled_pluginsinconfig.json(of via de admin Plugins-pagina)