From 8b885c0dca94d1ec51eb2a60432119676ea6732b Mon Sep 17 00:00:00 2001 From: Filip Gralinski Date: Fri, 4 Sep 2015 23:23:32 +0200 Subject: [PATCH] list and show challenges --- Application.hs | 2 ++ Handler/ListChallenges.hs | 13 +++++++++++++ Handler/ShowChallenge.hs | 10 ++++++++++ config/routes | 2 ++ gonito.cabal | 2 ++ messages/en.msg | 1 + templates/default-layout.hamlet | 1 + templates/list-challenges-core.hamlet | 4 ++++ templates/list-challenges.hamlet | 1 + templates/show-challenge.hamlet | 2 ++ 10 files changed, 38 insertions(+) create mode 100644 Handler/ListChallenges.hs create mode 100644 Handler/ShowChallenge.hs create mode 100644 templates/list-challenges-core.hamlet create mode 100644 templates/list-challenges.hamlet create mode 100644 templates/show-challenge.hamlet diff --git a/Application.hs b/Application.hs index b112579..f56cac2 100644 --- a/Application.hs +++ b/Application.hs @@ -37,6 +37,8 @@ import Handler.Common import Handler.Fay import Handler.Home import Handler.CreateChallenge +import Handler.ListChallenges +import Handler.ShowChallenge import Handler.Shared -- This line actually creates our YesodDispatch instance. It is the second half diff --git a/Handler/ListChallenges.hs b/Handler/ListChallenges.hs new file mode 100644 index 0000000..017949e --- /dev/null +++ b/Handler/ListChallenges.hs @@ -0,0 +1,13 @@ +module Handler.ListChallenges where + +import Import + +getListChallengesR :: Handler Html +getListChallengesR = do + challenges' <- runDB $ selectList [] [Desc ChallengeStamp] + let challenges = map (\(Entity _ v) -> v) challenges' + defaultLayout $ do + setTitle "List challenges" + $(widgetFile "list-challenges") + +listChallengesCore challenges = $(widgetFile "list-challenges-core") diff --git a/Handler/ShowChallenge.hs b/Handler/ShowChallenge.hs new file mode 100644 index 0000000..bd6ceef --- /dev/null +++ b/Handler/ShowChallenge.hs @@ -0,0 +1,10 @@ +module Handler.ShowChallenge where + +import Import + +getShowChallengeR :: Text -> Handler Html +getShowChallengeR name = do + (Entity _ challenge) <- runDB $ getBy404 $ UniqueName name + defaultLayout $ do + setTitle "Show a challenge" + $(widgetFile "show-challenge") diff --git a/config/routes b/config/routes index abaf2fc..749c180 100644 --- a/config/routes +++ b/config/routes @@ -9,3 +9,5 @@ /create-challenge CreateChallengeR GET POST /view-progress/#Int ViewProgressR GET +/list-challenges ListChallengesR GET +/challenge/#Text ShowChallengeR GET diff --git a/gonito.cabal b/gonito.cabal index c1a4ba6..944c07c 100644 --- a/gonito.cabal +++ b/gonito.cabal @@ -26,7 +26,9 @@ library Handler.CreateChallenge Handler.Fay Handler.Home + Handler.ListChallenges Handler.Shared + Handler.ShowChallenge Handler.Extract if flag(dev) || flag(library-only) diff --git a/messages/en.msg b/messages/en.msg index b6e450f..6420066 100644 --- a/messages/en.msg +++ b/messages/en.msg @@ -7,3 +7,4 @@ PublicUrl: public repo (URL) PrivateUrl: private repo (URL) Branch: branch Add: Add! +ListChallenges: list challenges diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet index b1350f4..62140c8 100644 --- a/templates/default-layout.hamlet +++ b/templates/default-layout.hamlet @@ -2,6 +2,7 @@ $maybe user <- maybeUser _{MsgLoggedAs} #{userIdent $ entityVal user} \ | _{MsgCreateChallenge} + \ | _{MsgListChallenges} \ | _{MsgLogOut} $nothing _{MsgLogIn} diff --git a/templates/list-challenges-core.hamlet b/templates/list-challenges-core.hamlet new file mode 100644 index 0000000..fd7cd35 --- /dev/null +++ b/templates/list-challenges-core.hamlet @@ -0,0 +1,4 @@ +$forall challenge <- challenges +
+

#{challengeTitle challenge} +

#{challengeDescription challenge} diff --git a/templates/list-challenges.hamlet b/templates/list-challenges.hamlet new file mode 100644 index 0000000..322eca3 --- /dev/null +++ b/templates/list-challenges.hamlet @@ -0,0 +1 @@ +^{listChallengesCore challenges} diff --git a/templates/show-challenge.hamlet b/templates/show-challenge.hamlet new file mode 100644 index 0000000..76890bd --- /dev/null +++ b/templates/show-challenge.hamlet @@ -0,0 +1,2 @@ +

#{challengeTitle challenge} +

#{challengeDescription challenge}