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
(:use #:cl)
(:import-from #:jingle
#:make-app
#:install-middleware
#:static-path
#:configure)
(:use #:cl
#:jingle)
(:import-from #:ningle-fbr
#:set-routes)
(:import-from #:lack-mw

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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