X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=Main.hs;h=a52b038feac63fd30f837288f8ef7dee9be66449;hb=0c6dd605b59c2f36cdd76eabdf4540dae424d105;hp=8df5e74512d59202e045879579251682846208ce;hpb=a3c05f5d3f4be5f28a3eae7739f138a07fa263ad;p=yawbih.git diff --git a/Main.hs b/Main.hs index 8df5e74..a52b038 100644 --- a/Main.hs +++ b/Main.hs @@ -1,19 +1,21 @@ module Main where -import CGI hiding (div, head, map, span) +import CGI hiding (div, head, map, span, Text) import RawCGIInternal import CGIOutput import CGITypes import System import Wiki +import Text.ParserCombinators.Parsec + testDB = createPGB "wave" "wiki" "wiki" "12wiki34db" --main = start [] cgi main = do db <- testDB - runWithHook [] (\(key:act) -> sp db key act ) $ sp db "MainPage" [] + runWithHook [] (\(key:act) -> sp db key) $ sp db "MainPage" ps a = standardQuery "Hello" a @@ -24,24 +26,25 @@ editPage db key = do Just (x,_) -> return x standardQuery key $ do t <- p $ makeTextarea s' (attr_SS "rows" "10" ## attr_SS "cols" "75" ## attr_SS "colspan" "2") - p (text "Author: ") + p empty + text "Author: " a <- textInputField (fieldSIZE 20) - p (text "Comment: ") + p empty + text "Comment: " c <- textInputField (fieldSIZE 20) --p $ submit (F2 t a) testing (attr "value" "Send") p $ defaultSubmit (F3 t a c) (savePage db key) (attr "value" "Send") --submit0 (sp db key []) (attr "value" "Send1") -sp db key _ = do +sp db key = do s <- io $ getCurrent db key standardQuery key $ showPage db key s savePage db key (F3 t a c) = do - s <- io $ update db key fulltext author comment + io $ update db key fulltext author comment + s <- io $ getCurrent db key standardQuery key $ do - text "Updated with revision: " - text s - address (hlink (URL {unURL = ("wiki?"++key)}) (text "Back to keyword") ) + showPage db key s where fulltext = value t author = value a @@ -51,11 +54,41 @@ showPage db key s = do case s of Nothing -> text "No text added for this keyword" Just (full, date) -> do - text full + case parse wikiParser "" full of + Right n -> ex n + Left e -> do + text "PARSE ERROR: " + text (show e) + p $ text full p $ text $ "Last edited: "++date footer db key footer db key = do hr empty - submit0 (editPage db key) (attr "value" "Edit") - --address (hlink (URL {unURL = ("wiki?"++key++"+edit")}) (text "Edit this page") ) + submitLink0 (editPage db key) (text "Edit this page") + text " Keyword: " + activate (sp db) textInputField empty + --address (hlink (URL {unURL = ("wiki?"++key++"+edit")}) (text "Edit this page") + +ex [] = return () +ex ((Paragraph):xs) = do + p empty + ex xs +ex ((Text s):xs) = do + text s + ex xs +ex ((Link l d):xs) = do + hlink (URL {unURL = ("wiki?"++l)}) (text d) + ex xs + +ex2 [] = [] +ex2 ((Paragraph):xs) = "

"++ex2 xs +ex2 ((Text s):xs) = s++ex2 xs +ex2 ((Link l d):xs) = ""++ex2 xs + + +test s = case parse wikiParser "" s of + Right n -> do + print (ex2 n) + Left e -> do + print e