v2.6.5 (Lyra): Dynamische pad-resolutie, WordPress-stijl docblocks, security-fix wachtwoord, git-historie schoon

- 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
This commit is contained in:
2026-08-27 09:05:51 +00:00
parent 74612aefbb
commit d9ea2eee47
38 changed files with 771 additions and 572 deletions
+25 -25
View File
@@ -16,13 +16,13 @@ use Twig\Loader\FilesystemLoader;
* fallback naar de default_layout van het thema wanneer de layout
* onbekend is.
*
* @since 2.6.4
* @since 2.6.5
*/
class ThemeManager {
/**
* Volledige CMS-configuratie.
*
* @since 2.6.4
* @since 2.6.5
* @var array Bevat o.a. 'theme_dir' en 'theme'.
*/
private $config;
@@ -30,7 +30,7 @@ class ThemeManager {
/**
* Absoluut pad naar de actieve thema-map.
*
* @since 2.6.4
* @since 2.6.5
* @var string
*/
private $themeDir;
@@ -38,7 +38,7 @@ class ThemeManager {
/**
* Ruwe theme.json configuratie-array.
*
* @since 2.6.4
* @since 2.6.5
* @var array
*/
private $themeConfig;
@@ -46,7 +46,7 @@ class ThemeManager {
/**
* Twig-omgeving voor het renderen van thema-templates.
*
* @since 2.6.4
* @since 2.6.5
* @var Environment
*/
private $twig;
@@ -58,7 +58,7 @@ class ThemeManager {
* De Twig-cache staat uit en auto-escape is uitgeschakeld (de thema's
* beheren eigen escaping waar nodig).
*
* @since 2.6.4
* @since 2.6.5
*
* @param array $config Volledige CMS-configuratie; moet 'theme_dir' en 'theme' bevatten.
*/
@@ -77,7 +77,7 @@ class ThemeManager {
/**
* Geeft het absolute pad van de actieve thema-map.
*
* @since 2.6.4
* @since 2.6.5
*
* @return string Absoluut pad naar de thema-map.
*/
@@ -88,7 +88,7 @@ class ThemeManager {
/**
* Geeft de ruwe theme.json configuratie-array.
*
* @since 2.6.4
* @since 2.6.5
*
* @return array Theme.json inhoud, of lege array bij afwezigheid.
*/
@@ -102,7 +102,7 @@ class ThemeManager {
* Leest eerst 'title' uit theme.json, dan 'name', en als laatste
* fallback de mapnaam van het thema.
*
* @since 2.6.4
* @since 2.6.5
*
* @return string Thematische titel.
*/
@@ -115,7 +115,7 @@ class ThemeManager {
*
* Bevat o.a. default_template en achtergrondinstellingen.
*
* @since 2.6.4
* @since 2.6.5
*
* @return array Config-sectie, of lege array bij afwezigheid.
*/
@@ -128,7 +128,7 @@ class ThemeManager {
*
* Bevat de mapping van layout-key naar .twig-bestand.
*
* @since 2.6.4
* @since 2.6.5
*
* @return array<string,string> Layout-key => .twig-bestand mapping.
*/
@@ -150,7 +150,7 @@ class ThemeManager {
* 2. Anders fallback naar config.default_template.
* 3. Laatste veiligheidsnet: full_content.twig.
*
* @since 2.6.4
* @since 2.6.5
*
* @param string $layout Aangevraagde layout-key (bijv. 'left_sidebar').
* @return string Templacenaam bruikbaar voor de Twig-loader.
@@ -181,7 +181,7 @@ class ThemeManager {
/**
* Geeft de lijst met beschikbare layout-keys uit de "template"-sectie.
*
* @since 2.6.4
* @since 2.6.5
*
* @return array<string> Lijst met layout-keys.
*/
@@ -192,7 +192,7 @@ class ThemeManager {
/**
* Controleert of een templatebestand bestaat in de thema-map.
*
* @since 2.6.4
* @since 2.6.5
*
* @param string $file Bestandsnaam van het template (relatief t.o.v. thema-map).
* @return bool True als het bestand bestaat.
@@ -205,7 +205,7 @@ class ThemeManager {
/**
* Rendert een layout-template met de gegeven data.
*
* @since 2.6.4
* @since 2.6.5
*
* @param string $layout Aangevraagde layout-key.
* @param array $data Template-variabelen.
@@ -224,7 +224,7 @@ class ThemeManager {
* (0444) gezet om handmatige aanpassingen te voorkomen. Bij een fout
* wordt deze gelogd en null teruggegeven.
*
* @since 2.6.4
* @since 2.6.5
*
* @param bool $force Forceer hercompilatie ongeacht de cache. Default false.
* @return string|null Absoluut pad naar de gecompileerde CSS, of null bij fout/afwezigheid.
@@ -282,7 +282,7 @@ class ThemeManager {
* scssphp). Indien de gecompileerde CSS nog niet bestaat, wordt deze
* alsnog gecompileerd.
*
* @since 2.6.4
* @since 2.6.5
*
* @return string|null Publieke CSS-URL, of null indien niet beschikbaar.
*/
@@ -304,7 +304,7 @@ class ThemeManager {
/**
* Geeft de publieke URL voor de thema-JS, of null indien niet beschikbaar.
*
* @since 2.6.4
* @since 2.6.5
*
* @return string|null Publieke JS-URL, of null indien niet beschikbaar.
*/
@@ -319,7 +319,7 @@ class ThemeManager {
/**
* Geeft de publieke URL voor een thema-asset.
*
* @since 2.6.4
* @since 2.6.5
*
* @param string $assetPath Pad naar de asset binnen de assets/-map van het thema.
* @return string Publieke URL in de vorm '/themes/<naam>/assets/<path>'.
@@ -332,7 +332,7 @@ class ThemeManager {
/**
* Controleert of het thema een SCSS-bronbestand heeft.
*
* @since 2.6.4
* @since 2.6.5
*
* @return bool True als assets/scss/theme.scss bestaat.
*/
@@ -343,7 +343,7 @@ class ThemeManager {
/**
* Controleert of de gecompileerde CSS nieuwer is dan de SCSS-bron.
*
* @since 2.6.4
* @since 2.6.5
*
* @return bool True als de CSS-_mtime >= SCSS-mtime, anders false.
*/
@@ -361,7 +361,7 @@ class ThemeManager {
/**
* Controleert of het thema een handmatig CSS-bestand heeft.
*
* @since 2.6.4
* @since 2.6.5
*
* @return bool True als assets/css/theme.css bestaat.
*/
@@ -374,7 +374,7 @@ class ThemeManager {
*
* De css_compiled-map wordt uitgesloten.
*
* @since 2.6.4
* @since 2.6.5
*
* @return array<string> Lijst met publieke CSS-URLs.
*/
@@ -399,7 +399,7 @@ class ThemeManager {
/**
* Geeft een lijst met JS-bestanden in de assets/js/-map van het thema.
*
* @since 2.6.4
* @since 2.6.5
*
* @return array<string> Lijst met publieke JS-URLs.
*/
@@ -424,7 +424,7 @@ class ThemeManager {
/**
* Geeft de URL voor de favicon indien deze bestaat.
*
* @since 2.6.4
* @since 2.6.5
*
* @return string|null Publieke favicon-URL, of null indien niet beschikbaar.
*/