corebot-bliki-0.2: src/Yesod/CoreBot/Bliki/Resources/Blog.hs
module Yesod.CoreBot.Bliki.Resources.Blog where
import Yesod.CoreBot.Bliki.Prelude
import Yesod.CoreBot.Bliki.Resources.Base
import Yesod.CoreBot.Bliki.Config
import Yesod.CoreBot.Bliki.DB
import Yesod.CoreBot.Bliki.Store
import qualified Data.Text as Text
mk_blog :: Data_ master -> IO ( Blog_ master )
mk_blog src_data = return $ Blog src_data
-- XXX: needs json representation
getBlogIndexR :: Yesod master => GHandler ( Blog_ master ) master RepHtml
getBlogIndexR = do
blog@(Blog src_data) <- getYesodSub
db <- liftIO $ readIORef $ db_ref src_data
let updates = take 50 $ update_log db
update_summaries = build_summaries updates
build_summaries [] = []
build_summaries ( Tweet _ txt : us )
= [whamlet|
<p .tweet> #{txt}
|] : build_summaries us
build_summaries ( BlogAdded _ txt : us )
= [whamlet|
<p .blog_summary> #{take 200 txt}
|] : build_summaries us
build_summaries ( EntryAdded _ node_path : us ) =
let node_R = data_routes (config src_data) $ EntryLatestR []
in [whamlet|
<p .node_update>
Added
<a href=@{node_R}/#{node_path}>#{node_path}
|] : build_summaries us
build_summaries ( EntryChanged _ node_path : us ) =
let node_R = data_routes (config src_data) $ EntryLatestR []
in [whamlet|
<p .node_update>
Changed
<a href=@{node_R}/#{node_path}>#{node_path}
|] : build_summaries us
build_summaries ( Wibble _ : us )
= build_summaries us
defaultLayout $ do
[whamlet|
<div .update_log>
<ol .summary_listing>
$forall summary <- update_summaries
<li> ^{summary}
|]
mkYesodSubDispatch "Blog_ master" [] [parseRoutes|
/ BlogIndexR GET
|]