# Plugins ## Plugin types Er zijn twee soorten plugins: - **Systeem plugins** (blauwe badge) - Beheren CMS-functionaliteit zoals Dashboard, Logs en Statistieken - **Content plugins** (groene badge) - Tonen content in de front-end zoals HTMLBlock en Navigation ## Essentiële plugins Essentiële plugins (met een schild-icoon) kunnen niet worden bewerkt, gedeactiveerd of verwijderd. Dit geldt bijvoorbeeld voor de Navigation plugin. ## Plugins beheren - **Activeren/Deactiveren** - Plugins aan/uit - **Bewerken** - Plugin code aanpassen - **Configuratie** - Plugin instellingen (alleen bij plugins met een Config-knop) - **Verwijderen** - Plugin verwijderen Alleen actieve plugins worden getoond in de admin sidebar. ## Nieuwe plugin 1. Ga naar **Plugins** → **Nieuwe plugin** 2. Geef naam op (bijv. `MijnPlugin`) 3. Bewerk het PHP-bestand 4. Activeer de plugin Nieuwe plugins zijn standaard content-plugins. Wil je een systeem-plugin maken, voeg dan `"type": "system"` toe aan `plugin.json`. ## Plugin editor Via **Bewerken** (potlood-icoon) in het plugin-overzicht open je de plugin-editor (`/admin/plugins-edit?plugin=`). Deze werkt hetzelfde als de content- en thema-editors. ### Bestandsbrowser zijbalk - Toont de geneste bestandsboom van de plugin, met een klikbare **plugin** root bovenaan - Klik op een bestand om het te openen in de CodeMirror editor - Klik op een map om het **map detail paneel** rechts te openen (nieuw bestand, nieuwe map, uploaden, verwijderen) - Mappen die het actieve bestand bevatten zijn automatisch uitgeklapt - Per map staan actie-knoppen: nieuw bestand, nieuwe map — opereren op de geselecteerde map - Per bestand staan actie-knoppen: hernoemen/verplaatsen (potlood), verwijderen (prullenbak) — verschijnen bij hover ### Bestanden verslepen (drag-and-drop) - Sleep een bestand of map naar een andere map om het te verplaatsen - Tijdens het slepen worden geldige doel-mappen highlight getoond - De verplaatsing gebeurt via een AJAX-call — de pagina herlaadt automatisch na succes - Beschermde plugins (zoals Navigation) kunnen niet bewerkt/verplaatst worden ### Bewerkbare bestandstypen `.php`, `.json`, `.md`, `.html`, `.css`, `.scss`, `.js` ### Nieuw bestand / nieuwe map aanmaken - Selecteer de doelmap in de zijbalk (klik op de mapnaam), of gebruik de root - Klik op **Nieuw bestand** of **Nieuwe map** (in het map-detail paneel of bovenaan) - Bij nieuw bestand: geef een pad op binnen de plugin (bijv. `helper.php` of `assets/css/extra.css`) - Submappen worden automatisch aangemaakt ### Bestand verplaatsen / verwijderen - **Verplaatsen**: sleep het bestand naar een andere map (drag-and-drop), of klik op het potlood-icoon - **Verwijderen**: klik op de prullenbak-knop naast het bestand in de zijbalk, met bevestiging ### Mappen beheer - Klik op een map in de zijbalk om het **map-detail paneel** rechts te openen - **Nieuw bestand / Nieuwe map / Uploaden in deze map**: gebruik de knoppen in het map-detail paneel - **Map verwijderen**: verwijder-knop in het map-detail paneel (alleen lege mappen) ### Beveiliging - Beschermde plugins (Navigation) kunnen niet bewerkt worden - Alle acties vereisen CSRF token - Path-traversal bescherming via `realpath()` + prefix-check op de plugin-map