X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=Main.hs;h=324241616b6b4c462ceceddd58b41fb525af98e1;hb=ee02e144cc032d02afc0aaf3b1e73a1a68963ac6;hp=b261901b66d582807a39efe272dd658d9d40b4e2;hpb=411547157fb221f10c8620e2a92efe8e5219e82d;p=yawbih.git diff --git a/Main.hs b/Main.hs index b261901..3242416 100644 --- a/Main.hs +++ b/Main.hs @@ -15,7 +15,7 @@ testDB = createPGB "wave" "wiki" "wiki" "12wiki34db" main = do db <- testDB - runWithHook [] (\(key:act) -> sp db key) $ sp db "MainPage" + runWithHook [] (\(key:act) -> showPage db (filter (/= '\\') key)) $ showPage db "MainPage" ps a = standardQuery "Hello" a @@ -36,39 +36,72 @@ editPage db key = do p $ defaultSubmit (F3 t a c) (savePage db key) (attr "value" "Send") --submit0 (sp db key []) (attr "value" "Send1") -sp db key = do - s <- io $ getCurrent db key - standardQuery key $ showPage db key s savePage db key (F3 t a c) = do io $ update db key fulltext author comment - s <- io $ getCurrent db key - standardQuery key $ do - showPage db key s + showPage db key where fulltext = value t author = value a comment = value c -showPage db key s = do +showPage db key = do + s <- io $ getCurrent db key + standardQuery key $ do case s of Nothing -> text "No text added for this keyword" Just (full, date) -> do - 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 + parseText full + p $ tt $ text $ "Last edited: "++date footer db key +parseText full = case parse wikiParser "" full of + Right n -> ex n + Left e -> do + text "PARSE ERROR: " + text (show e) + p $ text full + footer db key = do hr empty table $ tr $ do - td $ submitLink0 (editPage db key) (text "Edit this page") - td $ text "Keyword: " >> activate (sp db) textInputField empty + td $ submitLink0 (editPage db key) (text "Edit this keyword") + td $ submitLink0 (listRevs db key) (text "List old versions") + td $ text "Keyword: " + td $ activate (showPage db) textInputField empty + +listRevs db key = do + list <- io $ getList db key + standardQuery key $ table $ do + tr $ mapM (\header -> th (text header)) + ["Id", "Date", "Author", "Comment"] + mapM (revRow db key) list + +linkKey db key = submitLink0 (showPage db key) (text key) +revRow db key (id, date, author, comment) = tr $ do + td $ submitLink0 (showRev db key id) (text id) + td $ text date + td $ linkKey db author + td $ text comment + +showRev db key id = do + s <- io $ get db key id + standardQuery key $ do + case s of + Nothing -> text "No such revision" + Just s -> parseText s + p empty + submitLink0 (changeCurrent db key id) (text "Set this version as the current one") + footer db key +changeCurrent db key id = do + b <- io $ setCurrent db key id + if b then showPage db key + else standardQuery key $ do + text "Could not set this revision as the current active one." + p empty + linkKey db key + ex [] = return () ex ((Paragraph):xs) = do p empty @@ -79,11 +112,34 @@ ex ((Text s):xs) = do ex ((Link l d):xs) = do hlink (URL {unURL = ("wiki?"++l)}) (text d) ex xs +ex ((Bold d):xs) = do + b (ex d) + ex xs +ex ((Emph d):xs) = do + em (ex d) + ex xs +ex ((Heading n d):xs) = do + heading n $ ex d + ex xs +ex ((Url l):xs) = do + hlink (URL {unURL = ("wiki?"++l)}) (text l) + ex xs + +heading 1 = h1 +heading 2 = h2 +heading 3 = h3 +heading 4 = h4 +heading 5 = h5 +heading 6 = h6 ex2 [] = [] ex2 ((Paragraph):xs) = "

"++ex2 xs ex2 ((Text s):xs) = s++ex2 xs ex2 ((Link l d):xs) = ""++ex2 xs +ex2 ((Bold d):xs) = ""++ex2 d++""++ex2 xs +ex2 ((Emph d):xs) = ""++ex2 d++""++ex2 xs +ex2 ((Heading n d):xs) = ""++ex2 d++""++ex2 xs +ex2 ((Url l):xs) = ""++ex2 xs test s = case parse wikiParser "" s of