This is the list of pages so far:
- About the growing trend of client side frameworks, see this
- Composable caching: Now the programmer can express independently the caching policies for each widget.
- Links are verified at compilation time... with the exception of the ones generated at run time
- How to create complex dynamic applications GUI-like: An example app that create, edit and test MFlow forms
This is the code of the wiki widget, that render this page:
wiki = page $ do
pagname <- getRestParam `onNothing` return "index"
(docTypeHtml $ El.head $ El.title << pagname)
<<< ( h1 ! At.style "text-align:center" <<< tFieldEd "editor" (wikip ++pagname ++ "title.html") (fromString pagname))
**> tFieldEd "editor" (wikip ++ pagname ++ "body.html") "Enter the body"
getRestParam read the next segment of the REST path. If no remaining segment, "index" is used. tfieldEd is a widget that renders an HTML text that can be edited by the "editor" user. It present the static page defined in the second parameter.
The code uses blaze-html combinators and MFlow combinators.
There are two fields: the title of the page and the body of the page. This content is in "wiki/indexbody.html"