From db06aeff0ec020847bc863d1cd7ad888445dd4a0 Mon Sep 17 00:00:00 2001 From: fr33domlover Date: Sat, 30 Apr 2016 21:26:54 +0000 Subject: [PATCH] New ticket form --- src/Vervis/Form/Ticket.hs | 45 +++++++++++++++++++++++++++++++++++++++ vervis.cabal | 1 + 2 files changed, 46 insertions(+) create mode 100644 src/Vervis/Form/Ticket.hs diff --git a/src/Vervis/Form/Ticket.hs b/src/Vervis/Form/Ticket.hs new file mode 100644 index 0000000..7088a65 --- /dev/null +++ b/src/Vervis/Form/Ticket.hs @@ -0,0 +1,45 @@ +{- This file is part of Vervis. + - + - Written in 2016 by fr33domlover . + - + - ♡ Copying is an act of love. Please copy, reuse and share. + - + - The author(s) have dedicated all copyright and related and neighboring + - rights to this software to the public domain worldwide. This software is + - distributed without any warranty. + - + - You should have received a copy of the CC0 Public Domain Dedication along + - with this software. If not, see + - . + -} + +module Vervis.Form.Ticket + ( newTicketForm + ) +where + +import Prelude + +import Control.Monad.IO.Class (liftIO) +import Control.Monad.Trans.Class (lift) +import Data.Time.Clock (getCurrentTime) +import Yesod.Form + +import Vervis.Foundation (Form, Handler) +import Vervis.Model + +--TODO use custom fields to ensure uniqueness or other constraints? +--TODO stuff like number and created - do I generate them here using monadic +-- form or do I rely on handler to provide? which approach is better? + +newTicketAForm :: ProjectId -> Int -> AForm Handler Ticket +newTicketAForm pid number = Ticket + <$> pure pid + <*> pure number + <*> lift (liftIO getCurrentTime) + <*> areq textField "Title*" Nothing + <*> (maybe "" unTextarea <$> aopt textareaField "Description (Markdown)" Nothing) + <*> pure False + +newTicketForm :: ProjectId -> Int -> Form Ticket +newTicketForm pid number = renderDivs $ newTicketAForm pid number diff --git a/vervis.cabal b/vervis.cabal index 7125f0a..b7ba608 100644 --- a/vervis.cabal +++ b/vervis.cabal @@ -52,6 +52,7 @@ library Vervis.Form.Person Vervis.Form.Project Vervis.Form.Repo + Vervis.Form.Ticket Vervis.Foundation Vervis.Git Vervis.Import