{-# LANGUAGE CPP, OverloadedStrings, QuasiQuotes, NamedFieldPuns #-} -- | Common page components and rendering helpers. -- For global page layout, see Application.hs. module Handler.Common where import Import import qualified Data.Text as T import Data.Time.Calendar (Day, toGregorian) import System.FilePath (takeFileName) import Text.Blaze.Internal (preEscapedString) import Text.Printf (printf) import Hledger.Cli.CliOptions import Hledger.Data import Hledger.Query import Hledger.Reports import Hledger.Utils import Hledger.Web.WebOptions ------------------------------------------------------------------------------- -- Common page layout -- | Standard hledger-web page layout. #if MIN_VERSION_yesod(1,6,0) hledgerLayout :: ViewData -> Text -> HtmlUrl AppRoute -> HandlerFor App Html #else hledgerLayout :: ViewData -> Text -> HtmlUrl AppRoute -> HandlerT App IO Html #endif 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" :: Text showsm = if showsidebar vd then "col-sm-8" else "col-sm-12" :: Text -- | Global toolbar/heading area. topbar :: ViewData -> HtmlUrl AppRoute topbar VD{j, showsidebar} = [hamlet|