clckwrks-0.22.1: A secure, reliable content management system (CMS) and blogging platform

Safe HaskellNone

Clckwrks.Monad

Synopsis

Documentation

type Clck url = ClckT url (ServerPartT IO)Source

type ClckPlugins = Plugins Theme (ClckT ClckURL (ServerPartT IO) Response) (ClckT ClckURL IO ()) ClckwrksConfig ClckPluginsStSource

ClckPlugins

newtype Plugins theme m hook config st

newtype ClckT url m a Source

Constructors

ClckT 

Fields

unClckT :: RouteT url (StateT ClckState m) a
 

Instances

FilterMonad r m => FilterMonad r (ClckT url m) 
WebMonad r m => WebMonad r (ClckT url m) 
Monad m => MonadState ClckState (ClckT url m) 
MonadTrans (ClckT url) 
IsName n Text => EmbedAsAttr (Clck AdminURL) (Attr n AdminURL) 
IsName n Text => EmbedAsAttr (Clck ClckURL) (Attr n ClckURL) 
Monad m => Monad (ClckT url m) 
Functor m => Functor (ClckT url m) 
MonadPlus m => MonadPlus (ClckT url m) 
(Monad m, Functor m) => Applicative (ClckT url m) 
(Functor m, MonadPlus m) => Alternative (ClckT url m) 
Happstack m => Happstack (ClckT url m) 
(Monad m, HasRqData m) => HasRqData (ClckT url m) 
ServerMonad m => ServerMonad (ClckT url m) 
(Functor m, Monad m) => XMLGen (ClckT url m) 
(Functor m, Monad m) => XMLGenerator (ClckT url m) 
(Functor m, MonadIO m) => IntegerSupply (ClckT url m) 
MonadIO m => MonadIO (ClckT url m) 
Monad m => MonadRoute (ClckT url m) 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) Content 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) UTCTime 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) () 
(Functor m, MonadIO m, Happstack m) => EmbedAsChild (ClckT url m) ClckFormError 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) Html 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) XML 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) Text 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) Text 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) Float 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) Double 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) Integer 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) Int 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) String 
(Functor m, Monad m) => EmbedAsChild (ClckT url m) Char 
(Functor m, Monad m) => EmbedAsAttr (ClckT url m) Attribute 
(Functor m, Monad m) => SetAttr (ClckT url m) XML 
(Functor m, Monad m) => AppendChild (ClckT url m) XML 
(Functor m, Monad m) => GetAcidState (ClckT url m) ProfileDataState 
(Functor m, Monad m) => GetAcidState (ClckT url m) NavBarState 
(Functor m, Monad m) => GetAcidState (ClckT url m) CoreState 
(Functor m, Monad m) => GetAcidState (ClckT url m) ProfileState 
(Functor m, Monad m) => GetAcidState (ClckT url m) AuthState 
(Functor m, Monad m, EmbedAsChild (ClckT url m) a) => EmbedAsChild (ClckT url m) (Maybe a) 
(Functor m, MonadIO m, EmbedAsChild (ClckT url m) a) => EmbedAsChild (ClckT url m) (IO a) 
(Functor m, Monad m, IsName n Text) => EmbedAsAttr (ClckT url m) (Attr n Text) 
(Functor m, Monad m, IsName n Text) => EmbedAsAttr (ClckT url m) (Attr n Text) 
(Functor m, Monad m, IsName n Text) => EmbedAsAttr (ClckT url m) (Attr n Integer) 
(Functor m, Monad m, IsName n Text) => EmbedAsAttr (ClckT url m) (Attr n Int) 
(Functor m, Monad m, IsName n Text) => EmbedAsAttr (ClckT url m) (Attr n Bool) 
(Functor m, Monad m, IsName n Text) => EmbedAsAttr (ClckT url m) (Attr n Char) 
(Functor m, Monad m, IsName n Text) => EmbedAsAttr (ClckT url m) (Attr n String) 
(EmbedAsChild (ClckT url1 m) a, ~ * url1 url2) => EmbedAsChild (ClckT url1 m) (ClckT url2 m a) 

type ClckFormT error m = Form m [Input] error [XMLGenT m XML] ()Source

ClckForm - type for reform forms

data ClckFormError Source

error returned when a reform Form fails to validate

data family ChildType m1

data ClckwrksConfig Source

Constructors

ClckwrksConfig 

Fields

clckHostname :: String

external name of the host

clckPort :: Int

port to listen on

clckTLS :: Maybe TLSSettings

HTTPS

clckHidePort :: Bool

hide port number in URL (useful when running behind a reverse proxy)

clckJQueryPath :: FilePath

path to jquery.js on disk

clckJQueryUIPath :: FilePath

path to jquery-ui.js on disk

clckJSTreePath :: FilePath

path to jstree.js on disk

