- Content bestanden met dezelfde naam maar ander type (md/php/html) worden correct geserveerd: URL met extensie opent dat bestand, URL zonder extensie valt terug op md > php > html (resolveContentByType helper) - Admin content editor accepteert bestanden met dezelfde naam (ander type); preview-knop linkt per extensie - Frontend navigatie/directory listing/search tonen elk bestandstype apart - getAllPages() array structuur gewijzigd naar list van ['path','title','type'] met type 'md'/'php'/'html'/'folder' - Verberg-prefix logica: _ is geen verberg-prefix meer, alleen . (en -); admin toont wél alle . bestanden/mappen - ContentAPI getPage()/pageExists() respecteren expliciete extensie - Handleiding content-api.md (NL+EN) herschreven - File-tree unificatie: _file-tree.twig + _editor-styles.twig includes - Versie verhoogd naar 2.6.3
130 lines
12 KiB
Markdown
130 lines
12 KiB
Markdown
# TODO
|
|
|
|
## bug
|
|
- [x] Admin /content
|
|
- [x] onderwater heet de is bij Admin de content, theme en plugin de pluginFileTree overal de zelfde naam. Dit is niet logies en consistent. Als de zelfde twig gebruikt word hou dan de naamgeving algemeen.
|
|
- [x] Bij Admin/content "Content bestanden" werkt de > bij het openen van de mappen niet. Wees consistenter en compacter. Hergebuik code en maak het universeler. Deze kan gelijk zijn aan de theme en plugin .
|
|
- [x] bij media invoeren zie ik nu card's voor de images of media. Dit moet anders. Gebruik weer een filetree
|
|
- [x] Bij het editen van de content zie ik Zichtbare plugin's. Hier staan nu ook system plugin's in. Maak hier een pulldown multiselect waar ik alleen de active content plugin's ziet
|
|
- [x] Ook zie ik hier Auteur naam en auteur email, maar deze zijn niet ingevult. Deze zijn bekend omdat ik ingelocht bent.
|
|
- [x] De auteur_name en auteur_email moeten hier weg
|
|
- [x] Ook wil ik dit zie bij elke aanpassing van een pagina --- created: xx-xx-xx xx:xx:xx edited: xx-xx-xx xx:xx:xx ---
|
|
- [x] De git init is hier niet handig. Haal dit weg. Dit wordt later een systeem plugin
|
|
- [x] Houw de code consistend en compact. How in de gaten dat de functionaliteit niet omzeep geholpen wordt.
|
|
- [x] GET http://development.codepress.noorlander.info/content/_images/D_D.jpg → 403 Forbidden — opgelost: /admin/media-list content-scope gebruikt nu /-media/ prefix i.p.v. /content/
|
|
|
|
## Nice to have
|
|
- [ ] Multidomein implementeren (elk domein = eigen thema + content, één admin + site name)
|
|
- [ ] Fase 1: Config-resolutie
|
|
- [ ] For apache instants domein settings /public/noorlander.info/ or /public/mycode.name/
|
|
- [ ] config.domains.json (registry: host, aliases, redirect, config) + .example
|
|
- [ ] cms/core/domain.php: normalizeHost/getDomainRegistry/resolveDomain/loadSiteConfigForHost
|
|
- [ ] cms/core/config.php refactor → herbruikbare functie, compatibel blijven
|
|
- [ ] Per-domein config-bestanden (content_dir, active_theme) in the main content dir. like: /content/domain1 /content/domain2 os /content/noorlander.info/ /content/mycode.name/
|
|
- [ ] Fase 2: Front-end
|
|
- [ ] cms/router.php: taal-prefix dynamisch uit actieve config
|
|
- [ ] public/.htaccess: generieke `([a-z]{2})` taalregel
|
|
- [ ] CodePressCMS::getCurrentLanguage(): validatie via config['language']['available']
|
|
- [ ] getInternalHosts(): registry-hosts toevoegen (cross-domein links = intern)
|
|
- [ ] public/index.php: /-media/ en /-assets/ via actieve content_dir
|
|
- [ ] Fase 3: Admin (domeinbeheer + switch)
|
|
- [ ] admin/config/app.php: domains_json pad
|
|
- [ ] public/admin.php: $_SESSION['admin_domain'] + routes domains/domain-switch
|
|
- [ ] domains.twig + sidebar-item/badge in admin.twig
|
|
- [ ] Bestaande handlers laten werken op actief domein (config_json/content_dir patchen)
|
|
- [ ] Fase 4: Housekeeping
|
|
- [ ] .gitignore: config.*.json, content-*/
|
|
- [ ] AGENTS.md + config.json.example bijwerken
|
|
- [ ] Verificatie: php -l, curl met Host-header, domein-switch in admin testen
|
|
|
|
## Voltooid ✅
|
|
|
|
- [x] Admin code en niet gebruikte mappen/bestanden opschonen
|
|
- [x] version.php changelog verwijderen (staat in git)
|
|
- [x] Guide mappenstructuur reorganiseren (NL/EN → rollen)
|
|
- [x] README.md compacter maken met verwijzingen naar guide
|
|
- [x] Admin dashboard template check — Twig-commentaren `{# ... #}` verwijderd uit Dashboard.php
|
|
- [x] Plugins — zichtbaar verschil tussen system en content plugins (badge + border + icoon in plugins.twig)
|
|
- [x] Plugins — alleen actieve plugins zichtbaar in sidebar (PluginManager laadt alleen enabled plugins)
|
|
- [x] Plugins — dubbele enabled_plugins config opgelost (plugins.enabled verwijderd, alleen enabled_plugins op top-level)
|
|
- [x] Admin config — Analytics & Logging toggles verwijderd van config-pagina
|
|
- [x] Handleidingen gecontroleerd en bijgewerkt (20 bestanden NL+EN: configuratie, plugins, plugin-development, core-classes, theme-json, layouts, scss-styling, admin-beheerder, nieuw-thema, architectuur)
|
|
- [x] Content backup/restore optie + content-git repository integratie (ContentBackup class, content-backup.twig, ZIP backup/restore, git init/commit/log/restore)
|
|
- [x] Pentest controles uitgevoerd (30/30 tests geslaagd — 0 vulnerabilities)
|
|
- [x] WCAG 2.1 AA accessibility tests (25/25 tests geslaagd — 100% compliance, test-script verbeterd met min/max checks en grep -E)
|
|
|
|
## v2.6.3 (2026-08-20) ✅
|
|
- [x] Content bestanden met dezelfde naam maar ander type (md/php/html) worden door de frontend correct geserveerd: URL met extensie opent dat specifieke bestand, URL zonder extensie valt terug op md > php > html prioriteit (resolveContentByType helper)
|
|
- [x] Admin content editor accepteert bestanden met dezelfde naam (ander type); "bestaat al" check is per extensie, melding verduidelijkt naar "Bestand met dit type bestaat al."
|
|
- [x] Admin content editor preview-knop linkt per extensie (test.php → /nl/test.php) zodat elk type individueel te bekijken blijft
|
|
- [x] Frontend navigatie, directory listing en search tonen elk bestandstype apart (extensie behouden in URL), geen samenvoeging meer
|
|
- [x] getAllPages() array structuur gewijzigd naar list van ['path' => ..., 'title' => ..., 'type' => ...] met type 'md'/'php'/'html'/'folder'; mappen krijgen eigen entry, bestanden met dezelfde naam botsen niet meer
|
|
- [x] Verberg-prefix logica gewijzigd: `_` is geen verberg-prefix meer, alleen `.` (en `-`) verbergen aan de frontend; admin toont wél alle `.` bestanden/mappen (.bak, .map) — scanEditorFilesNode content-scope toont dotfiles behalve .git/.gitkeep
|
|
- [x] ContentAPI getPage()/pageExists() respecteren expliciete extensie in $path
|
|
- [x] autoLinkPageTitles() aangepast aan nieuwe array structuur, slaat mappen over
|
|
- [x] Handleiding content-api.md (NL+EN) herschreven: echo/return mechanisme, beschikbare variabelen, nieuwe getAllPages() structuur met voorbeelden
|
|
- [x] Versie verhoogd naar 2.6.3
|
|
|
|
## v2.6.2 (2026-08-19) ✅
|
|
- [x] Pentest controles uitgevoerd (30/30)
|
|
- [x] WCAG 2.1 AA accessibility tests (25/25)
|
|
- [x] Thema editor (thema's net zo bewerkbaar maken als plugins): bestandsbrowser zijbalk, nieuw bestand, uploaden, verwijderen, verplaatsen, SCSS compileren vanuit editor, thema activeren/verwijderen, nieuw thema met basis-kopie, uniforme thema-structuur
|
|
- [x] Content editor (content consistent met plugins en thema's): bestandsbrowser zijbalk nu op /admin/content (vervangt tabelweergave), nieuw bestand/map, uploaden, verwijderen, verplaatsen, mappen beheer, layout/plugins selectie, git/backup integratie in editor zijbalk; oude tabelweergave verhuisd naar /admin/content-list
|
|
- [x] Uniformiteit: scanEditorFiles() unified scanner (scanPluginFiles/scanThemeFiles/scanContentFiles als dunne wrappers)
|
|
- [x] Media invoegen in editor: ?theme= scope voor media-list endpoint + _media-modal.twig
|
|
- [x] Bug: thema-naam niet overgenomen bij kopiëren — title in theme.json wordt overschreven met nieuwe themanaam; README.md krijgt nieuwe header
|
|
- [x] Bug: mappen met `_` prefix zichtbaar in frontend navigatie — scanDirectory/searchInDirectory/scanForPageTitles skippen nu `_` prefix (consistente filtering met `.` en `-`)
|
|
- [x] Bug: images in markdown niet weergegeven — processContent() herschrijft lokale image/link URLs naar /-media/ endpoint (relatief, /content/, subdir, custom-grootte syntax); externe URLs ongewijzigd gelaten
|
|
- [x] UX: /admin/content is nu de boom-editor (plugin-file-tree structuur); oude tabelweergave op /admin/content-list met "Boom weergave"/"Lijst weergave" knoppen
|
|
- [x] UX: image-grootte knop in editor-toolbar (markdown) — selecteer , klik knop, breedte/hoogte dialog, {:width=... height=...} syntax toevoegen/vervangen
|
|
- [x] Handleidingen in guide/ bijgewerkt (thema-beheer.md NL+EN volledig herschreven met thema-editor uitleg; content-beheer.md NL+EN volledig herschreven met content-editor uitleg)
|
|
- [x] Verslag gemaakt (docs/release-notes/v2.6.2.md)
|
|
- [x] Versie verhoogd naar 2.6.2
|
|
|
|
## v2.6.1d (2026-08-18) ✅
|
|
- [x] Pentest controles uitgevoerd (30/30)
|
|
- [x] WCAG 2.1 AA accessibility tests (25/25)
|
|
- [x] Plugin internationalisatie (i18n): plugins hebben eigen language/ mappen, systeem plugins volgen admin taal, content plugins volgen content taal, fallback chain
|
|
- [x] Plugin uniformiteit: alle 6 plugins hebben uniforme structuur (README.md, assets/.gitkeep, language/nl|en/)
|
|
- [x] Plugin editor vernieuwd: bestandsbrowser zijbalk (geneste boom), nieuw bestand aanmaken, uploaden, verwijderen, verplaatsen
|
|
- [x] Media invoegen in editor: nieuw /admin/media-list JSON endpoint + herbruikbare _media-modal.twig include; plugin-context scant assets/ map
|
|
- [x] Plugin overzicht knoppen: alleen iconen met title/aria-label
|
|
- [x] README.md en handleidingen in guide/ doorgeloken en bijgewerkt (plugin-development.md NL+EN volledig herschreven, architectuur.md NL+EN bijgewerkt)
|
|
- [x] Bug: admin taal niet volledig geïntegreerd met plugins — plugins hebben nu eigen language/ mappen (nl/en), systeem plugins volgen admin taal (admin.php), content plugins volgen content taal (site.php), fallback chain, PluginManager + AdminPluginAPI + CMSAPI uitgebreid met getPluginTranslations()/t(), plugin.json settings ondersteunen label_key/help_key/option_label_key
|
|
- [x] Bug: plugin uniformiteit — alle 6 plugins hebben nu een uniforme structuur (<Plugin>.php, plugin.json, README.md, assets/.gitkeep, language/nl|en/), plugins/README.md herschreven, guide plugin-development.md (NL+EN) volledig bijgewerkt, guide architectuur.md (NL+EN) bijgewerkt
|
|
- [x] Bug: plugin editor toont alleen de <Plugin>.php maar een plugin kan uit meerdere bestanden bestaan — plugins-edit pagina heeft nu een bestandsbrowser zijbalk die alle bestanden in de plugin-map toont (.php, .json, .md, .html, .css, .scss, .js) inclusief language/ en assets/ submappen, nieuw-bestand knop met modal, path-traversal bescherming, scanPluginFiles() helper, editor-toolbar.js modeMap uitgebreid
|
|
- [x] Bug: plugin editor uploaden en verwijderen — plugins-edit pagina heeft nu een Upload knop (bestanden naar assets/ van de plugin) en per-bestand verwijder-knop in de bestandsboom, twee nieuwe routes (plugins-file-upload, plugins-file-delete), path-traversal bescherming + protected plugins geblokkeerd + dotfiles geweigerd
|
|
- [x] Bug: plugin editor bestand verplaatsen — plugins-edit pagina heeft nu per-bestand een verplaats-knop in de bestandsboom, nieuwe route plugins-file-move + template plugins-move-form.twig, path-traversal bescherming + protected plugins geblokkeerd
|
|
- [x] Bug: media-knop in editor werkte niet — #mediaModal bestond niet, opgelost via nieuw /admin/media-list JSON endpoint + herbruikbare _media-modal.twig include
|
|
- [x] Bug: plugin-kaart knoppen tekst liep niet goed — teksten verwijderd, alleen iconen met title/aria-label
|
|
- [x] Verslag gemaakt (docs/release-notes/v2.6.1d.md)
|
|
- [x] Versie verhoogd naar 2.6.1d
|
|
|
|
## v2.6.1c (2026-08-17) ✅
|
|
- [x] Pentest controles uitgevoerd (30/30)
|
|
- [x] WCAG 2.1 AA accessibility tests (25/25)
|
|
- [x] README.md en handleidingen in guide/ doorgeloken en bijgewerkt
|
|
- [x] Admin gebruikersbeheer opnieuw ontworpen (lijst + zoeken/filter + profiel + wachtwoord)
|
|
- [x] CLI commando voor admin wachtwoord reset (cli/reset-admin-password.php)
|
|
- [x] Bug: admin rollen werkt niet goed, dashboard geeft een 404, de plugin's moeten aangeven welke rol nodig is
|
|
- [x] Bug: user admin mag nooit zijn eigen rol wijzigen
|
|
- [x] Bug: na inloggen moet de admin zijn rol binnen de /admin kunnen veranderen om andere rollen te kunnen testen
|
|
- [x] Bug: in een andere rol kan de gebruiker niet zijn eigen wachtwoord veranderen
|
|
- [x] Bug: bij het aanmaken van een pagina in de content moet de auteur naam en email in de meta komen te staan (door middel van de api aan de twig bestanden doorgeven)
|
|
- [x] Verslag gemaakt (docs/release-notes/v2.6.1c.md)
|
|
- [x] Versie verhoogd naar 2.6.1c
|
|
|
|
## v2.6.1 (2026-08-17) ✅
|
|
- [x] Pentest controles uitgevoerd (30/30)
|
|
- [x] WCAG 2.1 AA accessibility tests (25/25)
|
|
- [x] README.md en handleidingen in guide/ doorgeloken en bijgewerkt
|
|
- [x] Installatie instructies toegevoegd aan README (Apache2/Nginx/PHP/composer)
|
|
- [x] Verwijderde vendor packages: php-mqtt/client, mustache/mustache (uit composer + autoloader)
|
|
- [x] Verslag gemaakt (docs/release-notes/v2.6.1.md)
|
|
- [x] Versie verhoogd naar 2.6.1
|
|
|
|
## v2.6.0 (2026-08-15) ✅
|
|
- [x] Pentest controles uitgevoerd (30/30)
|
|
- [x] WCAG 2.1 AA accessibility tests (25/25)
|
|
- [x] Verslag gemaakt (docs/release-notes/v2.6.0.md)
|
|
- [x] Versie verhoogd naar 2.6.0 |