make the tagging work properly

This commit is contained in:
Mirek Kratochvil 2023-06-15 14:39:15 +02:00
parent 4026a2e245
commit 4c0efd5c0e
4 changed files with 41 additions and 20 deletions

View file

@ -84,6 +84,15 @@ h6 {
font-weight: 300;
}
.sidebox ol {
padding-left: 1em;
}
.sidebox ul {
padding-left: 0em;
list-style-type: none;
}
/* layout */
header {

16
site.hs
View file

@ -10,7 +10,7 @@ import qualified Data.Aeson.KeyMap as KM
import qualified Data.ByteString.Lazy as B
import Data.Digest.Pure.SHA (sha256, showDigest)
import Data.Foldable (traverse_)
import Data.List (inits, nub)
import Data.List (inits, nub, sort)
import Data.List.Extra (groupSort)
import qualified Data.Map as M
import qualified Data.Set as S
@ -157,6 +157,18 @@ addGlobalMeta (Y.Object m) = do
r <- fromString <$> use urlBase
pure . Y.Object $ KM.insert "root" r m
-- | Add page-specific information to the metadata. In this instance, this just
-- expands the tags for rendering. Eventually would be nice to have the timestamps
-- and possibly other info sourced right here.
addPageMeta :: PageInfo -> Y.Value -> Site Y.Value
addPageMeta pi (Y.Object m) = do
htagMeta <-
traverse makeHTagMeta . sort $ pi ^.. pageMeta . key "tags" . values .
_String .
to T.unpack .
to splitDirectories
pure . Y.Object $ KM.insert "htags" (Y.array htagMeta) m
-- | Render a page using the current template.
installPage :: FilePath -> PageInfo -> Site ()
installPage mount pi = do
@ -169,7 +181,7 @@ installPage mount pi = do
body <- io . runIOorExplode $ writeHtml5String htmlWriteOpts fixedUrlDoc
let Y.Object meta' = pi ^. pageMeta
meta = Y.Object $ KM.insert "body" (Y.String body) meta'
meta <- addGlobalMeta meta
meta <- addGlobalMeta meta >>= addPageMeta pi
io $ do
putStrLn $ "P -> " ++ file
makeDirectories file

View file

@ -23,17 +23,17 @@
<div class="flex-sidefill-l"></div>
<div class="content-holder">
<div class="sidebox">
{{?htags}}
<div class="sidebar-header">
Page categories
</div>
<div class="sidebar-values">
a → b → c
</div>
<div class="sidebar-header">
Last modification
</div>
<div class="sidebar-values">
January 2023
<ul>
{{#htags}}
<li>{{#.}}<a href="{{href}}">{{^tag}}all{{/tag}}{{?tag}} » {{tag}}{{/tag}}{{/.}}</a></li>
{{/htags}}
</ul>
</div>
{{/htags}}
</div>
<div class="content width-content">

View file

@ -16,19 +16,19 @@
{{^htag}}All cards{{/htag}}
</h1>
{{?subtags}}<h2>Sub-categories</h2>
<ul class="cards-subcategories">
{{#subtags}}
<li><a href="{{href}}">{{#tags}} » {{.}} {{/tags}}</a></li>
{{/subtags}}
</ul>
<ul class="cards-subcategories">
{{#subtags}}
<li><a href="{{href}}">{{#tags}} » {{.}} {{/tags}}</a></li>
{{/subtags}}
</ul>
{{/subtags}}
{{?pages}}
<h2>Cards</h2>
<ul class="cards-list">
{{#pages}}
<li><a href="{{href}}">{{meta.title}}</a></li>
{{/pages}}
</ul>
<h2>Cards</h2>
<ul class="cards-list">
{{#pages}}
<li><a href="{{href}}">{{meta.title}}</a></li>
{{/pages}}
</ul>
{{/pages}}
{{> footer.html}}
</body>