2019-09-08 15:27:38 +00:00
|
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
module View.Scaffold where
|
|
|
|
|
2019-09-16 07:44:46 +00:00
|
|
|
import Servant.Links
|
|
|
|
|
2019-09-08 15:27:38 +00:00
|
|
|
import qualified Text.Blaze.Html5 as H
|
2019-10-24 16:05:22 +00:00
|
|
|
import qualified Text.Blaze.Html5.Attributes as HA
|
2019-09-08 15:27:38 +00:00
|
|
|
|
|
|
|
import qualified Data.Text as T
|
|
|
|
|
2019-09-16 07:44:46 +00:00
|
|
|
import Data.String (fromString)
|
|
|
|
|
2019-09-08 15:27:38 +00:00
|
|
|
import Data.Text.I18n
|
|
|
|
|
2019-10-24 16:05:22 +00:00
|
|
|
import Data.Maybe (fromJust, isJust)
|
|
|
|
|
|
|
|
import Control.Monad (when)
|
|
|
|
|
2019-09-08 15:27:38 +00:00
|
|
|
-- internal imports
|
|
|
|
|
|
|
|
import Types.Page
|
2019-09-16 07:44:46 +00:00
|
|
|
import API
|
2019-10-24 16:05:22 +00:00
|
|
|
import Util
|
2019-09-08 15:27:38 +00:00
|
|
|
|
|
|
|
scaffold
|
|
|
|
:: L10n
|
|
|
|
-> Locale
|
2019-10-24 16:05:22 +00:00
|
|
|
-> Maybe T.Text
|
2019-09-11 04:27:54 +00:00
|
|
|
-> Page H.Html T.Text
|
2019-09-08 15:27:38 +00:00
|
|
|
-> H.Html
|
|
|
|
-> H.Html
|
2019-10-24 16:05:22 +00:00
|
|
|
scaffold l10n locale mcookie page content = template page $ do
|
2019-10-16 16:07:12 +00:00
|
|
|
H.header $ H.nav $ H.ul $
|
2019-10-24 16:05:22 +00:00
|
|
|
H.li $ H.a H.! HA.href ("/" <> fromString (show $ linkURI userSelectLink)) $
|
2019-09-16 07:44:46 +00:00
|
|
|
H.toHtml $ localize l10n locale $ gettext "Home"
|
2019-09-08 15:27:38 +00:00
|
|
|
H.hr
|
2019-10-24 16:05:22 +00:00
|
|
|
when (isJust message)
|
|
|
|
(H.div H.! HA.id "message" H.! HA.class_ "message" $
|
|
|
|
H.toHtml (fromJust message)
|
|
|
|
)
|
|
|
|
H.div H.! HA.id "main" H.! HA.role "main" $
|
2019-09-08 15:27:38 +00:00
|
|
|
content
|
2019-10-24 16:05:22 +00:00
|
|
|
where
|
|
|
|
message = lookup "message" =<< fmap parseCookieText mcookie
|