[Fencommits] fenserve: put 'expand definition' link in sidebar and call it 'edit page; ' other appearance twids

Benja Fallenstein benja.fallenstein at gmail.com
Thu May 24 21:32:01 EEST 2007


Thu May 24 21:31:48 EEST 2007  Benja Fallenstein <benja.fallenstein at gmail.com>
  * put 'expand definition' link in sidebar and call it 'edit page;' other appearance twids
diff -rN -u old-fenserve-1/fendata/Main.hs new-fenserve-1/fendata/Main.hs
--- old-fenserve-1/fendata/Main.hs	2007-05-24 21:32:01.000000000 +0300
+++ new-fenserve-1/fendata/Main.hs	2007-05-24 21:32:01.000000000 +0300
@@ -7,7 +7,7 @@
 import Data.Generics (Typeable, Data, everywhere, mkT)
 import Data.Binary hiding (get,put)
 import Data.List (intersperse)
-import Data.Maybe (fromJust, fromMaybe)
+import Data.Maybe (fromJust, fromMaybe, isJust)
 import Data.Map (Map)
 import qualified Data.Map as Map
 import Data.Set (Set)
@@ -313,25 +313,26 @@
         Right (s, state') -> do put state'; respond (s, html $ link s "link")
         Left e -> respond $ ("", "Internal server error: " ++ show e)
 
-potionGet exp args name s = (let ?state=s; ?link=True; ?name=name in 
-                        makePage title $
-                        renderExp exp id string +++ " " +++ lnk +++ hr
-                    +++ if (isComplete exp)
-                        then (HTML $ head $ evalStateT (runExp env exp) s)
-                        else toHTML "(Incomplete expression.)"
-                       , s) where
+potionGet exp args name s =
+        ( if expandable then makePage rendered expandLink body else
+              makePage "Custom page" "" $
+              tag "div" [("style", "border: 1px solid black; \
+                          \margin-bottom: 1em; padding: 1em; padding-bottom: 0")]
+                  (rendered +++ saveLinks) +++ body
+        , s) where
+    body = if (isComplete exp)
+           then (HTML $ head $ evalStateT (runExp env exp) s)
+           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
-    expanded = expand s exp
-    title = case expanded of
-              Just (e,n) -> let ?state=s; ?link=True; ?name=name in renderExp exp id string
-              Nothing -> toHTML "Custom potion"
-    lnk = case expanded of
-              Just (e,n) -> link ("?exp="++show e++"&name="++n) "[expand definition]"
-              Nothing -> formP "addpotion" $ (+++hidden "exp" (show exp)) $
-                         (+++link ("makefun?exp="++show exp) "[Save as...]") $
-                         flip (maybe $ HTML "") name $ \name' ->
-                             hidden "name" name' +++
-                             button ("[Save as "++name'++"]")+++" "+++mdot+++" "
+    expanded = expand s exp; expandable = isJust expanded
+    expandLink = para $ bold $ link ("?exp="++show e++"&name="++n) "[edit page]"
+        where Just (e,n) = expanded
+    saveLinks = formP "addpotion" $ (+++hidden "exp" (show exp)) $
+                (+++link ("makefun?exp="++show exp) "[Save as...]") $
+                flip (maybe $ HTML "") name $ \name' ->
+                    hidden "name" name' +++
+                    button ("[Save as "++name'++"]")+++" "+++mdot+++" "
 
 potionPost exp args s = (let ?state=s; ?link=True; ?name=Nothing in 
                          renderExp exp id action +++ hr +++ HTML r
@@ -483,7 +484,7 @@
     s' = s { stateItems = Map.delete id $ stateItems s }
     Just id = fmap read $ lookM msg "item"
     
-makePage title body =
+makePage title sidebar body =
     --(tag "title" [] title +++) .
     tag "body" [] $
     tag "div" [("class", "header")]
@@ -491,7 +492,8 @@
                    ("class", "logo")] +++
        h1 ("Fendata | " +++ title)) +++
     tag "div" [("class", "main")] (
-        tag "div" [("class", "sidebar")] "Welcome to Fendata! The sidebar is empty so far." +++
+        tag "div" [("class", "sidebar")] (
+            para "Welcome to Fendata!" +++ sidebar) +++
         tag "div" [("class", "content")] body) +++
     tag "div" [("class", "footer")]
         ("Fendata (c) 2007 by Benja Fallenstein and Tuukka Hastrup. " +++




More information about the Fencommits mailing list