module Handler.Utils.Form ( module Handler.Utils.Form , module Utils.Form , MonadWriter(..) ) where import Utils.Form import Handler.Utils.Form.Types import Handler.Utils.DateTime import Import hiding (cons) import qualified Data.Char as Char import qualified Data.CaseInsensitive as CI import qualified Data.Foldable as Foldable -- import Yesod.Core import qualified Data.Text as T -- import Yesod.Form.Types import Yesod.Form.Functions (parseHelper) import Yesod.Form.Bootstrap3 import Handler.Utils.Zip import qualified Data.Conduit.List as C import qualified Database.Esqueleto as E import Data.Set (Set) import qualified Data.Set as Set import Data.Map (Map, (!)) import qualified Data.Map as Map import Control.Monad.Trans.Writer (execWriterT, WriterT) import Control.Monad.Except (runExceptT) import Control.Monad.Writer.Class import Data.Scientific (Scientific) import Data.Ratio import Text.Read (readMaybe) import Utils.Lens import Data.Aeson (eitherDecodeStrict') import Data.Aeson.Text (encodeToLazyText) ---------------------------- -- Buttons (new version ) -- ---------------------------- data BtnDelete = BtnDelete deriving (Enum, Eq, Ord, Bounded, Read, Show) instance Universe BtnDelete instance Finite BtnDelete nullaryPathPiece ''BtnDelete $ camelToPathPiece' 1 instance Button UniWorX BtnDelete where label BtnDelete = [whamlet|_{MsgBtnDelete}|] cssClass BtnDelete = BCDanger data RegisterButton = BtnRegister | BtnDeregister deriving (Enum, Eq, Ord, Bounded, Read, Show) instance Universe RegisterButton instance Finite RegisterButton nullaryPathPiece ''RegisterButton $ camelToPathPiece' 1 instance Button UniWorX RegisterButton where label BtnRegister = [whamlet|_{MsgBtnRegister}|] label BtnDeregister = [whamlet|_{MsgBtnDeregister}|] cssClass BtnRegister = BCPrimary cssClass BtnDeregister = BCDanger data AdminHijackUserButton = BtnHijack deriving (Enum, Eq, Ord, Bounded, Read, Show) instance Universe AdminHijackUserButton instance Finite AdminHijackUserButton nullaryPathPiece ''AdminHijackUserButton $ camelToPathPiece' 1 instance Button UniWorX AdminHijackUserButton where label BtnHijack = [whamlet|_{MsgBtnHijack}|] cssClass BtnHijack = BCDefault data BtnSubmitDelete = BtnSubmit' | BtnDelete' deriving (Enum, Eq, Ord, Bounded, Read, Show) instance Universe BtnSubmitDelete instance Finite BtnSubmitDelete instance Button UniWorX BtnSubmitDelete where label BtnSubmit' = [whamlet|_{MsgBtnSubmit}|] label BtnDelete' = [whamlet|_{MsgBtnDelete}|] cssClass BtnSubmit' = BCPrimary cssClass BtnDelete' = BCDanger btnValidate _ BtnSubmit' = True btnValidate _ BtnDelete' = False nullaryPathPiece ''BtnSubmitDelete $ camelToPathPiece' 1 . dropSuffix "'" -- -- Looks like a button, but is just a link (e.g. for create course, etc.) -- data LinkButton = LinkButton (Route UniWorX) -- deriving (Enum, Eq, Ord, Bounded, Read, Show) -- -- instance PathPiece LinkButton where -- LinkButton route = ??? linkButton :: Widget -> ButtonCssClass UniWorX -> Route UniWorX -> Widget -- Alternative: Handler.Utils.simpleLink linkButton lbl cls url = [whamlet| ^{lbl} |] -- [whamlet| --
-- --