{-# LANGUAGE CPP, OverloadedStrings, QuasiQuotes, RecordWildCards #-} -- | Common page components and rendering helpers. -- For global page layout, see Application.hs. module Handler.Common where import Import -- import Data.Text (Text) import qualified Data.Text as T import Data.Time.Calendar import System.FilePath (takeFileName) #if BLAZE_HTML_0_4 import Text.Blaze (preEscapedString) #else import Text.Blaze.Internal (preEscapedString) #endif import Text.Printf import Hledger.Utils import Hledger.Data import Hledger.Query import Hledger.Reports import Hledger.Cli.CliOptions import Hledger.Web.WebOptions ------------------------------------------------------------------------------- -- Common page layout -- | Standard hledger-web page layout. hledgerLayout :: ViewData -> String -> HtmlUrl AppRoute -> HandlerT App IO Html hledgerLayout vd title content = do defaultLayout $ do setTitle $ toHtml $ title ++ " - hledger-web" toWidget [hamlet| ^{topbar vd} ^{sidebar vd}
^{searchform vd} ^{content} |] where showmd = if showsidebar vd then "col-md-8" else "col-md-12" :: String showsm = if showsidebar vd then "col-sm-8" else "col-sm-12" :: String -- | Global toolbar/heading area. topbar :: ViewData -> HtmlUrl AppRoute topbar VD{..} = [hamlet|