Files

71 lines
3.2 KiB
Markdown

# 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=<naam>`). 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