Plugin internationalisatie: plugins hebben eigen language/ mappen. Systeem plugins volgen admin taal (admin.php), content plugins volgen content taal (site.php). Fallback chain: geselecteerd -> plugin default_language -> CMS default. PluginManager/AdminPluginAPI/CMSAPI uitgebreid met getPluginTranslations()/t(). plugin.json settings ondersteunen label_key/help_key/option_label_key. Plugin uniformiteit: alle 6 plugins hebben uniforme structuur (README.md, assets/.gitkeep, language/nl|en/). plugins/README.md herschreven. guide plugin-development.md (NL+EN) volledig herschreven. Plugin editor vernieuwd: geneste bestandsbrowser zijbalk, nieuw bestand aanmaken, uploaden naar assets/, verwijderen en verplaatsen. Nieuwe routes: plugins-file-upload, plugins-file-delete, plugins-file-move. Path-traversal bescherming + protected plugins geblokkeerd. Media invoegen in editor: nieuw /admin/media-list JSON endpoint + herbruikbare _media-modal.twig include. Plugin-context scant assets/ map. editor-toolbar.js modeMap uitgebreid voor css/scss/js/json. Plugin overzicht knoppen: alleen iconen met title/aria-label. Tests: pentest 30/30, WCAG 2.1 AA 25/25.
4.2 KiB
4.2 KiB
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)