bamboo-theme-mini-html5-2009.11.3: src/Bamboo/Theme/MiniHTML5/Widget/Template.hs
{-# LANGUAGE NoMonomorphismRestriction#-}
{-# LANGUAGE NoImplicitPrelude #-}
module Bamboo.Theme.MiniHTML5.Widget.Template (page) where
import Bamboo.Theme.MiniHTML5.Env hiding (navigation, sidebar)
import Bamboo.Helper.StateHelper hiding (uri)
import Bamboo.Type.State
import Web.HCheat
import Text.HTML.Moe.DSL.Kawaii
import Data.ByteString.Lazy.Char8 (fromChunks)
import Bamboo.Theme.MiniHTML5.Widget.Navigation
import Bamboo.Theme.MiniHTML5.Widget.Sidebar
import qualified Bamboo.Type.Config as C
import qualified Bamboo.Type.State as S
import qualified Bamboo.Type.Theme as T
import Hack
import Text.HTML.Moe.Type (Attribute)
charset :: String -> Attribute
charset = attr "charset"
role :: String -> Attribute
role = _class
template, page :: State -> MoeUnit -> Response
template s x = html_response - fromChunks - return - render' - do
raw doc_type
html' - do
head' - do
let apply_if f g y = if f y then g y else y
root = (s.env.slashed_script_name /)
page_title = s.config.blog_title ++ s.S.resource_title.apply_if (null > not) (" / " ++)
meta [charset "utf-8"]
title' - str - page_title
link [rel "icon", _type "image/png", href - root - s.config.favicon]
-- link [rel "alternate", _type "application/rss+xml", href - rss_url_link_pair s .fst, title' "RSS 2.0"]
s.config.theme_config.T.css.mapM_ (root > css)
s.config.theme_config.T.js.mapM_(root > js)
body' - do
header [role "banner"] - do
div [_class "title"] -
str - s.config.blog_title
div [_class "sub-title"] -
str - s.config.blog_subtitle
when (has_extension Search) -
form [action "/search", method "get", role "search"] -
input [name "s", id "s", _type "text", value ""]
navigation s
div [id "page"] - do
section [role "posts"] - x
sidebar s
footer' - do
case s.config.C.footer of
Just y -> raw - y.markup.show_html
Nothing -> do
str - "©2009 " ++ s.config.blog_title
br'
str - "Powered by "
a [href - s.config.bamboo_url] - str "Bamboo"
str - " using "
a [href "http://www.haskell.org/"] - str "Haskell"
when (has_extension Analytics) -
raw - analytics - s.config.analytics_account_id
page = template