ToForm and ToField
This commit is contained in:
parent
122f7f85a6
commit
0fa08a7355
@ -10,10 +10,10 @@ module Yesod.Form
|
|||||||
( module Yesod.Form.Types
|
( module Yesod.Form.Types
|
||||||
, module Yesod.Form.Functions
|
, module Yesod.Form.Functions
|
||||||
, module Yesod.Form.Fields
|
, module Yesod.Form.Fields
|
||||||
-- FIXME , module Yesod.Form.Class
|
, module Yesod.Form.Class
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Yesod.Form.Types
|
import Yesod.Form.Types
|
||||||
import Yesod.Form.Functions
|
import Yesod.Form.Functions
|
||||||
import Yesod.Form.Fields
|
import Yesod.Form.Fields
|
||||||
-- FIXME import Yesod.Form.Class
|
import Yesod.Form.Class
|
||||||
|
|||||||
@ -2,24 +2,25 @@
|
|||||||
{-# LANGUAGE FlexibleInstances #-}
|
{-# LANGUAGE FlexibleInstances #-}
|
||||||
{-# LANGUAGE TypeSynonymInstances #-}
|
{-# LANGUAGE TypeSynonymInstances #-}
|
||||||
module Yesod.Form.Class
|
module Yesod.Form.Class
|
||||||
() where
|
|
||||||
{- FIXME Maybe we should remove this module entirely...
|
|
||||||
( ToForm (..)
|
( ToForm (..)
|
||||||
, ToFormField (..)
|
, ToField (..)
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Text.Hamlet
|
import Text.Hamlet
|
||||||
|
import Yesod.Widget (GGWidget)
|
||||||
import Yesod.Form.Fields
|
import Yesod.Form.Fields
|
||||||
import Yesod.Form.Core
|
import Yesod.Form.Types
|
||||||
import Yesod.Form.Profiles (Textarea)
|
import Yesod.Form.Functions (areq, aopt)
|
||||||
import Data.Int (Int64)
|
import Data.Int (Int64)
|
||||||
import Data.Time (Day, TimeOfDay)
|
import Data.Time (Day, TimeOfDay)
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
|
import Yesod.Handler (GGHandler)
|
||||||
|
|
||||||
class ToForm a y where
|
class ToForm a master monad where
|
||||||
toForm :: Formlet sub y a
|
toForm :: AForm ([FieldView (GGWidget master monad ())] -> [FieldView (GGWidget master monad ())]) monad a
|
||||||
class ToFormField a y where
|
|
||||||
toFormField :: FormFieldSettings -> FormletField sub y a
|
class ToField a master monad where
|
||||||
|
toField :: FieldSettings -> Maybe a -> AForm ([FieldView (GGWidget master monad ())] -> [FieldView (GGWidget master monad ())]) monad a
|
||||||
|
|
||||||
{- FIXME
|
{- FIXME
|
||||||
instance ToFormField String y where
|
instance ToFormField String y where
|
||||||
@ -28,45 +29,47 @@ instance ToFormField (Maybe String) y where
|
|||||||
toFormField = maybeStringField
|
toFormField = maybeStringField
|
||||||
-}
|
-}
|
||||||
|
|
||||||
instance ToFormField Text y where
|
instance Monad m => ToField Text master (GGHandler sub master m) where
|
||||||
toFormField = stringField
|
toField = areq textField
|
||||||
instance ToFormField (Maybe Text) y where
|
instance Monad m => ToField (Maybe Text) master (GGHandler sub master m) where
|
||||||
toFormField = maybeStringField
|
toField = aopt textField
|
||||||
|
|
||||||
instance ToFormField Int y where
|
instance Monad m => ToField Int master (GGHandler sub master m) where
|
||||||
toFormField = intField
|
toField = areq intField
|
||||||
instance ToFormField (Maybe Int) y where
|
instance Monad m => ToField (Maybe Int) master (GGHandler sub master m) where
|
||||||
toFormField = maybeIntField
|
toField = aopt intField
|
||||||
instance ToFormField Int64 y where
|
|
||||||
toFormField = intField
|
|
||||||
instance ToFormField (Maybe Int64) y where
|
|
||||||
toFormField = maybeIntField
|
|
||||||
|
|
||||||
instance ToFormField Double y where
|
instance Monad m => ToField Int64 master (GGHandler sub master m) where
|
||||||
toFormField = doubleField
|
toField = areq intField
|
||||||
instance ToFormField (Maybe Double) y where
|
instance Monad m => ToField (Maybe Int64) master (GGHandler sub master m) where
|
||||||
toFormField = maybeDoubleField
|
toField = aopt intField
|
||||||
|
|
||||||
instance ToFormField Day y where
|
instance Monad m => ToField Double master (GGHandler sub master m) where
|
||||||
toFormField = dayField
|
toField = areq doubleField
|
||||||
instance ToFormField (Maybe Day) y where
|
instance Monad m => ToField (Maybe Double) master (GGHandler sub master m) where
|
||||||
toFormField = maybeDayField
|
toField = aopt doubleField
|
||||||
|
|
||||||
instance ToFormField TimeOfDay y where
|
instance Monad m => ToField Day master (GGHandler sub master m) where
|
||||||
toFormField = timeField
|
toField = areq dayField
|
||||||
instance ToFormField (Maybe TimeOfDay) y where
|
instance Monad m => ToField (Maybe Day) master (GGHandler sub master m) where
|
||||||
toFormField = maybeTimeField
|
toField = aopt dayField
|
||||||
|
|
||||||
|
instance Monad m => ToField TimeOfDay master (GGHandler sub master m) where
|
||||||
|
toField = areq timeField
|
||||||
|
instance Monad m => ToField (Maybe TimeOfDay) master (GGHandler sub master m) where
|
||||||
|
toField = aopt timeField
|
||||||
|
|
||||||
|
instance Monad m => ToField Html master (GGHandler sub master m) where
|
||||||
|
toField = areq htmlField
|
||||||
|
instance Monad m => ToField (Maybe Html) master (GGHandler sub master m) where
|
||||||
|
toField = aopt htmlField
|
||||||
|
|
||||||
|
instance Monad m => ToField Textarea master (GGHandler sub master m) where
|
||||||
|
toField = areq textareaField
|
||||||
|
instance Monad m => ToField (Maybe Textarea) master (GGHandler sub master m) where
|
||||||
|
toField = aopt textareaField
|
||||||
|
|
||||||
|
{- FIXME
|
||||||
instance ToFormField Bool y where
|
instance ToFormField Bool y where
|
||||||
toFormField = boolField
|
toFormField = boolField
|
||||||
|
|
||||||
instance ToFormField Html y where
|
|
||||||
toFormField = htmlField
|
|
||||||
instance ToFormField (Maybe Html) y where
|
|
||||||
toFormField = maybeHtmlField
|
|
||||||
|
|
||||||
instance ToFormField Textarea y where
|
|
||||||
toFormField = textareaField
|
|
||||||
instance ToFormField (Maybe Textarea) y where
|
|
||||||
toFormField = maybeTextareaField
|
|
||||||
-}
|
-}
|
||||||
|
|||||||
@ -43,10 +43,12 @@ import qualified Data.ByteString.Lazy as L
|
|||||||
import Data.Text (Text, unpack, pack)
|
import Data.Text (Text, unpack, pack)
|
||||||
|
|
||||||
#if __GLASGOW_HASKELL__ >= 700
|
#if __GLASGOW_HASKELL__ >= 700
|
||||||
|
#define WHAMLET whamlet
|
||||||
#define HAMLET hamlet
|
#define HAMLET hamlet
|
||||||
#define CASSIUS cassius
|
#define CASSIUS cassius
|
||||||
#define JULIUS julius
|
#define JULIUS julius
|
||||||
#else
|
#else
|
||||||
|
#define WHAMLET $whamlet
|
||||||
#define HAMLET $hamlet
|
#define HAMLET $hamlet
|
||||||
#define CASSIUS $cassius
|
#define CASSIUS $cassius
|
||||||
#define JULIUS $julius
|
#define JULIUS $julius
|
||||||
@ -154,9 +156,9 @@ textField :: Monad monad => Field (GGWidget master monad ()) Text
|
|||||||
textField = Field
|
textField = Field
|
||||||
{ fieldParse = Right
|
{ fieldParse = Right
|
||||||
, fieldRender = id
|
, fieldRender = id
|
||||||
, fieldView = \theId name val isReq -> addHamlet
|
, fieldView = \theId name val isReq ->
|
||||||
[HAMLET|\
|
[WHAMLET|
|
||||||
<input id="#{theId}" name="#{name}" type="text" :isReq:required="" value="#{val}">
|
<input id="#{theId}" name="#{name}" type="text" :isReq:required value="#{val}">
|
||||||
|]
|
|]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user