Add metadata context

This commit is contained in:
Akira Tempaku 2025-05-04 00:26:49 +09:00
parent 7b31bd1f18
commit c311ddb47c
Signed by: paku
GPG key ID: 5B4E8402BCC50607
8 changed files with 34 additions and 38 deletions

View file

@ -1,10 +1,6 @@
(defpackage #:website/app (defpackage #:website/app
(:use #:cl) (:use #:cl
(:import-from #:jingle #:jingle)
#:make-app
#:install-middleware
#:static-path
#:configure)
(:import-from #:ningle-fbr (:import-from #:ningle-fbr
#:set-routes) #:set-routes)
(:import-from #:lack-mw (:import-from #:lack-mw

View file

@ -1,8 +1,7 @@
(defpackage #:website/components/header (defpackage #:website/components/header
(:use #:cl (:use #:cl
#:hsx) #:hsx
(:import-from #:jingle #:jingle)
#:request-uri)
(:export #:~header)) (:export #:~header))
(in-package #:website/components/header) (in-package #:website/components/header)

View file

@ -1,8 +1,7 @@
(defpackage #:website/components/metadata (defpackage #:website/components/metadata
(:use #:cl (:use #:cl
#:hsx) #:hsx
(:import-from #:jingle #:jingle)
#:request-uri)
(:import-from #:website/lib/env (:import-from #:website/lib/env
#:website-url) #:website-url)
(:export #:~metadata)) (:export #:~metadata))

View file

@ -1,9 +1,7 @@
(defpackage #:website/renderer (defpackage #:website/renderer
(:use #:cl (:use #:cl
#:hsx #:hsx
#:trivia) #:jingle)
(:import-from #:jingle
#:set-response-header)
(:import-from #:hsx/element (:import-from #:hsx/element
#:element) #:element)
(:import-from #:website/lib/env (:import-from #:website/lib/env
@ -21,18 +19,14 @@
(set-response-header :cache-control (if (string= (website-env) "dev") (set-response-header :cache-control (if (string= (website-env) "dev")
"private, no-store" "private, no-store"
"public, max-age=60")) "public, max-age=60"))
(match result
((guard (or (list body metadata) (call-next-method app
body) (hsx:render-to-string
(typep body 'element)) (hsx (html :lang "ja"
(call-next-method app (head
(hsx:render-to-string (~metadata :metadata (context :metadata))
(hsx (html :lang "ja" (~scripts))
(head (body
(~metadata :metadata metadata) :hx-ext "head-support, response-targets"
(~scripts)) :hx-boost "true" :hx-target-404 "body" :hx-target-5* "body"
(body (~layout result)))))))
:hx-ext "head-support, response-targets, preload, alpine-morph"
:hx-boost "true" :hx-target-404 "body" :hx-target-5* "body"
(~layout body)))))))
(_ (error "Invalid response form"))))

View file

@ -1,6 +1,7 @@
(defpackage #:website/routes/about (defpackage #:website/routes/about
(:use #:cl (:use #:cl
#:hsx) #:hsx
#:jingle)
(:import-from #:website/lib/cms (:import-from #:website/lib/cms
#:get-about) #:get-about)
(:import-from #:website/lib/time (:import-from #:website/lib/time
@ -18,4 +19,5 @@
(defun handle-get (params) (defun handle-get (params)
(declare (ignore params)) (declare (ignore params))
(list (~page) *metadata*)) (setf (context :metadata) *metadata*)
(~page))

View file

@ -1,6 +1,7 @@
(defpackage #:website/routes/blog (defpackage #:website/routes/blog
(:use #:cl (:use #:cl
#:hsx) #:hsx
#:jingle)
(:export #:handle-get)) (:export #:handle-get))
(in-package :website/routes/blog) (in-package :website/routes/blog)
@ -13,4 +14,5 @@
(defun handle-get (params) (defun handle-get (params)
(declare (ignore params)) (declare (ignore params))
(list (~page) *metadata*)) (setf (context :metadata) *metadata*)
(~page))

View file

@ -1,6 +1,7 @@
(defpackage #:website/routes/not-found (defpackage #:website/routes/not-found
(:use #:cl (:use #:cl
#:hsx) #:hsx
#:jingle)
(:export #:handle-not-found)) (:export #:handle-not-found))
(in-package #:website/routes/not-found) (in-package #:website/routes/not-found)
@ -18,4 +19,5 @@
"Back to TOP")))) "Back to TOP"))))
(defun handle-not-found () (defun handle-not-found ()
(list (~page) *metadata*)) (setf (context :metadata) *metadata*)
(~page))

View file

@ -1,6 +1,7 @@
(defpackage #:website/routes/work (defpackage #:website/routes/work
(:use #:cl (:use #:cl
#:hsx) #:hsx
#:jingle)
(:import-from #:website/lib/cms (:import-from #:website/lib/cms
#:get-work) #:get-work)
(:import-from #:website/lib/time (:import-from #:website/lib/time
@ -18,4 +19,5 @@
(defun handle-get (params) (defun handle-get (params)
(declare (ignore params)) (declare (ignore params))
(list (~page) *metadata*)) (setf (context :metadata) *metadata*)
(~page))