clckJSON2Path :: FilePath

path to JSON2.js on disk

clckTopDir :: Maybe FilePath

path to top-level directory for all acid-state filesfile uploadsetc

clckEnableAnalytics :: Bool

enable google analytics

clckInitHook :: Text -> ClckState -> ClckwrksConfig -> IO (ClckState, ClckwrksConfig)

init hook

data family AttributeType m1

calcBaseURI :: ClckwrksConfig -> TextSource

calculate the baseURI from the clckHostname, clckPort and clckHidePort options

evalClckTSource

Arguments

:: Monad m 
=> (url -> [(Text, Maybe Text)] -> Text)

function to act as showURLParams

-> ClckState

initial ClckState

-> ClckT url m a

ClckT to evaluate

-> m a 

evaluate a ClckT returning the inner monad

similar to evalStateT.

execClckTSource

Arguments

:: Monad m 
=> (url -> [(Text, Maybe Text)] -> Text)

function to act as showURLParams

-> ClckState

initial ClckState

-> ClckT url m a

ClckT to evaluate

-> m ClckState 

execute a ClckT returning the final ClckState

similar to execStateT.

runClckTSource

Arguments

:: Monad m 
=> (url -> [(Text, Maybe Text)] -> Text)

function to act as showURLParams

-> ClckState

initial ClckState

-> ClckT url m a

ClckT to evaluate

-> m (a, ClckState) 

run a ClckT

similar to runStateT.

mapClckTSource

Arguments

:: (m (a, ClckState) -> n (b, ClckState))

transformation function

-> ClckT url m a

initial monad

-> ClckT url n b 

map a transformation function over the inner monad

similar to mapStateT

withRouteClckT :: ((url' -> [(Text, Maybe Text)] -> Text) -> url -> [(Text, Maybe Text)] -> Text) -> ClckT url m a -> ClckT url' m aSource

change the route url

data ClckState Source

Constructors

ClckState 

Fields

acidState :: Acid
 
uniqueId :: TVar Integer
 
adminMenus :: [(Text, [(Set Role, Text, Text)])]
 
enableAnalytics :: Bool

enable Google Analytics

plugins :: ClckPlugins
 
requestInit :: ServerPart ()

an action which gets called at the beginning of each request

Instances

getUserId :: (Happstack m, GetAcidState m AuthState, GetAcidState m ProfileState) => m (Maybe UserId)Source

The the UserId of the current user. While return Nothing if they are not logged in.

data Content Source

a wrapper which identifies how to treat different Text values when attempting to embed them.

In general Content values have already been flattenpreprocessedetc and are now basic formats like textplain@, @texthtml, etc

addAdminMenu :: Monad m => (Text, [(Set Role, Text, Text)]) -> ClckT url m ()Source

add an Admin menu

appendRequestInit :: Monad m => ServerPart () -> ClckT url m ()Source

append an action to the request init

addPreProc :: MonadIO m => Plugins theme n hook config ClckPluginsSt -> (Text -> ClckT ClckURL IO Text) -> m ()Source

getPreProcessors :: MonadIO m => Plugins theme n hook config ClckPluginsSt -> ClckT url m [Text -> ClckT ClckURL IO Text]Source

getEnableAnalytics :: (Functor m, MonadState ClckState m) => m BoolSource

get the Bool value indicating if Google Analytics should be enabled or not

googleAnalytics :: XMLGenT (Clck url) XMLSource

create a google analytics tracking code block

This will under two different conditions:

getUnique :: (Functor m, MonadIO m) => ClckT url m IntegerSource

get a unique Integer.

Only unique for the current request

setUnique :: (Functor m, MonadIO m) => Integer -> ClckT url m ()Source

requiresRole_ :: Happstack m => (ClckURL -> [(Text, Maybe Text)] -> Text) -> Set Role -> url -> ClckT u m urlSource

query :: forall event m. (QueryEvent event, GetAcidState m (EventState event), Functor m, MonadIO m, MonadState ClckState m) => event -> m (EventResult event)Source

similar to the normal acid-state query except it automatically gets the correct AcidState handle from the environment

update :: forall event m. (UpdateEvent event, GetAcidState m (EventState event), Functor m, MonadIO m, MonadState ClckState m) => event -> m (EventResult event)Source

similar to the normal acid-state update except it automatically gets the correct AcidState handle from the environment

nestURL :: (url1 -> url2) -> ClckT url1 m a -> ClckT url2 m aSource

withAbs :: Happstack m => ClckT url m a -> ClckT url m aSource

withAbs' :: Text -> ClckT url m a -> ClckT url m aSource

segments :: Text -> Parser a -> Parser [Segment a]Source

transform :: Monad m => (cmd -> m Builder) -> [Segment cmd] -> m BuilderSource

module HSP.XML