aboutsummaryrefslogtreecommitdiffstats
path: root/internal/web/templates/blog
diff options
context:
space:
mode:
authorgrm <grm@eyesin.space>2026-09-18 14:32:22 +0300
committergrm <grm@eyesin.space>2026-09-18 14:32:22 +0300
commit0fc470a8d588cac1a51cc4b3e1a2237dc56041c9 (patch)
treef4cde97479977d46046bc18953a1d0ecc3686165 /internal/web/templates/blog
parenta2b2574538c30278f4edd8e6b2704a176a7750a2 (diff)
downloadblogspace-0fc470a8d588cac1a51cc4b3e1a2237dc56041c9.tar.gz
blogspace-0fc470a8d588cac1a51cc4b3e1a2237dc56041c9.tar.bz2
blogspace-0fc470a8d588cac1a51cc4b3e1a2237dc56041c9.zip
Special pages: a gallery page of the blog's images
A page's kind says what it shows between its intro and outro: posts, as before, or something special. The first special kind is a gallery โ€” every image in the files library as a masonry wall (CSS columns, no script), newest first, each linked to its full-size file. The page form lists the library's images with a Hide tick per picture; exclusions are stored (page_hidden_files) rather than inclusions so a new upload shows up without editing the page, and the design's own pictures โ€” logo, favicon, header and background image โ€” are never shown. Special pages keep the page chrome (menu, announcements, home, ordering) but hold no posts: the post forms skip them and a forced page id is refused. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sd8UPWrvyYCLj97JexNw3A
Diffstat (limited to 'internal/web/templates/blog')
-rw-r--r--internal/web/templates/blog/gallery.html9
1 files changed, 9 insertions, 0 deletions
diff --git a/internal/web/templates/blog/gallery.html b/internal/web/templates/blog/gallery.html
new file mode 100644
index 0000000..4dbde13
--- /dev/null
+++ b/internal/web/templates/blog/gallery.html
@@ -0,0 +1,9 @@
+{{define "title"}}{{if not .Data.page.IsHome}}{{.Data.page.Title}} ยท {{end}}{{.Blog.Title}}{{end}}
+{{define "content"}}
+{{if not .Data.page.IsHome}}<h1 class="page-title">{{.Data.page.Title}}</h1>{{end}}
+{{if .Data.page.IntroHTML}}<div class="intro">{{html .Data.page.IntroHTML}}</div>{{end}}
+{{if .Data.images}}<div class="gallery">{{range .Data.images}}
+ <a href="/media/{{.ID}}"><img src="/media/{{.ID}}" alt="{{.Filename}}" loading="lazy"></a>{{end}}
+</div>{{else if not (or .Data.page.IntroHTML .Data.page.OutroHTML)}}<p class="muted">{{t "Nothing here yet."}}</p>{{end}}
+{{if .Data.page.OutroHTML}}<div class="outro">{{html .Data.page.OutroHTML}}</div>{{end}}
+{{end}}