[bunch of updates to admin console Jeremy Shaw **20120107200345 Ignore-this: 22c1e0f4332042119707b58ab5e90090 ] hunk ./clckwrks-dot-com/Main.hs 6 +import Clckwrks.Admin.Template (defaultAdminMenu) hunk ./clckwrks-dot-com/Main.hs 171 + dm <- nestURL C $ defaultAdminMenu + mapM_ addAdminMenu dm hunk ./clckwrks-plugin-media/Clckwrks/Media/Monad.hs 68 - addAdminMenu "Media Gallery" [("upload", uploadURL)] + addAdminMenu ("Media Gallery", [("upload", uploadURL)]) hunk ./clckwrks/Clckwrks/Admin/Console.hs 4 -import Clckwrks (AdminURL(..), Clck, ClckURL(..), PageId(..), Response, query) +import Clckwrks (AdminURL(..), Clck, Response) hunk ./clckwrks/Clckwrks/Admin/Console.hs 6 -import Clckwrks.Page.Acid (PagesSummary(..)) -import Data.Text (Text) hunk ./clckwrks/Clckwrks/Admin/Console.hs 10 - do pages <- query PagesSummary - template "Administration" () $ + do template "Administration" () $ hunk ./clckwrks/Clckwrks/Admin/Console.hs 12 - -
- -
- <% editList pages %> +

Enter a world of excitement.

hunk ./clckwrks/Clckwrks/Admin/Console.hs 15 -editList :: [(PageId, Text)] -> GenChildList (Clck AdminURL) -editList [] = <%>

There are currently no pages.

-editList pgs = - <%> -

Edit Page

- - - where - editPageLI :: (PageId, Text) -> GenXML (Clck AdminURL) - editPageLI (pid, ttl) = -
  • <% ttl %>
  • hunk ./clckwrks/Clckwrks/Admin/NewPage.hs 6 +import Clckwrks.Admin.Template (template) hunk ./clckwrks/Clckwrks/Admin/NewPage.hs 10 + do method GET + template "Create New Page" () $ +
    + +
    + <|> addfile ./clckwrks/Clckwrks/Admin/Pages.hs hunk ./clckwrks/Clckwrks/Admin/Pages.hs 1 +{-# OPTIONS_GHC -F -pgmFtrhsx #-} +module Clckwrks.Admin.Pages where + +import Clckwrks (AdminURL(..), Clck, ClckURL(..), PageId(..), Response, query) +import Clckwrks.Admin.URL (AdminURL(..)) +import Clckwrks.Admin.Template (template) +import Clckwrks.Page.Acid (PagesSummary(..)) +import Data.Text (Text) +import HSP + +pages :: Clck AdminURL Response +pages = + do pages <- query PagesSummary + template "page list" () $ editList pages + +editList :: [(PageId, Text)] -> GenChildList (Clck AdminURL) +editList [] = <%>

    There are currently no pages.

    +editList pgs = + <%> +

    Edit Page

    + + + where + editPageLI :: (PageId, Text) -> GenXML (Clck AdminURL) + editPageLI (pid, ttl) = +
  • <% ttl %>
  • + hunk ./clckwrks/Clckwrks/Admin/Route.hs 8 +import Clckwrks.Admin.Pages hunk ./clckwrks/Clckwrks/Admin/Route.hs 19 + Pages -> nestURL Admin $ pages hunk ./clckwrks/Clckwrks/Admin/Template.hs 5 -import Clckwrks +import Clckwrks hiding (mapM, sequence) +import Control.Arrow (second) hunk ./clckwrks/Clckwrks/Admin/Template.hs 8 +import Data.String (fromString) +import Data.Text (Text) hunk ./clckwrks/Clckwrks/Admin/Template.hs 11 +import Control.Monad.Instances +import Prelude hiding (mapM, sequence) + +import Data.Monoid +import Data.Foldable +import Data.Traversable hunk ./clckwrks/Clckwrks/Admin/Template.hs 42 +m :: (Monad m) => (b -> m c) -> (a, b) -> m (a, c) +m f x = l $ second f x + +l :: (Monad m) => (a, m b) -> m (a, b) +l (a, m) = + do b <- m + return (a ,b) + +instance (Monoid a) => Monad ((,) a) where + return b = (mempty, b) + (a, b) >>= f = let (a', b') = f b in (a `mappend` a', b') + +instance Foldable ((,) a) where + fold = snd + foldMap f (b, a) = f a + +instance Traversable ((,) a) where + traverse f (c, a) = fmap (\b -> (c, b)) $ f a + sequenceA (c, fa) = fmap (\a -> (c, a)) fa + mapM f (c, a) = + do b <- f a + return (c, b) + sequence (a, m) = do b <- m + return (a, b) + +defaultAdminMenu :: (Monad m) => ClckT ClckURL m [(Text, [(Text, Text)])] +defaultAdminMenu = + do links <- sequence $ map sequence $ map (second (showURL . Admin)) + [ (fromString "Console", Console) + , (fromString "Edit Page", Pages) + , (fromString "New Page", NewPage) + , (fromString "Edit Menu", EditMenu) + ] + return [(fromString "Admin", links)] + hunk ./clckwrks/Clckwrks/Admin/URL.hs 12 + | Pages hunk ./clckwrks/Clckwrks/Monad.hs 167 -addAdminMenu :: (Monad m) => T.Text -> [(T.Text, T.Text)] -> ClckT url m () -addAdminMenu category entries = +addAdminMenu :: (Monad m) => (T.Text, [(T.Text, T.Text)]) -> ClckT url m () +addAdminMenu (category, entries) = hunk ./static/style.css 26 + border-right: 1px solid black; + height: 100%; hunk ./static/style.css 34 - left: 200px; - border-left: 1px solid black; + left: 210px;