v2.6.6 (Lyra): Essential plugins altijd laden (forceer in core)
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.
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# 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` — leest
|
||||
`plugin.json` `essential: true`.
|
||||
- `loadPlugins()` laadt essential plugins **altijd**, ook als ze niet in
|
||||
`enabled_plugins` staan. De interne lijst wordt consistent gehouden
|
||||
voor `getEnabledPlugins()` / `isEnabled()`.
|
||||
|
||||
### `public/admin.php`
|
||||
- Nieuwe helper `isEssentialPluginByName(string $pluginName): bool` —
|
||||
pad-onafhankelijke check op `plugin.json` `essential: true`.
|
||||
- `isProtectedPlugin()` dekt nu ook essential plugins (naast de
|
||||
hardcoded `getProtectedPlugins()`-lijst). Alle bestaande call-sites
|
||||
(delete, bewerken, file-upload, file-delete, file-move, dir-create,
|
||||
dir-rename, dir-delete, config-move) profiteren automatisch.
|
||||
- `handlePlugins()`: `enabled` wordt `true` voor 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 -l` over alle PHP-bestanden (zonder vendor): 0 syntax-errors.
|
||||
- Functionele tests (`cli/test/functional/run-tests.sh` tegen 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 `PluginManager` met lege `enabled_plugins`: alleen
|
||||
`Dashboard` + `Navigation` worden geladen (essential). Met
|
||||
`["HTMLBlock"]`: `Dashboard` + `Navigation` + `HTMLBlock`.
|
||||
- Admin-UI simulatie met lege `enabled_plugins`: `Dashboard` en
|
||||
`Navigation` tonen `enabled=true` (vroeger `false`).
|
||||
|
||||
## Upgrade-instructies
|
||||
|
||||
1. Pull de nieuwe versie.
|
||||
2. Geen verdere actie nodig — essential plugins staan vanaf nu altijd aan.
|
||||
3. Als je `config.json` handmatig hebt aangepast en `Navigation` of
|
||||
`Dashboard` uit `enabled_plugins` hebt gehaald: je hoeft dit niet meer
|
||||
terug te draaien; de core laadt ze toch. Ze verschijnen weer als
|
||||
"Actief" in de admin-UI.
|
||||
Reference in New Issue
Block a user