summaryrefslogtreecommitdiff
path: root/standalone/android/haskell-patches/yesod-form-1.2.1.3_0001-avoid-TH-hack-job.patch
diff options
context:
space:
mode:
Diffstat (limited to 'standalone/android/haskell-patches/yesod-form-1.2.1.3_0001-avoid-TH-hack-job.patch')
-rw-r--r--standalone/android/haskell-patches/yesod-form-1.2.1.3_0001-avoid-TH-hack-job.patch675
1 files changed, 675 insertions, 0 deletions
diff --git a/standalone/android/haskell-patches/yesod-form-1.2.1.3_0001-avoid-TH-hack-job.patch b/standalone/android/haskell-patches/yesod-form-1.2.1.3_0001-avoid-TH-hack-job.patch
new file mode 100644
index 000000000..c4ab44c30
--- /dev/null
+++ b/standalone/android/haskell-patches/yesod-form-1.2.1.3_0001-avoid-TH-hack-job.patch
@@ -0,0 +1,675 @@
+From c47d263779fba34629130398f1b08be1b8e468f7 Mon Sep 17 00:00:00 2001
+From: Joey Hess <joey@kitenet.net>
+Date: Thu, 28 Feb 2013 23:40:05 -0400
+Subject: [PATCH] avoid TH (hack job)
+
+---
+ Yesod/Form/Fields.hs | 93 ++++++++++++++++++++++++++++---------
+ Yesod/Form/Functions.hs | 118 ++++++++++++++++++++++++++++++++---------------
+ Yesod/Form/Jquery.hs | 13 ++++--
+ Yesod/Form/MassInput.hs | 18 ++++++--
+ yesod-form.cabal | 1 -
+ 5 files changed, 173 insertions(+), 70 deletions(-)
+
+diff --git a/Yesod/Form/Fields.hs b/Yesod/Form/Fields.hs
+index adc59de..353c8d0 100644
+--- a/Yesod/Form/Fields.hs
++++ b/Yesod/Form/Fields.hs
+@@ -50,7 +50,7 @@ import Yesod.Form.Types
+ import Yesod.Form.I18n.English
+ import Yesod.Form.Functions (parseHelper)
+ import Yesod.Handler (getMessageRender)
+-import Yesod.Widget (toWidget, whamlet, GWidget)
++import Yesod.Widget (toWidget, GWidget)
+ import Yesod.Message (RenderMessage (renderMessage), SomeMessage (..))
+ import Text.Hamlet
+ import Text.Blaze (ToMarkup (toMarkup), preEscapedToMarkup, unsafeByteString)
+@@ -108,10 +108,12 @@ intField = Field
+ Right (a, "") -> Right a
+ _ -> Left $ MsgInvalidInteger s
+
+- , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
++ , fieldView = \theId name attrs val isReq -> error "intField TH TODO"
++{- toWidget [hamlet|
+ $newline never
+ <input id="#{theId}" name="#{name}" *{attrs} type="number" :isReq:required="" value="#{showVal val}">
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+ where
+@@ -125,32 +127,40 @@ doubleField = Field
+ Right (a, "") -> Right a
+ _ -> Left $ MsgInvalidNumber s
+
+- , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
++ , fieldView = \theId name attrs val isReq -> error "doubleField TH TODO"
++{-
++ - toWidget [hamlet|
+ $newline never
+ <input id="#{theId}" name="#{name}" *{attrs} type="text" :isReq:required="" value="#{showVal val}">
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+- where showVal = either id (pack . show)
++{-
++ where showVal = either id (pack . show)-}
+
+ dayField :: RenderMessage master FormMessage => Field sub master Day
+ dayField = Field
+ { fieldParse = parseHelper $ parseDate . unpack
+- , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
++ , fieldView = \theId name attrs val isReq -> error "dayfield TH TODO"
++{- toWidget [hamlet|
+ $newline never
+ <input id="#{theId}" name="#{name}" *{attrs} type="date" :isReq:required="" value="#{showVal val}">
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+- where showVal = either id (pack . show)
++{- where showVal = either id (pack . show) -}
+
+ timeField :: RenderMessage master FormMessage => Field sub master TimeOfDay
+ timeField = Field
+ { fieldParse = parseHelper parseTime
+- , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
++ , fieldView = \theId name attrs val isReq -> error "timefield TH TODO"
++{- toWidget [hamlet|
+ $newline never
+ <input id="#{theId}" name="#{name}" *{attrs} :isReq:required="" value="#{showVal val}">
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+ where
+@@ -163,10 +173,12 @@ $newline never
+ htmlField :: RenderMessage master FormMessage => Field sub master Html
+ htmlField = Field
+ { fieldParse = parseHelper $ Right . preEscapedText . sanitizeBalance
+- , fieldView = \theId name attrs val _isReq -> toWidget [hamlet|
++ , fieldView = \theId name attrs val _isReq -> error "htmlField TH TODO"
++{- toWidget [hamlet|
+ $newline never
+ <textarea id="#{theId}" name="#{name}" *{attrs}>#{showVal val}
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+ where showVal = either id (pack . renderHtml)
+@@ -192,10 +204,12 @@ instance ToHtml Textarea where
+ textareaField :: RenderMessage master FormMessage => Field sub master Textarea
+ textareaField = Field
+ { fieldParse = parseHelper $ Right . Textarea
+- , fieldView = \theId name attrs val _isReq -> toWidget [hamlet|
++ , fieldView = \theId name attrs val _isReq -> error "textAreafield TH TODO"
++{- toWidget [hamlet|
+ $newline never
+ <textarea id="#{theId}" name="#{name}" *{attrs}>#{either id unTextarea val}
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+
+@@ -203,31 +217,37 @@ hiddenField :: (PathPiece p, RenderMessage master FormMessage)
+ => Field sub master p
+ hiddenField = Field
+ { fieldParse = parseHelper $ maybe (Left MsgValueRequired) Right . fromPathPiece
+- , fieldView = \theId name attrs val _isReq -> toWidget [hamlet|
++ , fieldView = \theId name attrs val _isReq -> error "hiddenfield TH TODO"
++{- toWidget [hamlet|
+ $newline never
+ <input type="hidden" id="#{theId}" name="#{name}" *{attrs} value="#{either id toPathPiece val}">
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+
+ textField :: RenderMessage master FormMessage => Field sub master Text
+ textField = Field
+ { fieldParse = parseHelper $ Right
+- , fieldView = \theId name attrs val isReq ->
++ , fieldView = \theId name attrs val isReq -> error "textField TH TODO"
++{-
+ [whamlet|
+ $newline never
+ <input id="#{theId}" name="#{name}" *{attrs} type="text" :isReq:required value="#{either id id val}">
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+
+ passwordField :: RenderMessage master FormMessage => Field sub master Text
+ passwordField = Field
+ { fieldParse = parseHelper $ Right
+- , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
++ , fieldView = \theId name attrs val isReq -> error "passwordfield TH TODO"
++{- toWidget [hamlet|
+ $newline never
+ <input id="#{theId}" name="#{name}" *{attrs} type="password" :isReq:required="" value="#{either id id val}">
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+
+@@ -305,10 +325,13 @@ emailField = Field
+ then Right s
+ else Left $ MsgInvalidEmail s
+ #endif
+- , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
++ , fieldView = \theId name attrs val isReq -> error "emailField TH TODO"
++{-
++toWidget [hamlet|
+ $newline never
+ <input id="#{theId}" name="#{name}" *{attrs} type="email" :isReq:required="" value="#{either id id val}">
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+
+@@ -316,7 +339,8 @@ type AutoFocus = Bool
+ searchField :: RenderMessage master FormMessage => AutoFocus -> Field sub master Text
+ searchField autoFocus = Field
+ { fieldParse = parseHelper Right
+- , fieldView = \theId name attrs val isReq -> do
++ , fieldView = \theId name attrs val isReq -> error "searchfield TH TODO"
++{-
+ [whamlet|\
+ $newline never
+ <input id="#{theId}" name="#{name}" *{attrs} type="search" :isReq:required="" :autoFocus:autofocus="" value="#{either id id val}">
+@@ -331,6 +355,7 @@ $newline never
+ ##{theId}
+ -webkit-appearance: textfield
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+
+@@ -340,11 +365,13 @@ urlField = Field
+ case parseURI $ unpack s of
+ Nothing -> Left $ MsgInvalidUrl s
+ Just _ -> Right s
+- , fieldView = \theId name attrs val isReq ->
++ , fieldView = \theId name attrs val isReq -> error "urlField TH TODO"
++{-
+ [whamlet|
+ $newline never
+ <input ##{theId} name=#{name} *{attrs} type=url :isReq:required value=#{either id id val}>
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+
+@@ -352,6 +379,8 @@ selectFieldList :: (Eq a, RenderMessage master FormMessage, RenderMessage master
+ selectFieldList = selectField . optionsPairs
+
+ selectField :: (Eq a, RenderMessage master FormMessage) => GHandler sub master (OptionList a) -> Field sub master a
++selectField = error "selectfield TH TODO"
++{-
+ selectField = selectFieldHelper
+ (\theId name attrs inside -> [whamlet|
+ $newline never
+@@ -365,6 +394,7 @@ $newline never
+ $newline never
+ <option value=#{value} :isSel:selected>#{text}
+ |]) -- inside
++-}
+
+ multiSelectFieldList :: (Eq a, RenderMessage master FormMessage, RenderMessage master msg) => [(msg, a)] -> Field sub master [a]
+ multiSelectFieldList = multiSelectField . optionsPairs
+@@ -382,7 +412,8 @@ multiSelectField ioptlist =
+ Nothing -> return $ Left "Error parsing values"
+ Just res -> return $ Right $ Just res
+
+- view theId name attrs val isReq = do
++ view theId name attrs val isReq = error "multiSelectField TH TODO"
++{-
+ opts <- fmap olOptions $ lift ioptlist
+ let selOpts = map (id &&& (optselected val)) opts
+ [whamlet|
+@@ -394,12 +425,15 @@ $newline never
+ where
+ optselected (Left _) _ = False
+ optselected (Right vals) opt = (optionInternalValue opt) `elem` vals
++-}
+
+ radioFieldList :: (Eq a, RenderMessage master FormMessage, RenderMessage master msg) => [(msg, a)] -> Field sub master a
+ radioFieldList = radioField . optionsPairs
+
+ radioField :: (Eq a, RenderMessage master FormMessage) => GHandler sub master (OptionList a) -> Field sub master a
+-radioField = selectFieldHelper
++radioField = error "radioField TH TODO"
++{-
++ selectFieldHelper
+ (\theId _name _attrs inside -> [whamlet|
+ $newline never
+ <div ##{theId}>^{inside}
+@@ -418,11 +452,14 @@ $newline never
+ <input id=#{theId}-#{value} type=radio name=#{name} value=#{value} :isSel:checked *{attrs}>
+ \#{text}
+ |])
++-}
+
+ boolField :: RenderMessage master FormMessage => Field sub master Bool
+ boolField = Field
+ { fieldParse = \e _ -> return $ boolParser e
+- , fieldView = \theId name attrs val isReq -> [whamlet|
++ , fieldView = \theId name attrs val isReq -> error "boolField TH TODO"
++{-
++[whamlet|
+ $newline never
+ $if not isReq
+ <input id=#{theId}-none *{attrs} type=radio name=#{name} value=none checked>
+@@ -435,6 +472,7 @@ $newline never
+ <input id=#{theId}-no *{attrs} type=radio name=#{name} value=no :showVal not val:checked>
+ <label for=#{theId}-no>_{MsgBoolNo}
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+ where
+@@ -458,10 +496,13 @@ $newline never
+ checkBoxField :: RenderMessage m FormMessage => Field s m Bool
+ checkBoxField = Field
+ { fieldParse = \e _ -> return $ checkBoxParser e
+- , fieldView = \theId name attrs val _ -> [whamlet|
++ , fieldView = \theId name attrs val _ -> error "checkBoxField TH TODO"
++{-
++ [whamlet|
+ $newline never
+ <input id=#{theId} *{attrs} type=checkbox name=#{name} value=yes :showVal id val:checked>
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+
+@@ -566,9 +607,11 @@ fileField = Field
+ case files of
+ [] -> Right Nothing
+ file:_ -> Right $ Just file
+- , fieldView = \id' name attrs _ isReq -> toWidget [hamlet|
++ , fieldView = \id' name attrs _ isReq -> error "fieldField TODO"
++{- toWidget [hamlet|
+ <input id=#{id'} name=#{name} *{attrs} type=file :isReq:required>
+ |]
++-}
+ , fieldEnctype = Multipart
+ }
+
+@@ -594,10 +637,13 @@ fileAFormReq fs = AForm $ \(master, langs) menvs ints -> do
+ { fvLabel = toHtml $ renderMessage master langs $ fsLabel fs
+ , fvTooltip = fmap (toHtml . renderMessage master langs) $ fsTooltip fs
+ , fvId = id'
+- , fvInput = [whamlet|
++ , fvInput = error "fileAFormReq TH TODO"
++{-
++[whamlet|
+ $newline never
+ <input type=file name=#{name} ##{id'} *{fsAttrs fs}>
+ |]
++-}
+ , fvErrors = errs
+ , fvRequired = True
+ }
+@@ -623,10 +669,13 @@ fileAFormOpt fs = AForm $ \(master, langs) menvs ints -> do
+ { fvLabel = toHtml $ renderMessage master langs $ fsLabel fs
+ , fvTooltip = fmap (toHtml . renderMessage master langs) $ fsTooltip fs
+ , fvId = id'
+- , fvInput = [whamlet|
++ , fvInput = error "fileAFormOpt TH TODO"
++{-
++[whamlet|
+ $newline never
+ <input type=file name=#{name} ##{id'} *{fsAttrs fs}>
+ |]
++-}
+ , fvErrors = errs
+ , fvRequired = False
+ }
+diff --git a/Yesod/Form/Functions.hs b/Yesod/Form/Functions.hs
+index db3e493..a51e132 100644
+--- a/Yesod/Form/Functions.hs
++++ b/Yesod/Form/Functions.hs
+@@ -44,20 +44,21 @@ module Yesod.Form.Functions
+
+ import Yesod.Form.Types
+ import Data.Text (Text, pack)
++import Data.Foldable
+ import Control.Arrow (second)
+ import Control.Monad.Trans.RWS (ask, get, put, runRWST, tell, evalRWST)
+ import Control.Monad.Trans.Class (lift)
+ import Control.Monad (liftM, join)
+ import Crypto.Classes (constTimeEq)
+ import Text.Blaze (Markup, toMarkup)
++import qualified Text.Blaze.Internal
+ #define Html Markup
+ #define toHtml toMarkup
+ import Yesod.Handler (GHandler, getRequest, runRequestBody, newIdent, getYesod)
+ import Yesod.Core (RenderMessage, SomeMessage (..))
+-import Yesod.Widget (GWidget, whamlet)
++import Yesod.Widget (GWidget, toWidget)
+ import Yesod.Request (reqToken, reqWaiRequest, reqGetParams, languages)
+ import Network.Wai (requestMethod)
+-import Text.Hamlet (shamlet)
+ import Data.Monoid (mempty)
+ import Data.Maybe (listToMaybe, fromMaybe)
+ import Yesod.Message (RenderMessage (..))
+@@ -66,6 +67,7 @@ import qualified Data.Text.Encoding as TE
+ import Control.Applicative ((<$>))
+ import Control.Arrow (first)
+ import Yesod.Request (FileInfo)
++import Text.Hamlet (condH, maybeH)
+
+ -- | Get a unique identifier.
+ newFormIdent :: MForm sub master Text
+@@ -189,26 +191,7 @@ postHelper :: RenderMessage master FormMessage
+ postHelper form env = do
+ req <- getRequest
+ let tokenKey = "_token"
+- let token =
+- case reqToken req of
+- Nothing -> mempty
+- Just n -> [shamlet|
+-$newline never
+-<input type=hidden name=#{tokenKey} value=#{n}>
+-|]
+- m <- getYesod
+- langs <- languages
+- ((res, xml), enctype) <- runFormGeneric (form token) m langs env
+- let res' =
+- case (res, env) of
+- (FormSuccess{}, Just (params, _))
+- | not (Map.lookup tokenKey params === reqToken req) ->
+- FormFailure [renderMessage m langs MsgCsrfWarning]
+- _ -> res
+- where (Just [t1]) === (Just t2) = TE.encodeUtf8 t1 `constTimeEq` TE.encodeUtf8 t2
+- Nothing === Nothing = True -- It's important to use constTimeEq
+- _ === _ = False -- in order to avoid timing attacks.
+- return ((res', xml), enctype)
++ error "yesod-form postHelper needs TH, disabled"
+
+ -- | Similar to 'runFormPost', except it always ignore the currently available
+ -- environment. This is necessary in cases like a wizard UI, where a single
+@@ -253,7 +236,8 @@ getKey :: Text
+ getKey = "_hasdata"
+
+ getHelper :: (Html -> MForm sub master a) -> Maybe (Env, FileEnv) -> GHandler sub master (a, Enctype)
+-getHelper form env = do
++getHelper form env = error "yesod-form getHelper needs TH, disabled"
++{-
+ let fragment = [shamlet|
+ $newline never
+ <input type=hidden name=#{getKey}>
+@@ -261,6 +245,7 @@ $newline never
+ langs <- languages
+ m <- getYesod
+ runFormGeneric (form fragment) m langs env
++-}
+
+ type FormRender sub master a =
+ AForm sub master a
+@@ -271,6 +256,7 @@ renderTable, renderDivs, renderDivsNoLabels :: FormRender sub master a
+ renderTable aform fragment = do
+ (res, views') <- aFormToForm aform
+ let views = views' []
++{-
+ let widget = [whamlet|
+ $newline never
+ \#{fragment}
+@@ -285,6 +271,8 @@ $forall view <- views
+ <td .errors>#{err}
+ |]
+ return (res, widget)
++-}
++ error "yesod-form renderTable, needs TN, not implemented"
+
+ -- | render a field inside a div
+ renderDivs = renderDivsMaybeLabels True
+@@ -293,7 +281,8 @@ renderDivs = renderDivsMaybeLabels True
+ renderDivsNoLabels = renderDivsMaybeLabels False
+
+ renderDivsMaybeLabels :: Bool -> FormRender sub master a
+-renderDivsMaybeLabels withLabels aform fragment = do
++renderDivsMaybeLabels withLabels aform fragment = error "yesod-form renderDivsMaybeLabels needs TH, not implemented"
++{-
+ (res, views') <- aFormToForm aform
+ let views = views' []
+ let widget = [whamlet|
+@@ -310,6 +299,7 @@ $forall view <- views
+ <div .errors>#{err}
+ |]
+ return (res, widget)
++-}
+
+ -- | Render a form using Bootstrap-friendly shamlet syntax.
+ --
+@@ -332,19 +322,73 @@ renderBootstrap aform fragment = do
+ let views = views' []
+ has (Just _) = True
+ has Nothing = False
+- let widget = [whamlet|
+-$newline never
+-\#{fragment}
+-$forall view <- views
+- <div .control-group .clearfix :fvRequired view:.required :not $ fvRequired view:.optional :has $ fvErrors view:.error>
+- <label .control-label for=#{fvId view}>#{fvLabel view}
+- <div .controls .input>
+- ^{fvInput view}
+- $maybe tt <- fvTooltip view
+- <span .help-block>#{tt}
+- $maybe err <- fvErrors view
+- <span .help-block>#{err}
+-|]
++ let widget = do { Yesod.Widget.toWidget
++ (Text.Blaze.toHtml fragment);
++ Data.Foldable.mapM_
++ (\ view_a55Y
++ -> do { Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "<div class=\"control-group clearfix ");
++ Text.Hamlet.condH
++ [(fvRequired view_a55Y,
++ Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "required "))]
++ Nothing;
++ Text.Hamlet.condH
++ [(not (fvRequired view_a55Y),
++ Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "optional "))]
++ Nothing;
++ Text.Hamlet.condH
++ [(has (fvErrors view_a55Y),
++ Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "error"))]
++ Nothing;
++ Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "\"><label class=\"control-label\" for=\"");
++ Yesod.Widget.toWidget
++ (Text.Blaze.toHtml (fvId view_a55Y));
++ Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "\">");
++ Yesod.Widget.toWidget
++ (Text.Blaze.toHtml (fvLabel view_a55Y));
++ Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "</label><div class=\"controls input\">");
++ Yesod.Widget.toWidget (fvInput view_a55Y);
++ Text.Hamlet.maybeH
++ (fvTooltip view_a55Y)
++ (\ tt_a55Z
++ -> do { Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "<span class=\"help-block\">");
++ Yesod.Widget.toWidget
++ (Text.Blaze.toHtml tt_a55Z);
++ Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "</span>") })
++ Nothing;
++ Text.Hamlet.maybeH
++ (fvErrors view_a55Y)
++ (\ err_a560
++ -> do { Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "<span class=\"help-block\">");
++ Yesod.Widget.toWidget
++ (Text.Blaze.toHtml err_a560);
++ Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "</span>") })
++ Nothing;
++ Yesod.Widget.toWidget
++ ((Text.Blaze.Internal.preEscapedText . pack)
++ "</div></div>") })
++ views }
+ return (res, widget)
+
+ check :: RenderMessage master msg
+diff --git a/Yesod/Form/Jquery.hs b/Yesod/Form/Jquery.hs
+index 85a0c76..656a8e0 100644
+--- a/Yesod/Form/Jquery.hs
++++ b/Yesod/Form/Jquery.hs
+@@ -18,8 +18,7 @@ import Yesod.Form
+ import Yesod.Widget
+ import Data.Time (Day)
+ import Data.Default
+-import Text.Hamlet (shamlet)
+-import Text.Julius (julius, rawJS)
++import Text.Julius (rawJS)
+ import Data.Text (Text, pack, unpack)
+ import Data.Monoid (mconcat)
+ import Yesod.Core (RenderMessage)
+@@ -63,7 +62,8 @@ jqueryDayField jds = Field
+ Right
+ . readMay
+ . unpack
+- , fieldView = \theId name attrs val isReq -> do
++ , fieldView = \theId name attrs val isReq -> error "jqueryDayField TH TODO"
++{-
+ toWidget [shamlet|
+ $newline never
+ <input id="#{theId}" name="#{name}" *{attrs} type="date" :isReq:required="" value="#{showVal val}">
+@@ -85,10 +85,11 @@ $(function(){
+ }
+ });
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+ where
+- showVal = either id (pack . show)
++{- showVal = either id (pack . show) -}
+ jsBool True = toJSON True
+ jsBool False = toJSON False
+ mos (Left i) = show i
+@@ -104,7 +105,8 @@ jqueryAutocompleteField :: (RenderMessage master FormMessage, YesodJquery master
+ => Route master -> Field sub master Text
+ jqueryAutocompleteField src = Field
+ { fieldParse = parseHelper $ Right
+- , fieldView = \theId name attrs val isReq -> do
++ , fieldView = \theId name attrs val isReq -> error "jqueryAutocompleteField TH TODO"
++{-
+ toWidget [shamlet|
+ $newline never
+ <input id="#{theId}" name="#{name}" *{attrs} type="text" :isReq:required="" value="#{either id id val}" .autocomplete>
+@@ -115,6 +117,7 @@ $newline never
+ toWidget [julius|
+ $(function(){$("##{rawJS theId}").autocomplete({source:"@{src}",minLength:2})});
+ |]
++-}
+ , fieldEnctype = UrlEncoded
+ }
+
+diff --git a/Yesod/Form/MassInput.hs b/Yesod/Form/MassInput.hs
+index 62e89d6..14a4125 100644
+--- a/Yesod/Form/MassInput.hs
++++ b/Yesod/Form/MassInput.hs
+@@ -12,7 +12,7 @@ module Yesod.Form.MassInput
+ import Yesod.Form.Types
+ import Yesod.Form.Functions
+ import Yesod.Form.Fields (boolField)
+-import Yesod.Widget (GWidget, whamlet)
++import Yesod.Widget (GWidget)
+ import Yesod.Message (RenderMessage)
+ import Yesod.Handler (newIdent, GHandler)
+ import Text.Blaze.Html (Html)
+@@ -75,7 +75,8 @@ inputList label fixXml single mdef = formToAForm $ do
+ { fvLabel = label
+ , fvTooltip = Nothing
+ , fvId = theId
+- , fvInput = [whamlet|
++ , fvInput = error "inputList TH TODO"
++{-[whamlet|
+ $newline never
+ ^{fixXml views}
+ <p>
+@@ -85,6 +86,7 @@ $newline never
+ <input type=checkbox name=#{addName}>
+ Add another row
+ |]
++-}
+ , fvErrors = Nothing
+ , fvRequired = False
+ }])
+@@ -97,10 +99,12 @@ withDelete af = do
+ deleteName <- newFormIdent
+ (menv, _, _) <- ask
+ res <- case menv >>= Map.lookup deleteName . fst of
+- Just ("yes":_) -> return $ Left [whamlet|
++ Just ("yes":_) -> return $ Left $ error "withDelete TH TODO"
++{- [whamlet|
+ $newline never
+ <input type=hidden name=#{deleteName} value=yes>
+ |]
++-}
+ _ -> do
+ (_, xml2) <- aFormToForm $ areq boolField FieldSettings
+ { fsLabel = SomeMessage MsgDelete
+@@ -126,7 +130,8 @@ fixme eithers =
+ massDivs, massTable
+ :: [[FieldView sub master]]
+ -> GWidget sub master ()
+-massDivs viewss = [whamlet|
++massDivs viewss = error "massDivs TODO"
++{-[whamlet|
+ $newline never
+ $forall views <- viewss
+ <fieldset>
+@@ -139,8 +144,10 @@ $forall views <- viewss
+ $maybe err <- fvErrors view
+ <div .errors>#{err}
+ |]
++-}
+
+-massTable viewss = [whamlet|
++massTable viewss = error "massTable TH TODO"
++{- [whamlet|
+ $newline never
+ $forall views <- viewss
+ <fieldset>
+@@ -155,3 +162,4 @@ $forall views <- viewss
+ $maybe err <- fvErrors view
+ <td .errors>#{err}
+ |]
++-}
+diff --git a/yesod-form.cabal b/yesod-form.cabal
+index b0ac64e..249de69 100644
+--- a/yesod-form.cabal
++++ b/yesod-form.cabal
+@@ -45,7 +45,6 @@ library
+ Yesod.Form.Input
+ Yesod.Form.Fields
+ Yesod.Form.Jquery
+- Yesod.Form.Nic
+ Yesod.Form.MassInput
+ Yesod.Form.I18n.English
+ Yesod.Form.I18n.Portuguese
+--
+1.7.10.4
+