{-# LANGUAGE FlexibleContexts, TypeFamilies #-} {-# OPTIONS_GHC -F -pgmFtrhsx #-} module Pages.AppTemplate where 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, FilterMonad Response m, ShowURL 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 %>