Files
CodePress/docs/release-notes/v2.6.6.md
T
E.Noorlander f7e8837a1c 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.
2026-08-27 19:43:42 +00:00

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 — 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.