[Fencommits] fenserve: use the ?root set in main everywhere, *except* returnTo
Tuukka Hastrup
Tuukka.Hastrup at iki.fi
Sun May 27 16:00:36 EEST 2007
Sun May 27 15:58:02 EEST 2007 Tuukka Hastrup <Tuukka.Hastrup at iki.fi>
* use the ?root set in main everywhere, *except* returnTo
diff -rN -u old-fenserve/fendata/Main.hs new-fenserve/fendata/Main.hs
--- old-fenserve/fendata/Main.hs 2007-05-27 16:00:36.000000000 +0300
+++ new-fenserve/fendata/Main.hs 2007-05-27 16:00:36.000000000 +0300
@@ -122,14 +122,15 @@
else toHTML "(Incomplete expression.)"
rendered = let ?state=s; ?link=True; ?name=name in renderExp exp id string
env = Map.fromList $ zip [0..length args-1] args
- saveLinks = formP "addpotion" $ (+++hidden "exp" (show exp)) $
- (+++link ("makefun?exp="++escape' (show exp)) "[Save as...]") $
+ saveLinks = formP (?root++"addpotion") $ (+++hidden "exp" (show exp)) $
+ (+++link (?root++"makefun?exp="++escape' (show exp))
+ "[Save as...]") $
flip (maybe $ HTML "") name $ \name' ->
hidden "name" name' +++
button ("[Save as "++name'++"]")+++" "+++mdot+++" "
editText exp old olds ty name s = let ?state = s; ?link = False; ?name=name in
- (formG "editTemplate" $
+ (formG (?root++"editTemplate") $
para (field $ f 1 olds)
+++ para (submit "Submit" +++ hidden "exp" (show exp)
+++ maybe (HTML "") (hidden "name") name
@@ -140,10 +141,11 @@
field = case old of Block _ -> textarea "template" 20 80
Inline _ -> textfield "template"
-edit :: (Exp,Exp,Type,Maybe String) -> MyState -> (HTML, MyState)
+edit :: (?root :: String)
+ => (Exp,Exp,Type,Maybe String) -> MyState -> (HTML, MyState)
edit (exp,old@(Block olds),ty,name) s = editText exp old olds ty name s
edit (exp,old@(Inline olds),ty,name) s = editText exp old olds ty name s
-edit (exp,old,ty,name) s = let ?state = s; ?link = False; ?name=name; ?root = "" in
+edit (exp,old,ty,name) s = let ?state = s; ?link = False; ?name=name in
(para ("Select something to replace '" +++ renderExp' old id ty +++ "' "
+++ "with.") +++ hr
+++ para ("Variables: " +++ cat [linkExp (Var i) (renderVar i)+++" "
@@ -151,16 +153,16 @@
+++ (catFor (filter ((==ty) . expType) $ getPotions s) $ \repl ->
para $ li $ linkExp repl $ renderExp repl id (error "some type"))
, s) where linkExp new = tag "a" [("class", "editLink"),
- ("href", "potion?exp=" ++ show (subst (-1) new exp)
+ ("href", ?root ++ "potion?exp=" ++ show (subst (-1) new exp)
++ maybe "" ("&name="++) name)] .
tag "span" [("class", "editPotion")]
-makeFun :: Request -> MyState -> (HTML, MyState)
-makeFun msg s = let ?state = s; ?link = False; ?name=lookM msg "name"; ?root="" in
+makeFun :: (?root :: String) => Request -> MyState -> (HTML, MyState)
+makeFun msg s = let ?state = s; ?link = False; ?name=lookM msg "name" in
(para ("Save '"+++renderExp' exp id (error "some type")+++"' as the "
+++ "following potion (" +++ code "$(cat)" +++ ", where 'cat' is \
\a category name, marks a hole):")
- +++ formP "addpotion" (para (textarea "template" 3 80 "")
+ +++ formP (?root++"addpotion") (para (textarea "template" 3 80 "")
+++ para (submit "Save") +++ hidden "exp" (show exp)), s)
where Just exp = fmap read $ lookM msg "exp"
@@ -209,13 +211,15 @@
s' = s { stateSidebarPages = stateSidebarPages s ++ [page] }
Just page@(fn,args) = fmap read $ lookM msg "page"
-showTable :: () -> MyState -> (HTML, MyState)
+showTable :: (?root :: String) => () -> MyState -> (HTML, MyState)
showTable () s = (
- let ?root="" in makePage s "List of items in the database" "" $
+ makePage s "List of items in the database" "" $
(new+++) . (hr+++) . (+++new) .
catFor (Map.toList $ stateItems s) $ \(id, Item fields cats) ->
- (+++ para (formP "delItem" (hidden "item" (show id) +++ mdotted
- [ link ("item/"++show id++"?returnTo=table") "[Edit item]"
+ (+++ para (formP (?root++"delItem") (hidden "item" (show id)
+ +++ mdotted
+ [ link (?root++"item/"++show id++"?returnTo=table")
+ "[Edit item]"
, button "[Delete item]"
, ital $ "Categorized as "
+++ commaList (map (bold.capitalize) (Set.toList cats))]))
@@ -223,18 +227,22 @@
. para
. catFor (Map.toList fields) $ \(f,v) ->
bold (capitalize f) +++ ": " +++ v +++ br,
- s) where new = para . formP "newItem" . (+++ hidden "returnTo" "table")
- . (+++ " " +++ mdot +++ " " +++ bold (link "addCategory" "[Add category]"))
+ s) where new = para . formP (?root++"newItem")
+ . (+++ hidden "returnTo" "table")
+ . (+++ " " +++ mdot +++ " "
+ +++ bold (link (?root++"addCategory") "[Add category]"))
. mdotted . for (Map.keys $ stateSchema s) $ \cat ->
button' "cat" cat $ bold ("[New "+++cat+++"]")
-showItem :: String -> Request -> MyState -> (HTML, MyState)
+showItem :: (?root :: String) =>
+ String -> Request -> MyState -> (HTML, MyState)
showItem item req s = let Item fields cats = stateItems s Map.! read item in (
makePage s "Item editor" "" $
formP "" . ((returnTo+++buttons+++hr)+++) . (+++hr+++buttons) .
catFor (Set.toList cats) $ \cat -> let cfs = stateSchema s Map.! cat in
(h3 (capitalize cat) +++) . para
- . (+++ HTML ("<p><a href='../addField?item="++item++"&category="++cat
+ . (+++ HTML ("<p><a href='"++ ?root++"addField?item="++item
+ ++ "&category="++cat
++ "&returnTo=item/"++item++html (escape ("?returnTo="++escape uri))
++ "'>[Add a field to the "++capitalize cat++" category]</a><br>"))
. catFor cfs $ \field ->
@@ -246,18 +254,19 @@
returnTo = flip (maybe $ toHTML "") (lookM req "returnTo") $ \uri -> HTML $
"<input type=hidden name=returnTo value='"++html(escape uri)++"'>"
buttons = HTML $ "<p><button>[Save]</button> "++html mdot++" "++
- "<a href='../"++html uri++"'>[Cancel]</a></form>"
+ "<a href='"++ ?root++html uri++"'>[Cancel]</a></form>"
-updateItem :: String -> Request -> MyState -> (String, MyState)
-updateItem item_s req s = (returnTo, s') where
- returnTo = maybe "" ("../"++) (lookM req "returnTo")
+updateItem :: (?root :: String) =>
+ String -> Request -> MyState -> (String, MyState)
+updateItem item_s req s = (maybe "" (?root++) returnTo, s') where
+ returnTo = lookM req "returnTo"
item = read item_s
s' = s { stateItems = Map.insert item (Item fields' cats) (stateItems s) }
Item fields cats = stateItems s Map.! item
fields' = flip Map.mapWithKey fields $ \k v -> fromMaybe v (lookM req k)
-newItem msg s = ("item/"++show id++returnTo, s') where
+newItem msg s = (?root++"item/"++show id++returnTo, s') where
returnTo = maybe "" (("?returnTo="++) . escape) (lookM msg "returnTo")
id = nextId $ stateItems s
s' = s { stateItems = Map.insert id item $ stateItems s }
More information about the Fencommits
mailing list