{-# LANGUAGE RecordWildCards, OverloadedStrings, QuasiQuotes #-}
module Clckwrks.Authenticate.Page.AuthModes where

import Clckwrks.Acid             (GetEnableOpenId(..), SetEnableOpenId(..))
import Clckwrks.Admin.Template   (template)
import Clckwrks.Authenticate.URL (AuthURL(..))
import Clckwrks.Monad
import Clckwrks.URL              (ClckURL)
import Control.Lens              ((.~), (&))
import Data.Maybe                (maybe, fromMaybe)
import Data.Text.Lazy            (Text)
import qualified Data.Text       as T
import Happstack.Server          (Response, ServerPartT, ok, toResponse)
import HSP.XMLGenerator
import HSP.XML                   (fromStringLit)
import Language.Haskell.HSX.QQ   (hsx)
import Text.Reform
import Text.Reform.Happstack
import Text.Reform.HSP.Text
import Web.Routes                (showURL)
import Web.Routes.Happstack      (seeOtherURL)

authModesPage :: AuthURL -> Clck AuthURL Response
authModesPage :: AuthURL -> Clck AuthURL Response
authModesPage AuthURL
here =
  do Bool
enableOpenId <- GetEnableOpenId
-> ClckT AuthURL (ServerPartT IO) (EventResult GetEnableOpenId)
forall event (m :: * -> *).
(QueryEvent event, GetAcidState m (EventState event), Functor m,
 MonadIO m, MonadState ClckState m) =>
event -> m (EventResult event)
query (GetEnableOpenId
 -> ClckT AuthURL (ServerPartT IO) (EventResult GetEnableOpenId))
-> GetEnableOpenId
-> ClckT AuthURL (ServerPartT IO) (EventResult GetEnableOpenId)
forall a b. (a -> b) -> a -> b
$ GetEnableOpenId
GetEnableOpenId
     Text
action <- URL (ClckT AuthURL (ServerPartT IO))
-> ClckT AuthURL (ServerPartT IO) Text
forall (m :: * -> *). MonadRoute m => URL m -> m Text
showURL URL (ClckT AuthURL (ServerPartT IO))
AuthURL
here
     String
-> ()
-> GenChildList (ClckT AuthURL (ServerPartT IO))
-> Clck AuthURL Response
forall (m :: * -> *) url headers body.
(Happstack m, EmbedAsChild (ClckT url m) headers,
 EmbedAsChild (ClckT url m) body) =>
String -> headers -> body -> ClckT url m Response
template String
"Authentication Modes" () (GenChildList (ClckT AuthURL (ServerPartT IO))
 -> Clck AuthURL Response)
-> GenChildList (ClckT AuthURL (ServerPartT IO))
-> Clck AuthURL Response
forall a b. (a -> b) -> a -> b
$
       [hsx|
           <%>
            <% reform (form action) "am" updateAuthModes Nothing (authModesForm enableOpenId) %>
           </%>
           |]
       where
         updateAuthModes :: Bool -> Clck AuthURL Response
         updateAuthModes :: Bool -> Clck AuthURL Response
updateAuthModes Bool
b =
           do SetEnableOpenId
-> ClckT AuthURL (ServerPartT IO) (EventResult SetEnableOpenId)
forall event (m :: * -> *).
(UpdateEvent event, GetAcidState m (EventState event), Functor m,
 MonadIO m, MonadState ClckState m) =>
event -> m (EventResult event)
update (Bool -> SetEnableOpenId
SetEnableOpenId Bool
b)
              URL (ClckT AuthURL (ServerPartT IO)) -> Clck AuthURL Response
forall (m :: * -> *).
(MonadRoute m, FilterMonad Response m) =>
URL m -> m Response
seeOtherURL URL (ClckT AuthURL (ServerPartT IO))
AuthURL
here

authModesForm :: Bool -> ClckForm AuthURL Bool
authModesForm :: Bool -> ClckForm AuthURL Bool
authModesForm Bool
b =
  Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  Bool
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
forall input error proof a.
Form
  (ClckT AuthURL (ServerPartT IO))
  input
  error
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  proof
  a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
divHorizontal (Form
   (ClckT AuthURL (ServerPartT IO))
   [Input]
   ClckFormError
   [XMLGenT
      (ClckT AuthURL (ServerPartT IO))
      (XMLType (ClckT AuthURL (ServerPartT IO)))]
   ()
   Bool
 -> Form
      (ClckT AuthURL (ServerPartT IO))
      [Input]
      ClckFormError
      [XMLGenT
         (ClckT AuthURL (ServerPartT IO))
         (XMLType (ClckT AuthURL (ServerPartT IO)))]
      ()
      Bool)
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
forall a b. (a -> b) -> a -> b
$
     Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  Bool
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
forall (m :: * -> *) (x :: * -> *) c input error proof a.
(Monad m, Functor m, XMLGenerator x, StringType x ~ Text,
 EmbedAsChild x c) =>
Form m input error c proof a
-> Form m input error [XMLGenT x (XMLType x)] proof a
fieldset (Form
   (ClckT AuthURL (ServerPartT IO))
   [Input]
   ClckFormError
   [XMLGenT
      (ClckT AuthURL (ServerPartT IO))
      (XMLType (ClckT AuthURL (ServerPartT IO)))]
   ()
   Bool
 -> Form
      (ClckT AuthURL (ServerPartT IO))
      [Input]
      ClckFormError
      [XMLGenT
         (ClckT AuthURL (ServerPartT IO))
         (XMLType (ClckT AuthURL (ServerPartT IO)))]
      ()
      Bool)
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
forall a b. (a -> b) -> a -> b
$
       (Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  Bool
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
forall input error proof a.
Form
  (ClckT AuthURL (ServerPartT IO))
  input
  error
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  proof
  a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
divControlGroup (Form
   (ClckT AuthURL (ServerPartT IO))
   [Input]
   ClckFormError
   [XMLGenT
      (ClckT AuthURL (ServerPartT IO))
      (XMLType (ClckT AuthURL (ServerPartT IO)))]
   ()
   Bool
 -> Form
      (ClckT AuthURL (ServerPartT IO))
      [Input]
      ClckFormError
      [XMLGenT
         (ClckT AuthURL (ServerPartT IO))
         (XMLType (ClckT AuthURL (ServerPartT IO)))]
      ()
      Bool)
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
forall a b. (a -> b) -> a -> b
$
          (Text
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     ()
forall (m :: * -> *) (x :: * -> *) input error.
(Monad m, XMLGenerator x, StringType x ~ Text,
 EmbedAsAttr x (Attr Text FormId), EmbedAsChild x Text) =>
Text -> Form m input error [XMLGenT x (XMLType x)] () ()
labelText Text
"Enable OpenId"               Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  ()
-> [Attr Text Text]
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     ()
forall (x :: * -> *) attr (m :: * -> *) input error proof a.
(EmbedAsAttr x attr, XMLGenerator x, StringType x ~ Text, Monad m,
 Functor m) =>
Form m input error [XMLGenT x (XMLType x)] proof a
-> attr -> Form m input error [XMLGenT x (XMLType x)] proof a
`setAttrs` [(Text
"class"Text -> Text -> Attr Text Text
forall n a. n -> a -> Attr n a
:=Text
"control-label") :: Attr Text Text]) Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  ()
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
forall (m :: * -> *) view input error proof a.
(Monad m, Monoid view) =>
Form m input error view () ()
-> Form m input error view proof a
-> Form m input error view proof a
++>
            (Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  Bool
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
forall input error proof a.
Form
  (ClckT AuthURL (ServerPartT IO))
  input
  error
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  proof
  a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
divControls (Bool
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
forall (x :: * -> *) error input (m :: * -> *).
(Monad m, FormInput input, FormError error,
 ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text,
 EmbedAsAttr x (Attr Text FormId)) =>
Bool -> Form m input error [XMLGenT x (XMLType x)] () Bool
inputCheckbox Bool
b)))
       Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  Bool
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     (Maybe Text)
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     Bool
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a
<* (Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  (Maybe Text)
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     (Maybe Text)
forall input error proof a.
Form
  (ClckT AuthURL (ServerPartT IO))
  input
  error
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  proof
  a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
divControlGroup (Form
   (ClckT AuthURL (ServerPartT IO))
   [Input]
   ClckFormError
   [XMLGenT
      (ClckT AuthURL (ServerPartT IO))
      (XMLType (ClckT AuthURL (ServerPartT IO)))]
   ()
   (Maybe Text)
 -> Form
      (ClckT AuthURL (ServerPartT IO))
      [Input]
      ClckFormError
      [XMLGenT
         (ClckT AuthURL (ServerPartT IO))
         (XMLType (ClckT AuthURL (ServerPartT IO)))]
      ()
      (Maybe Text))
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     (Maybe Text)
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     (Maybe Text)
forall a b. (a -> b) -> a -> b
$ Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  (Maybe Text)
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     (Maybe Text)
forall input error proof a.
Form
  (ClckT AuthURL (ServerPartT IO))
  input
  error
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  proof
  a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
divControls (Form
   (ClckT AuthURL (ServerPartT IO))
   [Input]
   ClckFormError
   [XMLGenT
      (ClckT AuthURL (ServerPartT IO))
      (XMLType (ClckT AuthURL (ServerPartT IO)))]
   ()
   (Maybe Text)
 -> Form
      (ClckT AuthURL (ServerPartT IO))
      [Input]
      ClckFormError
      [XMLGenT
         (ClckT AuthURL (ServerPartT IO))
         (XMLType (ClckT AuthURL (ServerPartT IO)))]
      ()
      (Maybe Text))
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     (Maybe Text)
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     (Maybe Text)
forall a b. (a -> b) -> a -> b
$ Text
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     (Maybe Text)
forall (m :: * -> *) input error (x :: * -> *).
(Monad m, FormInput input, FormError error,
 ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text,
 EmbedAsAttr x (Attr Text FormId),
 EmbedAsAttr x (Attr Text Text)) =>
Text -> Form m input error [XMLGenT x (XMLType x)] () (Maybe Text)
inputSubmit Text
"Update" Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  (Maybe Text)
-> [Attr Text Text]
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     (Maybe Text)
forall (x :: * -> *) attr (m :: * -> *) input error proof a.
(EmbedAsAttr x attr, XMLGenerator x, StringType x ~ Text, Monad m,
 Functor m) =>
Form m input error [XMLGenT x (XMLType x)] proof a
-> attr -> Form m input error [XMLGenT x (XMLType x)] proof a
`setAttrs` [(Text
"class" Text -> Text -> Attr Text Text
forall n a. n -> a -> Attr n a
:= Text
"btn") :: Attr Text Text])

  where
    label' :: Text -> ClckForm AuthURL ()
    label' :: Text -> ClckForm AuthURL ()
label' Text
str      = (Text
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     ()
forall (m :: * -> *) (x :: * -> *) input error.
(Monad m, XMLGenerator x, StringType x ~ Text,
 EmbedAsAttr x (Attr Text FormId), EmbedAsChild x Text) =>
Text -> Form m input error [XMLGenT x (XMLType x)] () ()
labelText Text
str Form
  (ClckT AuthURL (ServerPartT IO))
  [Input]
  ClckFormError
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  ()
  ()
-> [Attr Text Text]
-> Form
     (ClckT AuthURL (ServerPartT IO))
     [Input]
     ClckFormError
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     ()
     ()
forall (x :: * -> *) attr (m :: * -> *) input error proof a.
(EmbedAsAttr x attr, XMLGenerator x, StringType x ~ Text, Monad m,
 Functor m) =>
Form m input error [XMLGenT x (XMLType x)] proof a
-> attr -> Form m input error [XMLGenT x (XMLType x)] proof a
`setAttrs` [(Text
"class"Text -> Text -> Attr Text Text
forall n a. n -> a -> Attr n a
:=Text
"control-label") :: Attr Text Text])
    divHorizontal :: Form
  (ClckT AuthURL (ServerPartT IO))
  input
  error
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  proof
  a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
divHorizontal   = ([XMLGenT
    (ClckT AuthURL (ServerPartT IO))
    (XMLType (ClckT AuthURL (ServerPartT IO)))]
 -> [XMLGenT
       (ClckT AuthURL (ServerPartT IO))
       (XMLType (ClckT AuthURL (ServerPartT IO)))])
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
forall (m :: * -> *) view view' input error proof a.
(Monad m, Functor m) =>
(view -> view')
-> Form m input error view proof a
-> Form m input error view' proof a
mapView (\[XMLGenT
   (ClckT AuthURL (ServerPartT IO))
   (XMLType (ClckT AuthURL (ServerPartT IO)))]
xml -> [[hsx|<div class="form-horizontal"><% xml %></div>|]])
    divControlGroup :: Form
  (ClckT AuthURL (ServerPartT IO))
  input
  error
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  proof
  a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
divControlGroup = ([XMLGenT
    (ClckT AuthURL (ServerPartT IO))
    (XMLType (ClckT AuthURL (ServerPartT IO)))]
 -> [XMLGenT
       (ClckT AuthURL (ServerPartT IO))
       (XMLType (ClckT AuthURL (ServerPartT IO)))])
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
forall (m :: * -> *) view view' input error proof a.
(Monad m, Functor m) =>
(view -> view')
-> Form m input error view proof a
-> Form m input error view' proof a
mapView (\[XMLGenT
   (ClckT AuthURL (ServerPartT IO))
   (XMLType (ClckT AuthURL (ServerPartT IO)))]
xml -> [[hsx|<div class="control-group"><% xml %></div>|]])
    divControls :: Form
  (ClckT AuthURL (ServerPartT IO))
  input
  error
  [XMLGenT
     (ClckT AuthURL (ServerPartT IO))
     (XMLType (ClckT AuthURL (ServerPartT IO)))]
  proof
  a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
divControls     = ([XMLGenT
    (ClckT AuthURL (ServerPartT IO))
    (XMLType (ClckT AuthURL (ServerPartT IO)))]
 -> [XMLGenT
       (ClckT AuthURL (ServerPartT IO))
       (XMLType (ClckT AuthURL (ServerPartT IO)))])
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
-> Form
     (ClckT AuthURL (ServerPartT IO))
     input
     error
     [XMLGenT
        (ClckT AuthURL (ServerPartT IO))
        (XMLType (ClckT AuthURL (ServerPartT IO)))]
     proof
     a
forall (m :: * -> *) view view' input error proof a.
(Monad m, Functor m) =>
(view -> view')
-> Form m input error view proof a
-> Form m input error view' proof a
mapView (\[XMLGenT
   (ClckT AuthURL (ServerPartT IO))
   (XMLType (ClckT AuthURL (ServerPartT IO)))]
xml -> [[hsx|<div class="controls"><% xml %></div>|]])


--             (divControls (inputText (maybe mempty (_unEmail . _saEmail) _coreFromAddress)) `transformEither` toMaybe))