diff --git a/Handler/ShowChallenge.hs b/Handler/ShowChallenge.hs index 045ea5b..74c2a06 100644 --- a/Handler/ShowChallenge.hs +++ b/Handler/ShowChallenge.hs @@ -1,6 +1,8 @@ module Handler.ShowChallenge where import Import +import Yesod.Form.Bootstrap3 (BootstrapFormLayout (..), renderBootstrap3, + withSmallInput) import qualified Data.Text.Lazy as TL import Text.Markdown @@ -24,6 +26,33 @@ getChallengeReadmeR name = do showChallengeWidget challenge = $(widgetFile "show-challenge") + +getChallengeSubmissionR :: Text -> Handler Html +getChallengeSubmissionR name = do + (Entity _ challenge) <- runDB $ getBy404 $ UniqueName name + (formWidget, formEnctype) <- generateFormPost submissionForm + challengeLayout True challenge $ challengeSubmissionWidget formWidget formEnctype challenge + +postChallengeSubmissionR :: Text -> Handler TypedContent +postChallengeSubmissionR name = do + ((result, formWidget), formEnctype) <- runFormPost submissionForm + let submissionData = case result of + FormSuccess res -> Just res + _ -> Nothing + Just (description, submissionUrl, submissionBranch) = submissionData + + runViewProgress $ (flip msg) "HAHA" + +challengeSubmissionWidget formWidget formEnctype challenge = $(widgetFile "challenge-submission") + +submissionForm :: Form (Text, Text, Text) +submissionForm = renderBootstrap3 BootstrapBasicForm $ (,,) + <$> areq textField (fieldSettingsLabel MsgSubmissionDescription) Nothing + <*> areq textField (fieldSettingsLabel MsgSubmissionUrl) Nothing + <*> areq textField (fieldSettingsLabel MsgSubmissionBranch) Nothing + + + challengeLayout withHeader challenge widget = do bc <- widgetToPageContent widget defaultLayout $ do diff --git a/config/routes b/config/routes index 5758dce..73a6367 100644 --- a/config/routes +++ b/config/routes @@ -13,3 +13,4 @@ /challenge/#Text ShowChallengeR GET /challenge-readme/#Text ChallengeReadmeR GET +/challenge-submission/#Text ChallengeSubmissionR GET POST diff --git a/messages/en.msg b/messages/en.msg index 6420066..a9a5312 100644 --- a/messages/en.msg +++ b/messages/en.msg @@ -8,3 +8,8 @@ PrivateUrl: private repo (URL) Branch: branch Add: Add! ListChallenges: list challenges +SubmitSolution: Submit a solution to the challenge +Submit: Submit +SubmissionUrl: Submission repo URL +SubmissionBranch: Submission repo branch +SubmissionDescription: Submission description diff --git a/templates/challenge-submission.hamlet b/templates/challenge-submission.hamlet new file mode 100644 index 0000000..8f75ed9 --- /dev/null +++ b/templates/challenge-submission.hamlet @@ -0,0 +1,7 @@ +
+