* write your own async jsLoader widget. * Suport loading from the bottom of body tag. Bottom of the page is actually the best default until you profile your application.
91 lines
2.2 KiB
Haskell
91 lines
2.2 KiB
Haskell
{-# LANGUAGE TemplateHaskell #-}
|
|
{-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
|
|
module Yesod.Core
|
|
( -- * Type classes
|
|
Yesod (..)
|
|
, YesodDispatch (..)
|
|
, RenderRoute (..)
|
|
-- ** Breadcrumbs
|
|
, YesodBreadcrumbs (..)
|
|
, breadcrumbs
|
|
-- * Types
|
|
, Approot (..)
|
|
-- * Utitlities
|
|
, maybeAuthorized
|
|
, widgetToPageContent
|
|
-- * Defaults
|
|
, defaultErrorHandler
|
|
-- * Data types
|
|
, AuthResult (..)
|
|
, unauthorizedI
|
|
-- * Logging
|
|
, LogLevel (..)
|
|
, formatLogMessage
|
|
, fileLocationToString
|
|
, logDebug
|
|
, logInfo
|
|
, logWarn
|
|
, logError
|
|
, logOther
|
|
-- * JS loaders
|
|
, loadJsYepnope
|
|
, ScriptLoadPosition (..)
|
|
-- * Misc
|
|
, yesodVersion
|
|
, yesodRender
|
|
-- * Re-exports
|
|
, module Yesod.Content
|
|
, module Yesod.Dispatch
|
|
, module Yesod.Handler
|
|
, module Yesod.Request
|
|
, module Yesod.Widget
|
|
, module Yesod.Message
|
|
) where
|
|
|
|
import Yesod.Internal.Core
|
|
import Yesod.Content
|
|
import Yesod.Dispatch
|
|
import Yesod.Handler
|
|
import Yesod.Request
|
|
import Yesod.Widget
|
|
import Yesod.Message
|
|
|
|
import Language.Haskell.TH.Syntax
|
|
import qualified Language.Haskell.TH.Syntax as TH
|
|
import Data.Text (Text)
|
|
|
|
logTH :: LogLevel -> Q Exp
|
|
logTH level =
|
|
[|messageLoggerHandler $(qLocation >>= liftLoc) $(TH.lift level)|]
|
|
where
|
|
liftLoc :: Loc -> Q Exp
|
|
liftLoc (Loc a b c d e) = [|Loc $(TH.lift a) $(TH.lift b) $(TH.lift c) $(TH.lift d) $(TH.lift e)|]
|
|
|
|
-- | Generates a function that takes a 'Text' and logs a 'LevelDebug' message. Usage:
|
|
--
|
|
-- > $(logDebug) "This is a debug log message"
|
|
logDebug :: Q Exp
|
|
logDebug = logTH LevelDebug
|
|
|
|
-- | See 'logDebug'
|
|
logInfo :: Q Exp
|
|
logInfo = logTH LevelInfo
|
|
-- | See 'logDebug'
|
|
logWarn :: Q Exp
|
|
logWarn = logTH LevelWarn
|
|
-- | See 'logDebug'
|
|
logError :: Q Exp
|
|
logError = logTH LevelError
|
|
|
|
-- | Generates a function that takes a 'Text' and logs a 'LevelOther' message. Usage:
|
|
--
|
|
-- > $(logOther "My new level") "This is a log message"
|
|
logOther :: Text -> Q Exp
|
|
logOther = logTH . LevelOther
|
|
|
|
-- | Return an 'Unauthorized' value, with the given i18n message.
|
|
unauthorizedI :: RenderMessage master msg => msg -> GHandler sub master AuthResult
|
|
unauthorizedI msg =do
|
|
mr <- getMessageRender
|
|
return $ Unauthorized $ mr msg
|