module MFlow.Wai.Blaze.Html.All (
module Data.TCache
,module MFlow
,module MFlow.Wai
,module MFlow.Forms
,module MFlow.Forms.Widgets
,module MFlow.Forms.Blaze.Html
,module MFlow.Forms.Admin
,module Network.Wai
,module Network.Wai.Handler.Warp
,module Control.Applicative
,module Text.Blaze.Html5
,module Text.Blaze.Html5.Attributes
,module Control.Monad.IO.Class
,runServerTransient
,runServer
) where
import MFlow
import MFlow.Wai
import MFlow.Forms
import MFlow.Forms.Widgets
import MFlow.Forms.XHtml
import MFlow.Forms.Admin
import MFlow.Forms.Blaze.Html
import Text.Blaze.Html5 hiding (map)
import Text.Blaze.Html5.Attributes hiding (label,span,style,cite,title,summary,step,form)
import Network.Wai
import Network.Wai.Handler.Warp
import Data.TCache
import Text.Blaze.Internal(text)
import Control.Workflow (Workflow)
import Control.Applicative
import Control.Monad.IO.Class
import System.Environment
import Data.Maybe(fromMaybe)
import Data.Char(isNumber)
runServerTransient :: FormInput view => FlowM view IO () -> IO Bool
runServerTransient f= do
addMessageFlows[("", transient $ runFlow f)]
porti <- getPort
wait $ run porti waiMessageFlow
getPort= do
args <- getArgs
port <- case args of
port:xs -> return port
_ -> do
env <- getEnvironment
return $ fromMaybe "80" $ lookup "PORT" env
let porti= if and $ map isNumber port then fromIntegral $ read port
else 80
putStr "using port "
print porti
return porti
runServer :: FormInput view => FlowM view (Workflow IO) () -> IO Bool
runServer f= do
addMessageFlows[("", runFlow f)]
porti <- getPort
wait $ run porti waiMessageFlow