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 Web.PathPieces (showToPathPiece, readFromPathPiece) 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.Writer.Class import Data.Scientific (Scientific) import Data.Ratio import Text.Read (readMaybe) import Utils.Lens ---------------------------- -- Buttons (new version ) -- ---------------------------- data BtnDelete = BtnDelete | BtnAbort deriving (Enum, Eq, Ord, Bounded, Read, Show) instance PathPiece BtnDelete where -- for displaying the button only, not really for paths toPathPiece = showToPathPiece fromPathPiece = readFromPathPiece instance Button UniWorX BtnDelete where label BtnDelete = [whamlet|_{MsgBtnDelete}|] label BtnAbort = [whamlet|_{MsgBtnAbort}|] cssClass BtnDelete = BCDanger cssClass BtnAbort = BCDefault data RegisterButton = BtnRegister | BtnDeregister deriving (Enum, Eq, Ord, Bounded, Read, Show) instance PathPiece RegisterButton where toPathPiece = showToPathPiece fromPathPiece = readFromPathPiece 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 PathPiece AdminHijackUserButton where toPathPiece = showToPathPiece fromPathPiece = readFromPathPiece 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 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| --
-- --