{-# LANGUAGE OverloadedStrings #-} module View.Page ( page ) where import Data.Text.Internal.Lazy (Text) import Data.Text.Lazy.Encoding (decodeUtf8) import Data.Aeson (encode) import qualified Data.Aeson.Types as Json 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.Conf import Model.Message.Key (Key, Key(SharedCost)) page :: Conf -> Maybe Key -> Text page conf mbSignInError = renderHtml . docTypeHtml $ do H.head $ do meta ! charset "UTF-8" H.title (toHtml $ getMessage SharedCost) script ! src "javascripts/client.js" $ "" jsonScript "messages" getTranslations jsonScript "conf" conf jsonScript "signInError" mbSignInError link ! rel "stylesheet" ! type_ "text/css" ! href "css/reset.css" link ! rel "stylesheet" ! href "css/font-awesome-4.5.0/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" $ "" jsonScript :: Json.ToJSON a => Text -> a -> Html jsonScript scriptId json = script ! A.id (toValue scriptId) ! type_ "application/json" $ toHtml . decodeUtf8 . encode $ json