matebeamter/src/View/Scaffold.hs

86 lines
2.2 KiB
Haskell
Raw Normal View History

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 Data.Version (showVersion)
2019-10-24 16:05:22 +00:00
import Control.Monad (when)
import qualified Paths_matebeamter as MyPath (version)
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
-> T.Text
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
scaffold l10n locale version mcookie page content = template page $ do
H.header $ H.nav $ H.ul $ do
H.li $ H.a H.! HA.href ("/" <> fromString (show $ linkURI (userSelectLink Nothing))) $
H.toHtml $ translate "Home"
maybe
(return ())
(\uid ->
H.li $ H.a H.! HA.href ("/" <>
(fromString $ show $ linkURI $ userOverviewLink (read uid) Nothing)) $
H.toHtml $ translate "User Page"
)
(getLogin mcookie)
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
H.hr
2019-12-15 09:34:38 +00:00
H.footer $ H.form $ do
H.button
H.! HA.class_ "btn btn-primary"
H.! HA.formmethod "get"
H.! HA.formaction ("/" <>
(fromString $ show $ linkURI $ productGetPriceListLink Nothing))
$ H.toHtml $ translate "Price List"
2019-12-15 09:34:38 +00:00
maybe
(return ())
(\_ ->
H.button
H.! HA.class_ "btn btn-primary"
2019-12-15 09:34:38 +00:00
H.! HA.formmethod "get"
H.! HA.formaction ("/" <>
(fromString $ show $ linkURI $ productGetRefillLink))
$ H.toHtml $ translate "Refill stock"
)
(getLogin mcookie)
H.div
H.! HA.class_ "backend-version"
$ H.toHtml $
(translate "Powered by ") <> "matebeamter " <>
(fromString $ showVersion MyPath.version) <> " " <>
(translate "connected to ") <> "mateamt " <>
version
2019-10-24 16:05:22 +00:00
where
message = lookup "message" =<< fmap parseCookieText mcookie
translate = localize l10n locale . gettext
getLogin = snd . parseTokenAndUser