From b87c3c4ca74d48b581faf8212f7b80cfe8bae200 Mon Sep 17 00:00:00 2001 From: SJost Date: Thu, 11 Oct 2018 12:04:40 +0200 Subject: [PATCH] Fixes #202. Not a bug actually. --- models | 4 ++-- src/Handler/Utils/Form.hs | 6 ++---- src/Utils/Form.hs | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/models b/models index 594b69fad..194a9c063 100644 --- a/models +++ b/models @@ -150,7 +150,7 @@ SubmissionFile isDeletion Bool -- only set if isUpdate is also set, but file was deleted by corrector UniqueSubmissionFile file submission isUpdate deriving Show -SubmissionUser +SubmissionUser -- Actual submission participant user UserId submission SubmissionId UniqueSubmissionUser user submission @@ -161,7 +161,7 @@ SubmissionGroupEdit user UserId time UTCTime submissionGroup SubmissionGroupId -SubmissionGroupUser +SubmissionGroupUser -- Registered submission groups, independent of actual SubmissionUser submissionGroup SubmissionGroupId user UserId UniqueSubmissionGroupUser submissionGroup user diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index c5ba85946..78ddbe393 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -165,18 +165,16 @@ buttonForm csrf = do $forall bView <- btnViews ^{fvInput bView} |] - $logDebugS "FormResult" $ tshow results return (accResult results,widget) where accResult :: Foldable f => f (FormResult (Maybe a)) -> FormResult a accResult = Foldable.foldr accResult' FormMissing accResult' :: FormResult (Maybe a) -> FormResult a -> FormResult a - -- TODO: Does not work for Forms with more than 3 buttons, since all deliver FormFailure except for one! - -- TODO: Maybe change buttonField? + -- Find the single FormSuccess Just _; Expected behaviour: all buttons deliver FormFailure, except for one. accResult' (FormSuccess (Just _)) (FormSuccess _) = FormFailure ["Ambiguous button parse"] accResult' (FormSuccess (Just x)) _ = FormSuccess x - accResult' _ x@(FormSuccess _) = x --SJ: Is this safe? Shouldn't Failure override Success? + accResult' _ x@(FormSuccess _) = x --Safe: most buttons deliver FormFailure, one delivers FormSuccess accResult' (FormSuccess Nothing) x = x accResult' FormMissing _ = FormMissing accResult' (FormFailure errs) _ = FormFailure errs diff --git a/src/Utils/Form.hs b/src/Utils/Form.hs index 9a96781ef..939169e9b 100644 --- a/src/Utils/Form.hs +++ b/src/Utils/Form.hs @@ -195,7 +195,7 @@ buttonField btn = Field {fieldParse, fieldView, fieldEnctype} fieldParse [] _ = return $ Right Nothing fieldParse [str] _ | str == toPathPiece btn = return $ Right $ Just btn - | otherwise = return $ Left "Wrong button value" -- SJ: Right Nothing?! + | otherwise = return $ Left "Wrong button value" fieldParse _ _ = return $ Left "Multiple button values" combinedButtonField :: (Button site a, Show (ButtonCssClass site)) => [a] -> AForm (HandlerT site IO) [Maybe a]