From 0fc470a8d588cac1a51cc4b3e1a2237dc56041c9 Mon Sep 17 00:00:00 2001 From: grm Date: Fri, 18 Sep 2026 14:32:22 +0300 Subject: Special pages: a gallery page of the blog's images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_01Sd8UPWrvyYCLj97JexNw3A --- internal/web/templates/dashboard/overview.html | 2 +- internal/web/templates/dashboard/page_form.html | 15 +++++++++++++-- internal/web/templates/dashboard/pages.html | 6 +++--- internal/web/templates/dashboard/post_form.html | 2 +- internal/web/templates/dashboard/posts.html | 2 +- 5 files changed, 19 insertions(+), 8 deletions(-) (limited to 'internal/web/templates/dashboard') diff --git a/internal/web/templates/dashboard/overview.html b/internal/web/templates/dashboard/overview.html index e239445..2a797d8 100644 --- a/internal/web/templates/dashboard/overview.html +++ b/internal/web/templates/dashboard/overview.html @@ -12,7 +12,7 @@

{{t "Pages"}}

    - {{range .Data.pages}}
  • {{.Title}} ({{tf "%d posts" .PostCount}}{{if .IsHome}}, {{t "home"}}{{end}}{{if not .ShowInNav}}, {{t "hidden from menu"}}{{end}})
  • {{end}} + {{range .Data.pages}}
  • {{.Title}} ({{if .Special}}{{t .Kind}}{{else}}{{tf "%d posts" .PostCount}}{{end}}{{if .IsHome}}, {{t "home"}}{{end}}{{if not .ShowInNav}}, {{t "hidden from menu"}}{{end}})
  • {{end}}
diff --git a/internal/web/templates/dashboard/page_form.html b/internal/web/templates/dashboard/page_form.html index 4ee720b..5b47d05 100644 --- a/internal/web/templates/dashboard/page_form.html +++ b/internal/web/templates/dashboard/page_form.html @@ -1,9 +1,12 @@ -{{define "title"}}{{if .Data.page.ID}}{{t "Edit page"}}{{else}}{{t "New page"}}{{end}} · {{.Blog.Title}}{{end}} +{{define "title"}}{{template "pageformtitle" .}} · {{.Blog.Title}}{{end}} +{{define "pageformtitle"}}{{if eq .Data.page.Kind "gallery"}}{{if .Data.page.ID}}{{t "Edit gallery page"}}{{else}}{{t "New gallery page"}}{{end}}{{else}}{{if .Data.page.ID}}{{t "Edit page"}}{{else}}{{t "New page"}}{{end}}{{end}}{{end}} {{define "content"}}
-

{{if .Data.page.ID}}{{t "Edit page"}}{{else}}{{t "New page"}}{{end}}

+

{{template "pageformtitle" .}}

+ {{if eq .Data.page.Kind "gallery"}}

{{t "A gallery page shows every image in your files as a wall of pictures, newest first, between its intro and closing text."}}

{{end}}
+ {{if not .Data.page.ID}}{{end}} @@ -11,6 +14,14 @@ {{template "editor" (dict "name" "intro" "value" .Data.page.IntroMD "format" .Data.page.Format "rows" 8 "tall" false "upload" (print "/b/" .Blog.Subdomain "/files/upload") "preview" (print "/b/" .Blog.Subdomain "/preview") "csrf" .CSRF)}} {{template "editor" (dict "name" "outro" "value" .Data.page.OutroMD "format" .Data.page.Format "formatof" "intro" "rows" 8 "tall" false "upload" (print "/b/" .Blog.Subdomain "/files/upload") "preview" (print "/b/" .Blog.Subdomain "/preview") "csrf" .CSRF)}} + {{if eq .Data.page.Kind "gallery"}} +

{{t "Images"}}

+

{{t "Every image in your files is shown except the ones ticked here. The logo, favicon, header and background images are never shown."}}

+ {{if .Data.images}}
+ {{range .Data.images}}{{end}} +
+ {{else}}

{{t "No images in your files yet."}} {{t "Files"}}

{{end}} + {{end}}

diff --git a/internal/web/templates/dashboard/pages.html b/internal/web/templates/dashboard/pages.html index 6c3b56d..af3bb5e 100644 --- a/internal/web/templates/dashboard/pages.html +++ b/internal/web/templates/dashboard/pages.html @@ -2,7 +2,7 @@ {{define "content"}}

{{t "Pages"}}

- +

{{t "Each page holds its own list of posts. Which pages are in the menu, and in what order, is set on the"}} {{t "Design"}} {{t "tab."}}

@@ -14,9 +14,9 @@ {{.Title}} - {{if .IsHome}}{{t "home"}}{{end}}{{if not .ShowInNav}}{{t "not in menu"}}{{end}} + {{if .Special}}{{t .Kind}}{{end}}{{if .IsHome}}{{t "home"}}{{end}}{{if not .ShowInNav}}{{t "not in menu"}}{{end}} {{if .IsHome}}/{{else}}/{{.Slug}}{{end}} ↗ - {{.PostCount}} + {{if .Special}}—{{else}}{{.PostCount}}{{end}} {{if not .IsHome}}
{{t "delete"}}{{end}} diff --git a/internal/web/templates/dashboard/post_form.html b/internal/web/templates/dashboard/post_form.html index e64a331..edb60fd 100644 --- a/internal/web/templates/dashboard/post_form.html +++ b/internal/web/templates/dashboard/post_form.html @@ -7,7 +7,7 @@
diff --git a/internal/web/templates/dashboard/posts.html b/internal/web/templates/dashboard/posts.html index 983fbae..217c966 100644 --- a/internal/web/templates/dashboard/posts.html +++ b/internal/web/templates/dashboard/posts.html @@ -8,7 +8,7 @@ -- cgit v1.2.3