packages feed

MFlow-0.4.5.5: Demos/TestREST.hs

{-# OPTIONS  -XCPP #-}
module TestREST(testREST) where
import Data.Monoid
import Data.String



-- to execute it alone, uncomment this
-- #define ALONE
#ifdef ALONE
import MFlow.Wai.Blaze.Html.All
main= runNavigation "" $  transientNav testREST
#else
import MFlow.Wai.Blaze.Html.All hiding(retry, page)
import Menu
#endif

-- A menu with two branches, each one is a sucession of pages

-- 9 pages , each page has a restful link (pagem = ask)

-- to run it alone,  delete "import Menu" and uncomment the next lines

-- main= runNavigation "" $ transientNav testREST

-- pagem= page


testREST= do
  option <- page options

  case option  of
    "1" -> do
          page $ wlink "2" << contentFor "1" 
          page $ wlink "3" << contentFor "2"
          page $ wlink "4" << contentFor "3"
          page $ optionsorexit
          return () 
     
    "a" -> do
          page $ wlink "b" << contentFor "a"
          page $ wlink "c" << contentFor "b"
          page $ wlink "d" << contentFor "c"
          page $ optionsorexit
          return ()

options= h2 << "Choose between:"
         ++> absLink "a" << b << "letters " <++ i << " or "
         <|> absLink "1" << b << "numbers"

optionsorexit= options <|> wlink "home" << p << " or go to home"
          -- if home is pressed, will return(). Otherwise, it will backtrack to one of the
          -- two options since they are abslinks.

contentFor x= do
        p << "page for"
        b << x
        p << "goto next page"
        p << "or press the back button for the previous page"