{-# LANGUAGE OverloadedStrings #-} module View.Page ( page ) where import Data.Text.Internal.Lazy (Text) import Data.Text.Lazy.Encoding (decodeUtf8) import Data.Aeson (encode) import Text.Blaze.Html import Text.Blaze.Html5 import qualified Text.Blaze.Html5 as H import Text.Blaze.Html5.Attributes import qualified Text.Blaze.Html5.Attributes as A import Text.Blaze.Html.Renderer.Text (renderHtml) import Design.Global (globalDesign) import Model.Message import Model.Json.Config import Model.Message.Key (Key(SharedCost)) page :: Config -> Text page config = renderHtml . docTypeHtml $ do H.head $ do meta ! charset "UTF-8" meta ! httpEquiv "X-UA-Compatible" ! content "IE=Edge" -- IE8+ only is valid to use with persona H.title (toHtml $ getMessage SharedCost) script ! src "https://login.persona.org/include.js" $ "" script ! src "javascripts/client.js" $ "" script ! A.id "messages" ! type_ "application/json" $ toHtml . decodeUtf8 . encode $ getTranslations script ! A.id "config" ! type_ "application/json" $ toHtml . decodeUtf8 . encode $ config link ! rel "stylesheet" ! type_ "text/css" ! href "css/reset.css" link ! rel "stylesheet" ! href "css/font-awesome/css/font-awesome.min.css" link ! rel "icon" ! type_ "image/png" ! href "images/icon.png" H.style $ toHtml globalDesign body $ do script ! src "javascripts/main.js" $ ""