From a3c05f5d3f4be5f28a3eae7739f138a07fa263ad Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Thu, 9 Dec 2004 20:01:32 +0000 Subject: [PATCH] Basic stuff works now --- Main.hs | 70 ++++++++++++++++++++++++++++++++++++++++++++------------- Wiki.hs | 13 +++++------ 2 files changed, 60 insertions(+), 23 deletions(-) diff --git a/Main.hs b/Main.hs index 93a5616..8df5e74 100644 --- a/Main.hs +++ b/Main.hs @@ -3,19 +3,59 @@ module Main where import CGI hiding (div, head, map, span) import RawCGIInternal import CGIOutput +import CGITypes +import System +import Wiki -main = start [] cgi - -cgi CGIInfo {cgiUrl = url, cgiPathInfo = pi, cgiContentType = ct, cgiContents = c, cgiCookies = co, cgiArgs = as, cgiHandle = h} parms = do - putStr "content-type: text/html\n\n" - print parms - print url - print pi - print ct - print co - print co - print as - print h - case assocParm "test" parms of - Nothing -> putStr "Parameter 'test' not provided" - Just x -> putStr $ "Value of test = "++x +testDB = createPGB "wave" "wiki" "wiki" "12wiki34db" + +--main = start [] cgi + +main = do + db <- testDB + runWithHook [] (\(key:act) -> sp db key act ) $ sp db "MainPage" [] + +ps a = standardQuery "Hello" a + +editPage db key = do + s <- io $ getCurrent db key + s' <- case s of + Nothing -> return "" + 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: ") + a <- textInputField (fieldSIZE 20) + p (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 + 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 + standardQuery key $ do + text "Updated with revision: " + text s + address (hlink (URL {unURL = ("wiki?"++key)}) (text "Back to keyword") ) + where + fulltext = value t + author = value a + comment = value c + +showPage db key s = do + case s of + Nothing -> text "No text added for this keyword" + Just (full, date) -> do + 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") ) diff --git a/Wiki.hs b/Wiki.hs index 1708f57..d6ece0d 100644 --- a/Wiki.hs +++ b/Wiki.hs @@ -1,6 +1,7 @@ module Wiki ( - Backend + Backend (getCurrent,getList,get,setCurrent,update) ,PGB + ,createPGB ) where @@ -53,20 +54,16 @@ instance Backend PGB where setCurrent (PGB db) key id = do full <- selectReturnTuples db $ "SELECT keyword FROM fulltexts WHERE keyword="++tov key++" AND id='"++id++"'" - cur <- selectReturnTuples db $ "SELECT keyword FROM curtexts WHERE keyword='"++tov key++"'" + cur <- selectReturnTuples db $ "SELECT keyword FROM curtexts WHERE keyword="++tov key case full of [[]] -> do - print "No text found with this id and key" return False _ -> do rows <- case cur of - [] -> do - print "No link found in current, inserting" - execute db $ "INSERT INTO current (keyword, id) VALUES ("++tov id++","++tov key++")" + [[]] -> do + execute db $ "INSERT INTO current (keyword, id) VALUES ("++tov key++","++tov id++")" _ -> do - print "Link found in current, updating" execute db $ "UPDATE current SET id = "++tov id++" WHERE keyword = "++tov key - print rows if rows == 1 then return True else return False -- 2.39.2