Security: verwijder hardcoded wachtwoord, voeg random-wachtwoord-generator toe bij eerste installatie
This commit is contained in:
@@ -5,11 +5,21 @@ CodePress gebruikt een **boom weergave** (`/admin/content`) voor content-beheer:
|
||||
## Content editor
|
||||
|
||||
### Bestandsbrowser zijbalk
|
||||
- Toont de geneste bestandsboom van `content/`
|
||||
- Toont de geneste bestandsboom van `content/`, met een klikbare **content** root bovenaan
|
||||
- Verborgen mappen (`.bak`, `.git`) en dotfiles worden overgeslagen
|
||||
- Klik op een bestand om het te openen in de CodeMirror editor
|
||||
- Klik op een **bestand** om het te openen in de CodeMirror editor
|
||||
- Klik op een **map** (mapnaam) om de map te selecteren — rechts verschijnt het **map detail paneel**
|
||||
- De chevron (▶/▼) naast een map klapt deze in/uit zonder de map te selecteren
|
||||
- Mappen die het actieve bestand bevatten zijn automatisch uitgeklapt
|
||||
- Per map staan actie-knoppen: nieuw bestand, nieuwe map, hernoemen, verwijderen
|
||||
- Per map staan actie-knoppen: nieuw bestand (plus-icoon), nieuwe map (map-plus-icoon) — deze 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
|
||||
- Beveiliging: een map kan niet naar zichzelf of naar een submap verplaatst worden
|
||||
- Path-traversal bescherming: alle paden blijven binnen de content map
|
||||
|
||||
### Bewerkbare bestandstypen
|
||||
`.md` (Markdown), `.php` (PHP), `.html` (HTML) — consistent met de bestaande content-edit pagina.
|
||||
@@ -56,26 +66,32 @@ Bestaande `{:width=...}` waarden worden in de prompts getoond. De grootte-attrib
|
||||
Images in `content/` worden via de `/-media/` endpoint geserveerd (content/ staat buiten de webroot). De markdown syntax `` met lokale URLs (relatief zoals `image.jpg`, of absoluut zoals `/content/_images/image.jpg`) wordt automatisch herschreven naar `/-media/...`. Externe URLs (`https://...`) worden ongewijzigd gelaten.
|
||||
|
||||
### Nieuw bestand aanmaken
|
||||
- Klik op **Nieuw bestand** (bovenaan of per map in de zijbalk)
|
||||
- Selecteer de doelmap in de zijbalk (klik op de mapnaam), of gebruik de root
|
||||
- Klik op **Nieuw bestand** (in het map-detail paneel of bovenaan)
|
||||
- Geef een pad op binnen content (bijv. `nl.pagina` of `blog/nl.post`)
|
||||
- Kies het bestandstype (Markdown/PHP/HTML)
|
||||
- Submappen worden automatisch aangemaakt
|
||||
- Frontmatter met `layout`, `created`, `edited` wordt automatisch gegenereerd
|
||||
- Het nieuwe bestand wordt aangemaakt in de geselecteerde map
|
||||
|
||||
### Bestand uploaden
|
||||
- Klik op **Upload** om bestanden naar `content/` te uploaden
|
||||
- Selecteer de doelmap in de zijbalk (klik op de mapnaam), of gebruik de root
|
||||
- Klik op **Upload** (in het map-detail paneel of bovenaan) om bestanden naar de geselecteerde map te uploaden
|
||||
- Toegestaan: afbeeldingen, video, audio, PDF, ZIP, office docs, CSS, SCSS, JS, JSON, HTML, MD
|
||||
- Path-traversal bescherming: doelmap moet binnen `content/` blijven
|
||||
- Na de upload keer je terug naar de geselecteerde map
|
||||
|
||||
### Bestand verplaatsen / verwijderen
|
||||
- In de bestandsboom heeft elk bestand een verplaats-knop (pijlen-icoon) en een verwijder-knop (prullenbak)
|
||||
- **Verplaatsen**: kies een doelmap uit de dropdown met alle mappen in content
|
||||
- **Verwijderen**: met bevestiging
|
||||
### Bestand hernoemen / verwijderen
|
||||
- Open het bestand in de editor (klik op de bestandsnaam in de zijbalk)
|
||||
- **Hernoemen**: bewerk het **Bestandsnaam** veld rechts boven de editor en klik op Opslaan — het bestand wordt direct hernoemd
|
||||
- **Verwijderen**: klik op de verwijder-knop (prullenbak) naast het bestand in de zijbalk, met bevestiging
|
||||
|
||||
### Mappen beheer
|
||||
- **Nieuwe map**: per map in de zijbalk of bovenaan
|
||||
- **Map hernoemen**: potlood-icoon per map
|
||||
- **Map verwijderen**: prullenbak-icoon per map (alleen lege mappen)
|
||||
- Klik op een map in de zijbalk om het **map-detail paneel** rechts te openen
|
||||
- **Map hernoemen**: bewerk het **Mapnaam** veld in het map-detail paneel en klik op Opslaan
|
||||
- **Nieuw bestand / Nieuwe map / Uploaden in deze map**: gebruik de knoppen in het map-detail paneel — ze opereren op de geselecteerde map
|
||||
- **Map verwijderen**: verwijder-knop in het map-detail paneel (alleen lege mappen)
|
||||
- De content-root is ook selecteerbaar (klik op "content" bovenaan de boom) — toont het map-detail paneel voor de root (hernoemen uitgeschakeld)
|
||||
|
||||
### Layout selectie
|
||||
Op de editor-pagina kun je de layout kiezen uit de layouts gedefinieerd in `theme.json` (template mapping). De geselecteerde layout wordt opgeslagen in de frontmatter `layout:` key.
|
||||
|
||||
@@ -27,4 +27,45 @@ Alleen actieve plugins worden getoond in de admin sidebar.
|
||||
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`.
|
||||
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
|
||||
@@ -21,17 +21,27 @@ In het thema-overzicht zie je per thema:
|
||||
Via **Bewerken** (potlood-icoon) in het thema-overzicht open je de thema-editor (`/admin/theme-edit?theme=<naam>`). Deze werkt hetzelfde als de plugin-editor:
|
||||
|
||||
### Bestandsbrowser zijbalk
|
||||
- Toont de geneste bestandsboom van het thema
|
||||
- Toont de geneste bestandsboom van het thema, met een klikbare **thema** root bovenaan
|
||||
- `assets/css_compiled/` wordt verborgen (runtime artefact, read-only)
|
||||
- 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
|
||||
- `theme.json` kan niet verplaatst worden
|
||||
|
||||
### Bewerkbare bestandstypen
|
||||
`.twig`, `.json`, `.scss`, `.css`, `.js`, `.html`, `.md`, `.php`
|
||||
|
||||
### Nieuw bestand aanmaken
|
||||
- Klik op **Nieuw bestand**
|
||||
- Geef een pad op binnen het thema (bijv. `partials/header.twig` of `assets/scss/_variables.scss`)
|
||||
### 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 het thema (bijv. `partials/header.twig` of `assets/scss/_variables.scss`)
|
||||
- Submappen worden automatisch aangemaakt
|
||||
- Toegestaan: twig, json, scss, css, js, html, md, php
|
||||
- Een stub wordt automatisch gegenereerd (bijv. `{% extends 'base.twig' %}` voor `.twig`)
|
||||
@@ -42,9 +52,14 @@ Via **Bewerken** (potlood-icoon) in het thema-overzicht open je de thema-editor
|
||||
- Path-traversal bescherming: doelmap moet binnen `assets/` blijven
|
||||
|
||||
### Bestand verplaatsen / verwijderen
|
||||
- In de bestandsboom heeft elk bestand een verplaats-knop (pijlen-icoon) en een verwijder-knop (prullenbak)
|
||||
- **Verplaatsen**: kies een doelmap uit de dropdown met alle mappen in het thema
|
||||
- **Verwijderen**: met bevestiging; `theme.json` kan niet verwijderd worden
|
||||
- **Verplaatsen**: sleep het bestand naar een andere map (drag-and-drop), of klik op het potlood-icoon naast het bestand om naar het verplaats-formulier te gaan
|
||||
- **Verwijderen**: klik op de prullenbak-knop naast het bestand in de zijbalk, met bevestiging; `theme.json` kan niet verwijderd worden
|
||||
|
||||
### 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)
|
||||
- De thema-root is ook selecteerbaar (klik op de thema-naam bovenaan de boom)
|
||||
|
||||
### SCSS compileren vanuit de editor
|
||||
- Bovenaan de editor staat een **SCSS compileren** knop (alleen als `assets/scss/theme.scss` bestaat)
|
||||
|
||||
Reference in New Issue
Block a user