diff --git a/.gitignore b/.gitignore index 39b806f8..c17db52f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ dist *.swp +client_session_key.aes diff --git a/TODO b/TODO index b87b2101..adda8355 100644 --- a/TODO +++ b/TODO @@ -3,3 +3,4 @@ Cleanup Parameter stuff. Own module? Interface with formlets? Authentication via e-mail address built in. (eaut.org) OpenID 2 stuff (for direct Google login). Native support for HStringTemplate groups. +Use Text for HStringTemplate throughout diff --git a/Yesod.hs b/Yesod.hs index 6aa47888..5e98a749 100644 --- a/Yesod.hs +++ b/Yesod.hs @@ -21,6 +21,7 @@ module Yesod , module Yesod.Resource , module Data.Object.Html , module Yesod.Rep + , module Yesod.Templates , module Data.Convertible.Text , Application ) where @@ -33,5 +34,6 @@ import Yesod.Handler import Yesod.Resource import Hack (Application) import Yesod.Rep +import Yesod.Templates import Data.Object.Html import Data.Convertible.Text diff --git a/Yesod/Rep.hs b/Yesod/Rep.hs index c69d3ffa..84e42f6b 100644 --- a/Yesod/Rep.hs +++ b/Yesod/Rep.hs @@ -47,6 +47,7 @@ module Yesod.Rep import Data.ByteString.Lazy (ByteString) import qualified Data.ByteString.Lazy as BL import Data.Text.Lazy (Text) +import qualified Data.Text.Lazy as TL import Data.Maybe (mapMaybe) import Data.Function (on) @@ -161,11 +162,11 @@ instance HasReps Plain where plain :: ConvertSuccess x Text => x -> Plain plain = Plain . cs -data Template = Template (StringTemplate String) HtmlObject +data Template = Template (StringTemplate Text) HtmlObject instance HasReps Template where reps = [ (TypeHtml, \(Template t h) -> - return $ cs $ toString $ setAttribute "o" h t) + return $ cs $ render $ setAttribute "o" h t) , (TypeJson, \(Template _ ho) -> return $ cs $ unJsonDoc $ cs ho) ] diff --git a/examples/hellotemplate.lhs b/examples/hellotemplate.lhs index 869f06c6..eed35ddd 100644 --- a/examples/hellotemplate.lhs +++ b/examples/hellotemplate.lhs @@ -4,19 +4,29 @@ import Yesod import Hack.Handler.SimpleServer -data HelloWorld = HelloWorld +data HelloWorld = HelloWorld TemplateGroup instance Yesod HelloWorld where handlers = [$resources| /: Get: helloWorld +/groups: + Get: helloGroup |] +instance YesodTemplates HelloWorld where + templates (HelloWorld g) = g + helloWorld :: Handler HelloWorld TemplateFile helloWorld = return $ TemplateFile "examples/template.html" $ cs [ ("title", "Hello world!") , ("content", "Hey look!! I'm !") ] +helloGroup = template "real-template" $ cs "foo" + main :: IO () -main = putStrLn "Running..." >> run 3000 (toHackApp HelloWorld) +main = do + putStrLn "Running..." + stg <- loadTemplates "examples" + run 3000 (toHackApp $ HelloWorld stg) \end{code} diff --git a/examples/real-template.st b/examples/real-template.st new file mode 100644 index 00000000..4348e29e --- /dev/null +++ b/examples/real-template.st @@ -0,0 +1 @@ +This is a more realistic template. diff --git a/yesod.cabal b/yesod.cabal index 67c30672..05820d8e 100644 --- a/yesod.cabal +++ b/yesod.cabal @@ -62,6 +62,7 @@ library Yesod.Handler Yesod.Resource Yesod.Yesod + Yesod.Templates Data.Object.Html Hack.Middleware.MethodOverride Hack.Middleware.ClientSession