make the tagging work properly
This commit is contained in:
		
							parent
							
								
									4026a2e245
								
							
						
					
					
						commit
						4c0efd5c0e
					
				| 
						 | 
				
			
			@ -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
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								site.hs
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue