diff options
| author | grm <grm@eyesin.space> | 2026-09-17 18:54:33 +0300 |
|---|---|---|
| committer | grm <grm@eyesin.space> | 2026-09-17 18:54:33 +0300 |
| commit | 616aa3a934951260d5daa81ab3d0f93fbc94ebee (patch) | |
| tree | 76e96881a23d3e944cc3acbaf27a9217ca030a5a /internal/web/templates/partials/imagepick.html | |
| parent | f16bd0f79c624665580615321b5d13b4be27cdad (diff) | |
| download | blogspace-616aa3a934951260d5daa81ab3d0f93fbc94ebee.tar.gz blogspace-616aa3a934951260d5daa81ab3d0f93fbc94ebee.tar.bz2 blogspace-616aa3a934951260d5daa81ab3d0f93fbc94ebee.zip | |
Keep a chosen image older than the picker's list, and the layout on a rejected save
The image picker's select lists the newest recentImages library images and
was meant to add the chosen one when it is older than those, but the fallback
option was gated on the filename being unknown, which designData makes known:
the option never rendered, the browser selected "None", and every save of the
design form cleared a logo or favicon older than the 48 newest images (the
post form's featured image the same way). The partial now checks whether the
choice is listed and otherwise emits it, named.
handleDesign ran the uploads before parsing the module and menu rows and gave
up at the first problem, so a rejected upload rendered the form without any
rows — and, since a missing row means delete, the next save would have wiped
the layout and menu. Everything is read before the first problem is reported.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sd8UPWrvyYCLj97JexNw3A
Diffstat (limited to 'internal/web/templates/partials/imagepick.html')
| -rw-r--r-- | internal/web/templates/partials/imagepick.html | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/internal/web/templates/partials/imagepick.html b/internal/web/templates/partials/imagepick.html index ed9368c..5062d42 100644 --- a/internal/web/templates/partials/imagepick.html +++ b/internal/web/templates/partials/imagepick.html @@ -1,9 +1,11 @@ {{/* One image field of a form (the design page, a post's featured image). - The select lists the recent images (plus the chosen one) so it works - without the script; with it the select is hidden and "Choose from - library…" opens the form's imagelib panel, which fetches the library - page by page and marks the pickers with .js. */}} -{{define "imagepick"}}{{$cur := .current}}<div class="imagepick" data-name="{{.name}}"> + The select lists the recent images so it works without the script; a + chosen image older than those gets its own option (named through .names, + or "Current image" once the file is gone), so the select always carries + the choice and a save keeps it. With the script the select is hidden and + "Choose from library…" opens the form's imagelib panel, which fetches the + library page by page and marks the pickers with .js. */}} +{{define "imagepick"}}{{$cur := .current}}{{$listed := false}}{{range .images}}{{if eq .ID.String $cur}}{{$listed = true}}{{end}}{{end}}<div class="imagepick" data-name="{{.name}}"> <label>{{.label}}</label> {{if .hint}}<p class="muted small">{{.hint}}</p>{{end}} <div class="pickrow"> @@ -12,7 +14,7 @@ <select name="{{.name}}" class="ip-nojs"> <option value="none"{{if not $cur}} selected{{end}}>{{t "None"}}</option> {{range .images}}<option value="{{.ID}}"{{if eq .ID.String $cur}} selected{{end}}>{{.Filename}}</option>{{end}} - {{if and $cur (not (index .names $cur))}}<option value="{{$cur}}" selected>{{t "Current image"}}</option>{{end}} + {{if and $cur (not $listed)}}<option value="{{$cur}}" selected>{{with index .names $cur}}{{.}}{{else}}{{t "Current image"}}{{end}}</option>{{end}} </select> <span class="ip-jsonly"><button type="button" class="secondary small" data-pick="open">{{t "Choose from library…"}}</button> <button type="button" class="secondary small" data-pick="clear">{{t "None"}}</button></span> <label class="upload">{{t "…or upload a new one"}}<br><input type="file" name="{{.name}}_file" accept="{{if .accept}}{{.accept}}{{else}}image/*{{end}}"></label> |
