feat(manage): add /manage pages to edit and delete photos, behind -manage
/manage lists every photo; /manage/edit/{slug} rewrites the photo's
.toml sidecar (caption, date), /manage/delete/{slug} asks for
confirmation and then removes the image, its sidecar and everything
generated from them. Builds now drop day pages of days without photos
and pager pages past the last one, so a delete or a date change leaves
nothing behind.
The pages are off by default: the routes are only registered with
-manage, so an install that does not opt in has no such code path and
answers 404. NixOS gets services.photogallery.manage.enable, which
also adds the nginx location only when on. Like /upload, the pages
carry no auth of their own and are not linked from the public site.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -69,6 +69,9 @@ services.photogallery = {
|
||||
serifFamily = "EB Garamond";
|
||||
mlFamily = "Manjari";
|
||||
|
||||
# Optional: edit and delete published photos at /manage (off by default)
|
||||
manage.enable = true;
|
||||
|
||||
# Optional: built-in nginx vhost
|
||||
nginx = {
|
||||
enable = true;
|
||||
@@ -103,9 +106,10 @@ nix-shell -p apacheHttpd --run \
|
||||
| `mlFamily` | `Manjari` | CSS font-family for the alt-script bio |
|
||||
| `pageSize` | `60` | Photos per page on the timeline and grid views |
|
||||
| `defaultView` | `timeline` | View at the site root, `timeline` or `grid`; the other is served under `/timeline/` or `/grid/` |
|
||||
| `manage.enable` | `false` | Serve the `/manage` pages (edit, delete) and, with `nginx.enable`, protect them with the same htpasswd |
|
||||
| `nginx.enable` | `false` | Configure an nginx vhost |
|
||||
| `nginx.domain` | — | Domain for the vhost |
|
||||
| `nginx.htpasswdFile` | — | htpasswd file for `/upload` |
|
||||
| `nginx.htpasswdFile` | — | htpasswd file for `/upload` and `/manage` |
|
||||
| `nginx.enableACME` | `true` | Enable Let's Encrypt |
|
||||
|
||||
---
|
||||
@@ -140,3 +144,20 @@ curl -u user:password \
|
||||
```
|
||||
|
||||
Or open `https://photos.yourdomain.tld/upload` in a browser.
|
||||
|
||||
## Editing and deleting photos
|
||||
|
||||
The pages are off by default: start the binary with `-manage` (NixOS:
|
||||
`services.photogallery.manage.enable = true`). Then open
|
||||
`https://photos.yourdomain.tld/manage` in a browser. It lists every
|
||||
photo; *Edit* opens a form for the caption and date, and saving rewrites the
|
||||
photo's `.toml` sidecar, which triggers a rebuild.
|
||||
|
||||
*Delete* asks for confirmation, then removes the image, its sidecar and
|
||||
everything generated from them. This is permanent — there is no trash folder,
|
||||
so keep a backup of the content directory.
|
||||
|
||||
`/manage` sits behind the same htpasswd as `/upload`, and nothing on the
|
||||
public site links to it. If you run your own nginx instead of the NixOS
|
||||
module, add a `location /manage` block alongside the `/upload` one — without
|
||||
it the path is not proxied and returns 404.
|
||||
|
||||
Reference in New Issue
Block a user