Bug: beschermde/essentiële plugins (Dashboard, Navigation) konden niet meer geactiveerd worden als ze uit enabled_plugins raakten. Core forceert nu laden van essential plugins (plugin.json essential: true); admin-UI toont ze altijd als Actief; toggle-handler staat aanzetten wél toe, uitzetten blijft geblokkeerd; isProtectedPlugin() dekt nu ook essential.
3.7 KiB
v2.6.6 (Lyra) — Essential-plugins altijd laden
Releasedatum: 2026-08-27 Codename: Lyra Status: stable
Samenvatting
Bug-fix: beschermde en essentiële plugins (Navigation, Dashboard)
werden op de live site als "Inactief" getoond en konden niet meer
aangezet worden via de admin-interface, terwijl ze verplichte
functionaliteit leveren (sidebar-navigatie voor handleidingen, dashboard).
Oorzaak: zodra zo'n plugin uit enabled_plugins in config.json raakte
(bijv. door een merge of handmatige wijziging), blokkeerde de admin-code
elke toggle en toonde de Twig-template alleen een schild-icoon — geen
"Activeren"-knop. De core laadde ze vervolgens ook niet meer.
Oplossing: de core forceert het laden van essential plugins
(plugin.json essential: true) ongeacht de enabled_plugins-lijst.
De admin-UI toont ze altijd als "Actief" en de toggle-handler staat
aanzetten wél toe (uitzetten blijft geblokkeerd).
Wijzigingen
cms/core/plugin/PluginManager.php
- Nieuwe methode
isEssentialPlugin(string $pluginName): bool— leestplugin.jsonessential: true. loadPlugins()laadt essential plugins altijd, ook als ze niet inenabled_pluginsstaan. De interne lijst wordt consistent gehouden voorgetEnabledPlugins()/isEnabled().
public/admin.php
- Nieuwe helper
isEssentialPluginByName(string $pluginName): bool— pad-onafhankelijke check opplugin.jsonessential: true. isProtectedPlugin()dekt nu ook essential plugins (naast de hardcodedgetProtectedPlugins()-lijst). Alle bestaande call-sites (delete, bewerken, file-upload, file-delete, file-move, dir-create, dir-rename, dir-delete, config-move) profiteren automatisch.handlePlugins():enabledwordttruevoor protected/essential plugins, zodat de UI altijd "Actief" toont.handlePluginsToggle(): aanzetten van protected/essential plugins is weer mogelijk; alleen uitzetten blijft geblokkeerd met een admin-log.
guide/nl/codepress-developer/plugin-development.md
guide/en/codepress-developer/plugin-development.md
- Beschrijving van
essential-veld bijgewerkt: "altijd geladen" + "kan niet worden uitgeschakeld/bewerkt/verwijderd".
Getroffen plugins
| Plugin | essential in plugin.json |
Hardcoded protected | Gedrag na fix |
|---|---|---|---|
Dashboard |
ja | nee | Altijd geladen, niet uit te schakelen |
Navigation |
ja | ja (redundant) | Altijd geladen, niet uit te schakelen |
HTMLBlock |
nee | nee | Normaal (toggle werkt) |
Statistics |
nee | nee | Normaal (toggle werkt) |
Logs |
nee | nee | Normaal (toggle werkt) |
GeoIPInfo |
nee | nee | Normaal (toggle werkt) |
Tests uitgevoerd
php -lover alle PHP-bestanden (zonder vendor): 0 syntax-errors.- Functionele tests (
cli/test/functional/run-tests.shtegen Apache): 16/16 PASS (100%). - Pentest (
cli/test/pentest/pentest.sh): 29/29 SAFE, 0 vulnerabilities. - Accessibility / WCAG 2.1 AA (
cli/test/accessibility.sh): 25/25 PASS. - Runtime-check
PluginManagermet legeenabled_plugins: alleenDashboard+Navigationworden geladen (essential). Met["HTMLBlock"]:Dashboard+Navigation+HTMLBlock. - Admin-UI simulatie met lege
enabled_plugins:DashboardenNavigationtonenenabled=true(vroegerfalse).
Upgrade-instructies
- Pull de nieuwe versie.
- Geen verdere actie nodig — essential plugins staan vanaf nu altijd aan.
- Als je
config.jsonhandmatig hebt aangepast enNavigationofDashboarduitenabled_pluginshebt gehaald: je hoeft dit niet meer terug te draaien; de core laadt ze toch. Ze verschijnen weer als "Actief" in de admin-UI.