module Panda.View.Theme.BluePrint.Post where -- env import Panda.Helper.Env import Prelude hiding ((.), (/), id, span) import qualified Panda.Config.Global as Config import qualified Panda.Type.State as State import Text.XHtml.Strict import Panda.Type.Pager as Pager import System.Time import System.Locale import qualified Panda.Type.State as State -- model import Panda.Model.Post as Post -- view import Panda.View.Theme.BluePrint.Helper import Panda.View.Theme.BluePrint.Template.Template -- HTML -- render single entry entry x = div_class "post" << [entry_title, entry_mark, entry_body] where entry_title = x.title_link entry_body = div_class "entry" << x.Post.body.Config.markup entry_mark = p ! [theclass "small"] << [ x.blog_date, x.blog_tags ] title_link x = h2 << hotlink (entry_uri x) << x.Post.title entry_uri x = "/" ++ Post.uid x.urlEncode.split "/".tail.join "/" blog_date x = toHtml $ x.Post.date.formatCalendarTime defaultTimeLocale "%b %e, %Y" blog_tags x | x.tags.null = toHtml "" blog_tags x | otherwise = toHtml " | " +++ toHtml ["Published in ".toHtml, x.tags.map tag_link .intersperse (", ".toHtml) .toHtml] tag_link s = toHtml $ hotlink ("/tag/" ++ s ) << s -- entry view view state x = x.entry.page state -- list view list state = for_current_page p >>> map entry >>> (+++ nav p "/") >>> page state where p = state.State.pager