diff --git a/portfolio/site.hs b/portfolio/site.hs index e0d28d6..12b54ae 100644 --- a/portfolio/site.hs +++ b/portfolio/site.hs @@ -30,34 +30,60 @@ main = hakyll $ do match "posts/*" $ do route $ setExtension "html" - compile $ pandocCompiler - >>= loadAndApplyTemplate "templates/post.html" postCtx - >>= loadAndApplyTemplate "templates/default.html" postCtx - >>= relativizeUrls + compile $ do + identifier <- getUnderlying + metadata <- getMetadata identifier + let language = lookupString "language" metadata + + pandocCompiler + >>= loadAndApplyTemplate "templates/post.html" (postCtx language) + >>= loadAndApplyTemplate "templates/default.html" (postCtx language) + >>= relativizeUrls match "events/*" $ do route $ setExtension "html" - compile $ pandocCompiler - >>= loadAndApplyTemplate "templates/event.html" postCtx - >>= loadAndApplyTemplate "templates/default.html" postCtx - >>= relativizeUrls + compile $ do + identifier <- getUnderlying + metadata <- getMetadata identifier + let language = lookupString "language" metadata + + pandocCompiler + >>= loadAndApplyTemplate "templates/event.html" (postCtx language) + >>= loadAndApplyTemplate "templates/default.html" (postCtx language) + >>= relativizeUrls match "pages/en/plamo/**" $ do route $ setExtension "html" - compile $ pandocCompiler - >>= loadAndApplyTemplate "templates/post.html" postCtx - >>= loadAndApplyTemplate "templates/default.html" postCtx - >>= relativizeUrls + compile $ do + identifier <- getUnderlying + metadata <- getMetadata identifier + let language = lookupString "language" metadata + + let dateValue = lookupString "date" metadata + modelKitTemplate = + if dateValue == Just "1990-01-01" + then "templates/model-kit-not-ready.html" + else "templates/model-kit.html" + + pandocCompiler + >>= loadAndApplyTemplate modelKitTemplate (postCtx language) + >>= loadAndApplyTemplate "templates/default.html" (postCtx language) + >>= relativizeUrls create ["archive.html"] $ do route idRoute compile $ do + identifier <- getUnderlying + metadata <- getMetadata identifier + let language = lookupString "language" metadata + let lang = fromMaybe "en" language + posts <- recentFirst =<< loadAll "posts/*" let archiveCtx = - listField "posts" postCtx (return posts) `mappend` - constField "title" "Archives" `mappend` - constField "language" "en" `mappend` - langDict "en" <> + listField "posts" (postCtx language) (return posts) <> + constField "title" "Archives" <> + constField "language" lang <> + langDict lang <> defaultContext makeItem "" @@ -73,12 +99,17 @@ main = hakyll $ do route idRoute compile $ do ident <- getUnderlying - language <- getMetadataField' ident "language" kits <- recentFirst =<< loadAll "pages/en/plamo/**" + -- language <- getMetadataField' ident "language" + identifier <- getUnderlying + metadata <- getMetadata identifier + let language = lookupString "language" metadata + let lang = fromMaybe "en" language + let plamoCtx = - listField "kits" postCtx (return kits) <> - langDict language <> + listField "kits" (postCtx language) (return kits) <> + langDict lang <> defaultContext getResourceBody @@ -96,8 +127,13 @@ main = hakyll $ do compile $ do posts <- recentFirst =<< loadAll "posts/*" now <- unsafeCompiler getCurrentTime - ident <- getUnderlying - language <- getMetadataField' ident "language" + ident <- getUnderlying + --language <- getMetadataField' ident "language" + + identifier <- getUnderlying + metadata <- getMetadata identifier + let language = lookupString "language" metadata + let lang = fromMaybe "en" language -- Seven days from today. let cutoff = addUTCTime (7 * 24 * 60 * 60) now @@ -109,9 +145,9 @@ main = hakyll $ do let indexCtx = -- (<> is the modern version of `mappend`.) - listField "posts" postCtx (return posts) <> - listField "events" postCtx (return events) <> - langDict language <> + listField "posts" (postCtx language) (return posts) <> + listField "events" (postCtx language) (return events) <> + langDict lang <> defaultContext getResourceBody @@ -128,12 +164,14 @@ staticPageContext = langDict "en" <> defaultContext -postCtx :: Context String -postCtx = - dateField "date" "%e %B %Y" `mappend` - constField "language" "en" `mappend` - langDict "en" <> - defaultContext +postCtx :: Maybe String -> Context String +postCtx language = + let lang = fromMaybe "en" language + in + dateField "date" "%e %B %Y" <> + constField "language" lang <> + langDict lang <> + defaultContext isUpcoming :: UTCTime -> Item a -> Compiler Bool isUpcoming cutoff item = do @@ -153,6 +191,8 @@ langDict "nl" = constField "title-plamo" "Plamo" <> constField "title-radio" "Radio" <> constField "title-software" "Software" <> + constField "text-plamo-not-ready" "Deze model-kit heeft nog geen gepubliceerd werk." <> + constField "text-plamo-back" "Terug naar plamo kits" <> mempty langDict "jp" = @@ -162,6 +202,8 @@ langDict "jp" = constField "title-plamo" "プラモ" <> constField "title-radio" "ラジオ" <> constField "title-software" "ソフトウェア" <> + constField "text-plamo-not-ready" "この模型キットには、まだ制作例が公開されていません。" <> + constField "text-plamo-back" "プラモデルキットに戻る" <> mempty langDict "en" = @@ -171,6 +213,8 @@ langDict "en" = constField "title-plamo" "Plamo" <> constField "title-radio" "Radio" <> constField "title-software" "Software" <> + constField "text-plamo-not-ready" "This model kit has no work published for it yet." <> + constField "text-plamo-back" "Back to plamo kits" <> mempty langDict _ = mempty