{-# LANGUAGE FlexibleContexts, TypeFamilies #-} {-# OPTIONS_GHC -F -pgmFtrhsx #-} module Pages.AppTemplate where import Data.Text (Text) import Happstack.Server import HSP import HSP.Google.Analytics(analytics) import qualified HSX.XMLGenerator as HSX import UACCT (uacct) import Web.Routes import Web.Routes.XMLGenT () import Web.Routes.Happstack () import Happstack.Server.HSX () appTemplate :: ( Functor m , XMLGenerator m , EmbedAsChild m headers , EmbedAsChild m body , EmbedAsChild m () , (HSX.XML m) ~ XML ) => String -- ^ title -> headers -- ^ extra tags to include in \ -> body -- ^ contents to put inside \ -> XMLGenT m (HSX.XML m) appTemplate title headers body = <% title %> <% headers %> <% body %> <% case uacct of (Just u) -> <% analytics u %> Nothing -> <% () %> %> seeOtherURL :: ( XMLGenerator m , EmbedAsAttr m (Attr String Text) , EmbedAsChild m Text , FilterMonad Response m , MonadRoute m ) => URL m -> XMLGenT m (HSX.XML m) seeOtherURL url = do otherURL <- showURL url seeOther otherURL () <% otherURL %> seeOtherXML :: (XMLGenerator m, FilterMonad Response m) => String -> XMLGenT m (HSX.XML m) seeOtherXML url = seeOther url =<< <% url %>