From 74fbfee1c9886a0cc562f4662dae0c900134a6d8 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Mon, 19 Sep 2011 15:52:15 +0300 Subject: [PATCH] Option (for selectField) --- yesod-form/Yesod/Form/Fields.hs | 99 +++++++++++++++++++++++---------- yesod-form/yesod-form.cabal | 3 +- 2 files changed, 73 insertions(+), 29 deletions(-) diff --git a/yesod-form/Yesod/Form/Fields.hs b/yesod-form/Yesod/Form/Fields.hs index 36992998..32dfb93f 100644 --- a/yesod-form/Yesod/Form/Fields.hs +++ b/yesod-form/Yesod/Form/Fields.hs @@ -31,6 +31,13 @@ module Yesod.Form.Fields -- * File 'AForm's , fileAFormReq , fileAFormOpt + -- * Options + , selectField' + , radioField' + , Option (..) + , optionsPersist + , optionsPairs + , optionsEnum ) where import Yesod.Form.Types @@ -48,7 +55,7 @@ import Text.HTML.SanitizeXSS (sanitizeBalance) import Control.Monad (when, unless) import Data.List (intersect, nub) import Data.Either (rights) -import Data.Maybe (catMaybes) +import Data.Maybe (catMaybes, listToMaybe) import qualified Blaze.ByteString.Builder.Html.Utf8 as B import Blaze.ByteString.Builder (writeByteString, toLazyByteString) @@ -60,12 +67,16 @@ import qualified Data.ByteString.Lazy as L import Data.Text (Text, unpack, pack) import qualified Data.Text.Read import Control.Monad.IO.Class (liftIO) +import Control.Monad.Trans.Class (lift) import Control.Applicative ((<$>)) import qualified Data.Map as Map -import Yesod.Handler (newIdent) +import Yesod.Handler (newIdent, liftIOHandler) import Yesod.Request (FileInfo) +import Yesod.Core (toSinglePiece, GGHandler, SinglePiece) +import Yesod.Persist (selectList, runDB, Filter, SelectOpt, YesodPersistBackend, Key, YesodPersist, PersistEntity, PersistBackend) + #if __GLASGOW_HASKELL__ >= 700 #define WHAMLET whamlet #define HAMLET hamlet @@ -290,10 +301,13 @@ urlField = Field } selectField :: (Eq a, RenderMessage master FormMessage) => [(Text, a)] -> Field sub master a -selectField = selectFieldHelper - (\theId name inside -> [WHAMLET|^{inside}|]) -- outside + (\_theId _name isSel -> [WHAMLET|