diff options
Diffstat (limited to 'standalone/android/haskell-patches/yesod-form_1.2.1.1-0002-expand-TH.patch')
-rw-r--r-- | standalone/android/haskell-patches/yesod-form_1.2.1.1-0002-expand-TH.patch | 1606 |
1 files changed, 0 insertions, 1606 deletions
diff --git a/standalone/android/haskell-patches/yesod-form_1.2.1.1-0002-expand-TH.patch b/standalone/android/haskell-patches/yesod-form_1.2.1.1-0002-expand-TH.patch deleted file mode 100644 index 3ce48e5fc..000000000 --- a/standalone/android/haskell-patches/yesod-form_1.2.1.1-0002-expand-TH.patch +++ /dev/null @@ -1,1606 +0,0 @@ -From f98c22ec71695537e0e008a0bd54affdf8a60f64 Mon Sep 17 00:00:00 2001 -From: Joey Hess <joey@kitenet.net> -Date: Mon, 15 Apr 2013 17:35:57 -0400 -Subject: [PATCH 2/2] expand TH - -Used the EvilSplicer, and then some manual fixups, as it is apparently -buggy. Also a few module import fixes. ---- - Yesod/Form/Fields.hs | 623 ++++++++++++++++++++++++++++++++++++++---------- - Yesod/Form/Functions.hs | 240 +++++++++++++++---- - Yesod/Form/Jquery.hs | 141 ++++++++--- - Yesod/Form/MassInput.hs | 228 ++++++++++++++---- - Yesod/Form/Nic.hs | 59 ++++- - 5 files changed, 1042 insertions(+), 249 deletions(-) - -diff --git a/Yesod/Form/Fields.hs b/Yesod/Form/Fields.hs -index 7917ce2..db76ea2 100644 ---- a/Yesod/Form/Fields.hs -+++ b/Yesod/Form/Fields.hs -@@ -46,11 +46,22 @@ module Yesod.Form.Fields - , optionsEnum - ) where - -+import qualified Data.Text.Lazy.Builder -+import qualified Text.Shakespeare -+import qualified Data.Monoid -+import qualified Text.Julius -+import qualified "blaze-markup" Text.Blaze.Internal -+import qualified "blaze-markup" Text.Blaze as Text.Blaze.Internal -+import qualified "blaze-html" Text.Blaze.Html -+import qualified Yesod.Widget -+import qualified Text.Css -+import qualified Control.Monad -+import qualified Data.Foldable - 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 +119,24 @@ intField = Field - Right (a, "") -> Right a - _ -> Left $ MsgInvalidInteger s - -- , fieldView = \theId name attrs val isReq -> toWidget [hamlet| --$newline never --<input id="#{theId}" name="#{name}" *{attrs} type="number" :isReq:required="" value="#{showVal val}"> --|] -+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_amMY -+ -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"number\""); -+ Text.Hamlet.condH -+ [(isReq, -+ id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))] -+ Nothing; -+ id ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ id (Text.Blaze.Html.toHtml (showVal val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = UrlEncoded - } - where -@@ -125,10 +150,24 @@ doubleField = Field - Right (a, "") -> Right a - _ -> Left $ MsgInvalidNumber s - -- , fieldView = \theId name attrs val isReq -> toWidget [hamlet| --$newline never --<input id="#{theId}" name="#{name}" *{attrs} type="text" :isReq:required="" value="#{showVal val}"> --|] -+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_amNa -+ -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"text\""); -+ Text.Hamlet.condH -+ [(isReq, -+ id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))] -+ Nothing; -+ id ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ id (Text.Blaze.Html.toHtml (showVal val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = UrlEncoded - } - where showVal = either id (pack . show) -@@ -136,10 +175,24 @@ $newline never - dayField :: RenderMessage master FormMessage => Field sub master Day - dayField = Field - { fieldParse = parseHelper $ parseDate . unpack -- , fieldView = \theId name attrs val isReq -> toWidget [hamlet| --$newline never --<input id="#{theId}" name="#{name}" *{attrs} type="date" :isReq:required="" value="#{showVal val}"> --|] -+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_amNk -+ -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"date\""); -+ Text.Hamlet.condH -+ [(isReq, -+ id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))] -+ Nothing; -+ id ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ id (Text.Blaze.Html.toHtml (showVal val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = UrlEncoded - } - where showVal = either id (pack . show) -@@ -147,10 +200,23 @@ $newline never - timeField :: RenderMessage master FormMessage => Field sub master TimeOfDay - timeField = Field - { fieldParse = parseHelper parseTime -- , fieldView = \theId name attrs val isReq -> toWidget [hamlet| --$newline never --<input id="#{theId}" name="#{name}" *{attrs} :isReq:required="" value="#{showVal val}"> --|] -+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_amNx -+ -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ Text.Hamlet.condH -+ [(isReq, -+ id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))] -+ Nothing; -+ id ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ id (Text.Blaze.Html.toHtml (showVal val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = UrlEncoded - } - where -@@ -163,10 +229,18 @@ $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| --$newline never --<textarea id="#{theId}" name="#{name}" *{attrs}>#{showVal val} --|] -+ , fieldView = \theId name attrs val _isReq -> toWidget $ \ _render_amNH -+ -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) "<textarea id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ id (Text.Blaze.Html.toHtml (showVal val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "</textarea>") } -+ - , fieldEnctype = UrlEncoded - } - where showVal = either id (pack . renderHtml) -@@ -192,10 +266,18 @@ 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| --$newline never --<textarea id="#{theId}" name="#{name}" *{attrs}>#{either id unTextarea val} --|] -+ , fieldView = \theId name attrs val _isReq -> toWidget $ \ _render_amNQ -+ -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) "<textarea id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ id (Text.Blaze.Html.toHtml (either id unTextarea val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "</textarea>") } -+ - , fieldEnctype = UrlEncoded - } - -@@ -203,10 +285,19 @@ 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| --$newline never --<input type="hidden" id="#{theId}" name="#{name}" *{attrs} value="#{either id toPathPiece val}"> --|] -+ , fieldView = \theId name attrs val _isReq -> toWidget $ \ _render_amNZ -+ -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<input type=\"hidden\" id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\""); -+ id (Text.Blaze.Html.toHtml (either id toPathPiece val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = UrlEncoded - } - -@@ -214,20 +305,50 @@ textField :: RenderMessage master FormMessage => Field sub master Text - textField = Field - { fieldParse = parseHelper $ Right - , fieldView = \theId name attrs val isReq -> -- [whamlet| --$newline never --<input id="#{theId}" name="#{name}" *{attrs} type="text" :isReq:required value="#{either id id val}"> --|] -+ do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"text\""); -+ Text.Hamlet.condH -+ [(isReq, -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) " required"))] -+ Nothing; -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ toWidget (Text.Blaze.Html.toHtml (either id id val)); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = UrlEncoded - } - - passwordField :: RenderMessage master FormMessage => Field sub master Text - passwordField = Field - { fieldParse = parseHelper $ Right -- , fieldView = \theId name attrs val isReq -> toWidget [hamlet| --$newline never --<input id="#{theId}" name="#{name}" *{attrs} type="password" :isReq:required="" value="#{either id id val}"> --|] -+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_amOg -+ -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "\" type=\"password\""); -+ Text.Hamlet.condH -+ [(isReq, -+ id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))] -+ Nothing; -+ id ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ id (Text.Blaze.Html.toHtml (either id id val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = UrlEncoded - } - -@@ -305,10 +426,24 @@ emailField = Field - then Right s - else Left $ MsgInvalidEmail s - #endif -- , fieldView = \theId name attrs val isReq -> toWidget [hamlet| --$newline never --<input id="#{theId}" name="#{name}" *{attrs} type="email" :isReq:required="" value="#{either id id val}"> --|] -+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_amOO -+ -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"email\""); -+ Text.Hamlet.condH -+ [(isReq, -+ id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))] -+ Nothing; -+ id ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ id (Text.Blaze.Html.toHtml (either id id val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = UrlEncoded - } - -@@ -317,20 +452,60 @@ searchField :: RenderMessage master FormMessage => AutoFocus -> Field sub master - searchField autoFocus = Field - { fieldParse = parseHelper Right - , fieldView = \theId name attrs val isReq -> do -- [whamlet|\ --$newline never --<input id="#{theId}" name="#{name}" *{attrs} type="search" :isReq:required="" :autoFocus:autofocus="" value="#{either id id val}"> --|] -+ do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"search\""); -+ Text.Hamlet.condH -+ [(isReq, -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))] -+ Nothing; -+ Text.Hamlet.condH -+ [(autoFocus, -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) " autofocus=\"\""))] -+ Nothing; -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ toWidget (Text.Blaze.Html.toHtml (either id id val)); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - when autoFocus $ do - -- we want this javascript to be placed immediately after the field -- [whamlet| --$newline never --<script>if (!('autofocus' in document.createElement('input'))) {document.getElementById('#{theId}').focus();} --|] -- toWidget [cassius| -- #{theId} -- -webkit-appearance: textfield -- |] -+ do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<script>if (!('autofocus' in document.createElement('input'))) {document.getElementById('"); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "').focus();}</script>") } -+ -+ toWidget $ \ _render_amP5 -+ -> (Text.Css.CssNoWhitespace -+ . (foldr ($) [])) -+ [((++) -+ $ (map -+ Text.Css.Css -+ ((((:) -+ (Text.Css.Css' -+ (Data.Monoid.mconcat [toCss theId]) -+ [(Data.Monoid.mconcat -+ [(Text.Css.fromText -+ . Text.Css.pack) -+ "-webkit-appearance"], -+ Data.Monoid.mconcat -+ [(Text.Css.fromText -+ . Text.Css.pack) -+ "textfield"])])) -+ . (foldr (.) id [])) -+ [])))] -+ - , fieldEnctype = UrlEncoded - } - -@@ -341,10 +516,25 @@ urlField = Field - Nothing -> Left $ MsgInvalidUrl s - Just _ -> Right s - , fieldView = \theId name attrs val isReq -> -- [whamlet| --$newline never --<input ##{theId} name=#{name} *{attrs} type=url :isReq:required value=#{either id id val}> --|] -+ do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"url\""); -+ Text.Hamlet.condH -+ [(isReq, -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) " required"))] -+ Nothing; -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ toWidget (Text.Blaze.Html.toHtml (either id id val)); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = UrlEncoded - } - -@@ -353,18 +543,48 @@ selectFieldList = selectField . optionsPairs - - selectField :: (Eq a, RenderMessage master FormMessage) => GHandler sub master (OptionList a) -> Field sub master a - selectField = selectFieldHelper -- (\theId name attrs inside -> [whamlet| --$newline never --<select ##{theId} name=#{name} *{attrs}>^{inside} --|]) -- outside -- (\_theId _name isSel -> [whamlet| --$newline never --<option value=none :isSel:selected>_{MsgSelectNone} --|]) -- onOpt -- (\_theId _name _attrs value isSel text -> [whamlet| --$newline never --<option value=#{value} :isSel:selected>#{text} --|]) -- inside -+ (\theId name attrs inside -> do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<select id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ toWidget inside; -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</select>") }) -+ -- outside -+ (\_theId _name isSel -> do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<option value=\"none\""); -+ Text.Hamlet.condH -+ [(isSel, -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) " selected"))] -+ Nothing; -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ (((Control.Monad.liftM (Text.Blaze.Html.toHtml .)) -+ $ (Yesod.Widget.liftW getMessageRender)) -+ >>= (\ urender_amPs -> toWidget (urender_amPs MsgSelectNone))); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</option>") }) -+ -- onOpt -+ (\_theId _name _attrs value isSel text -> do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<option value=\""); -+ toWidget (Text.Blaze.Html.toHtml value); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ Text.Hamlet.condH -+ [(isSel, -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) " selected"))] -+ Nothing; -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ toWidget (Text.Blaze.Html.toHtml text); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</option>") }) -+ -- inside - - multiSelectFieldList :: (Eq a, RenderMessage master FormMessage, RenderMessage master msg) => [(msg, a)] -> Field sub master [a] - multiSelectFieldList = multiSelectField . optionsPairs -@@ -385,12 +605,40 @@ multiSelectField ioptlist = - view theId name attrs val isReq = do - opts <- fmap olOptions $ lift ioptlist - let selOpts = map (id &&& (optselected val)) opts -- [whamlet| --$newline never -- <select ##{theId} name=#{name} :isReq:required multiple *{attrs}> -- $forall (opt, optsel) <- selOpts -- <option value=#{optionExternalValue opt} :optsel:selected>#{optionDisplay opt} -- |] -+ do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<select id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ Text.Hamlet.condH -+ [(isReq, -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) " required"))] -+ Nothing; -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) " multiple"); -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ Data.Foldable.mapM_ -+ (\ (opt_amPV, optsel_amPW) -+ -> do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<option value=\""); -+ toWidget (Text.Blaze.Html.toHtml (optionExternalValue opt_amPV)); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ Text.Hamlet.condH -+ [(optsel_amPW, -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) " selected"))] -+ Nothing; -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ toWidget (Text.Blaze.Html.toHtml (optionDisplay opt_amPV)); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</option>") }) -+ selOpts; -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</select>") } -+ - where - optselected (Left _) _ = False - optselected (Right vals) opt = (optionInternalValue opt) `elem` vals -@@ -400,41 +648,140 @@ radioFieldList = radioField . optionsPairs - - radioField :: (Eq a, RenderMessage master FormMessage) => GHandler sub master (OptionList a) -> Field sub master a - radioField = selectFieldHelper -- (\theId _name _attrs inside -> [whamlet| --$newline never --<div ##{theId}>^{inside} --|]) -- (\theId name isSel -> [whamlet| --$newline never --<label .radio for=#{theId}-none> -- <div> -- <input id=#{theId}-none type=radio name=#{name} value=none :isSel:checked> -- _{MsgSelectNone} --|]) -- (\theId name attrs value isSel text -> [whamlet| --$newline never --<label .radio for=#{theId}-#{value}> -- <div> -- <input id=#{theId}-#{value} type=radio name=#{name} value=#{value} :isSel:checked *{attrs}> -- \#{text} --|]) -+ (\theId _name _attrs inside -> do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<div id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\">"); -+ toWidget inside; -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "</div>") }) -+ -+ (\theId name isSel -> do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<label class=\"radio\" for=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "-none\"><div><input id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "-none\" type=\"radio\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"none\""); -+ Text.Hamlet.condH -+ [(isSel, -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) " checked"))] -+ Nothing; -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ (((Control.Monad.liftM (Text.Blaze.Html.toHtml .)) -+ $ (Yesod.Widget.liftW getMessageRender)) -+ >>= (\ urender_amQa -> toWidget (urender_amQa MsgSelectNone))); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</div></label>") }) -+ -+ (\theId name attrs value isSel text -> do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<label class=\"radio\" for=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "-"); -+ toWidget (Text.Blaze.Html.toHtml value); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "\"><div><input id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "-"); -+ toWidget (Text.Blaze.Html.toHtml value); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "\" type=\"radio\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\""); -+ toWidget (Text.Blaze.Html.toHtml value); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ Text.Hamlet.condH -+ [(isSel, -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) " checked"))] -+ Nothing; -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ toWidget (Text.Blaze.Html.toHtml text); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</div></label>") }) -+ - - boolField :: RenderMessage master FormMessage => Field sub master Bool - boolField = Field - { fieldParse = \e _ -> return $ boolParser e -- , fieldView = \theId name attrs val isReq -> [whamlet| --$newline never -- $if not isReq -- <input id=#{theId}-none *{attrs} type=radio name=#{name} value=none checked> -- <label for=#{theId}-none>_{MsgSelectNone} -- -+ , fieldView = \theId name attrs val isReq -> do { Text.Hamlet.condH -+ [(not isReq, -+ do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "-none\" type=\"radio\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "\" value=\"none\" checked"); -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "><label for=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "-none\">"); -+ (((Control.Monad.liftM (Text.Blaze.Html.toHtml .)) -+ $ (Yesod.Widget.liftW getMessageRender)) -+ >>= (\ urender_amQx -> toWidget (urender_amQx MsgSelectNone))); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</label>") })] -+ Nothing; -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "-yes\" type=\"radio\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"yes\""); -+ Text.Hamlet.condH -+ [(showVal id val, -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) " checked"))] -+ Nothing; -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "><label for=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "-yes\">"); -+ (((Control.Monad.liftM (Text.Blaze.Html.toHtml .)) -+ $ (Yesod.Widget.liftW getMessageRender)) -+ >>= (\ urender_amQy -> toWidget (urender_amQy MsgBoolYes))); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "</label><input id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "-no\" type=\"radio\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"no\""); -+ Text.Hamlet.condH -+ [(showVal not val, -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) " checked"))] -+ Nothing; -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "><label for=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "-no\">"); -+ (((Control.Monad.liftM (Text.Blaze.Html.toHtml .)) -+ $ (Yesod.Widget.liftW getMessageRender)) -+ >>= (\ urender_amQz -> toWidget (urender_amQz MsgBoolNo))); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "</label>") } - --<input id=#{theId}-yes *{attrs} type=radio name=#{name} value=yes :showVal id val:checked> --<label for=#{theId}-yes>_{MsgBoolYes} -- --<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 +805,22 @@ $newline never - checkBoxField :: RenderMessage m FormMessage => Field s m Bool - checkBoxField = Field - { fieldParse = \e _ -> return $ checkBoxParser e -- , fieldView = \theId name attrs val _ -> [whamlet| --$newline never --<input id=#{theId} *{attrs} type=checkbox name=#{name} value=yes :showVal id val:checked> --|] -+ , fieldView = \theId name attrs val _ -> do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ toWidget (Text.Blaze.Html.toHtml theId); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "\" type=\"checkbox\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"yes\""); -+ Text.Hamlet.condH -+ [(showVal id val, -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) " checked"))] -+ Nothing; -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = UrlEncoded - } - -@@ -566,9 +925,21 @@ fileField = Field - case files of - [] -> Right Nothing - file:_ -> Right $ Just file -- , fieldView = \id' name attrs _ isReq -> toWidget [hamlet| -- <input id=#{id'} name=#{name} *{attrs} type=file :isReq:required> -- |] -+ , fieldView = \id' name attrs _ isReq -> toWidget $ \ _render_amRu -+ -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ id (Text.Blaze.Html.toHtml id'); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"file\""); -+ Text.Hamlet.condH -+ [(isReq, -+ id ((Text.Blaze.Internal.preEscapedText . pack) " required"))] -+ Nothing; -+ id ((Text.Hamlet.attrsToHtml . toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fieldEnctype = Multipart - } - -@@ -594,10 +965,16 @@ 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| --$newline never --<input type=file name=#{name} ##{id'} *{fsAttrs fs}> --|] -+ , fvInput = do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<input type=\"file\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\" id=\""); -+ toWidget (Text.Blaze.Html.toHtml id'); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) (fsAttrs fs)); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fvErrors = errs - , fvRequired = True - } -@@ -623,10 +1000,16 @@ 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| --$newline never --<input type=file name=#{name} ##{id'} *{fsAttrs fs}> --|] -+ , fvInput = do { toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<input type=\"file\" name=\""); -+ toWidget (Text.Blaze.Html.toHtml name); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\" id=\""); -+ toWidget (Text.Blaze.Html.toHtml id'); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ toWidget ((Text.Hamlet.attrsToHtml . toAttributes) (fsAttrs fs)); -+ toWidget ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - , fvErrors = errs - , fvRequired = False - } -diff --git a/Yesod/Form/Functions.hs b/Yesod/Form/Functions.hs -index 89eb1e8..54974bb 100644 ---- a/Yesod/Form/Functions.hs -+++ b/Yesod/Form/Functions.hs -@@ -42,6 +42,15 @@ module Yesod.Form.Functions - , parseHelper - ) where - -+import qualified Data.Text.Lazy.Builder -+import qualified Text.Shakespeare -+import qualified Data.Monoid -+import qualified Text.Julius -+import qualified "blaze-markup" Text.Blaze.Internal -+import qualified "blaze-markup" Text.Blaze as Text.Blaze.Markup -+import qualified Yesod.Widget -+import qualified Data.Foldable -+import qualified Text.Hamlet - import Yesod.Form.Types - import Data.Text (Text, pack) - import Control.Arrow (second) -@@ -191,10 +200,13 @@ postHelper form env = do - let token = - case reqToken req of - Nothing -> mempty -- Just n -> [shamlet| --$newline never --<input type=hidden name=#{tokenKey} value=#{n}> --|] -+ Just n -> do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<input type=\"hidden\" name=\""); -+ id (Text.Blaze.Html.toHtml tokenKey); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\""); -+ id (Text.Blaze.Html.toHtml n); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\">") } - m <- getYesod - langs <- languages - ((res, xml), enctype) <- runFormGeneric (form token) m langs env -@@ -253,10 +265,11 @@ getKey = "_hasdata" - - getHelper :: (Html -> MForm sub master a) -> Maybe (Env, FileEnv) -> GHandler sub master (a, Enctype) - getHelper form env = do -- let fragment = [shamlet| --$newline never --<input type=hidden name=#{getKey}> --|] -+ let fragment = do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<input type=\"hidden\" name=\""); -+ id (Text.Blaze.Html.toHtml getKey); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\">") } - langs <- languages - m <- getYesod - runFormGeneric (form fragment) m langs env -@@ -270,19 +283,64 @@ renderTable, renderDivs, renderDivsNoLabels :: FormRender sub master a - renderTable aform fragment = do - (res, views') <- aFormToForm aform - let views = views' [] -- let widget = [whamlet| --$newline never --\#{fragment} --$forall view <- views -- <tr :fvRequired view:.required :not $ fvRequired view:.optional> -- <td> -- <label for=#{fvId view}>#{fvLabel view} -- $maybe tt <- fvTooltip view -- <div .tooltip>#{tt} -- <td>^{fvInput view} -- $maybe err <- fvErrors view -- <td .errors>#{err} --|] -+ let widget = do { Yesod.Widget.toWidget (Text.Blaze.Html.toHtml fragment); -+ Data.Foldable.mapM_ -+ (\ view_a9GR -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<tr"); -+ Text.Hamlet.condH -+ [(or [fvRequired view_a9GR, not (fvRequired view_a9GR)], -+ do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) " class=\""); -+ Text.Hamlet.condH -+ [(fvRequired view_a9GR, -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "required "))] -+ Nothing; -+ Text.Hamlet.condH -+ [(not (fvRequired view_a9GR), -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "optional"))] -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\"") })] -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "><td><label for=\""); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml (fvId view_a9GR)); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml (fvLabel view_a9GR)); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</label>"); -+ Text.Hamlet.maybeH -+ (fvTooltip view_a9GR) -+ (\ tt_a9GS -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<div class=\"tooltip\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml tt_a9GS); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</div>") }) -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</td><td>"); -+ Yesod.Widget.toWidget (fvInput view_a9GR); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</td>"); -+ Text.Hamlet.maybeH -+ (fvErrors view_a9GR) -+ (\ err_a9GT -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<td class=\"errors\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml err_a9GT); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</td>") }) -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</tr>") }) -+ views } - return (res, widget) - - -- | render a field inside a div -@@ -295,19 +353,65 @@ renderDivsMaybeLabels :: Bool -> FormRender sub master a - renderDivsMaybeLabels withLabels aform fragment = do - (res, views') <- aFormToForm aform - let views = views' [] -- let widget = [whamlet| --$newline never --\#{fragment} --$forall view <- views -- <div :fvRequired view:.required :not $ fvRequired view:.optional> -- $if withLabels -- <label for=#{fvId view}>#{fvLabel view} -- $maybe tt <- fvTooltip view -- <div .tooltip>#{tt} -- ^{fvInput view} -- $maybe err <- fvErrors view -- <div .errors>#{err} --|] -+ let widget = do { Yesod.Widget.toWidget (Text.Blaze.Html.toHtml fragment); -+ Data.Foldable.mapM_ -+ (\ view_a9Hr -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<div"); -+ Text.Hamlet.condH -+ [(or [fvRequired view_a9Hr, not (fvRequired view_a9Hr)], -+ do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) " class=\""); -+ Text.Hamlet.condH -+ [(fvRequired view_a9Hr, -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "required "))] -+ Nothing; -+ Text.Hamlet.condH -+ [(not (fvRequired view_a9Hr), -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "optional"))] -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\"") })] -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ Text.Hamlet.condH -+ [(withLabels, -+ do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "<label for=\""); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml (fvId view_a9Hr)); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml (fvLabel view_a9Hr)); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</label>") })] -+ Nothing; -+ Text.Hamlet.maybeH -+ (fvTooltip view_a9Hr) -+ (\ tt_a9Hs -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<div class=\"tooltip\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml tt_a9Hs); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</div>") }) -+ Nothing; -+ Yesod.Widget.toWidget (fvInput view_a9Hr); -+ Text.Hamlet.maybeH -+ (fvErrors view_a9Hr) -+ (\ err_a9Ht -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<div class=\"errors\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml err_a9Ht); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</div>") }) -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</div>") }) -+ views } - return (res, widget) - - -- | Render a form using Bootstrap-friendly shamlet syntax. -@@ -331,19 +435,61 @@ 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.Html.toHtml fragment); -+ Data.Foldable.mapM_ -+ (\ view_a9HE -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<div class=\"control-group clearfix "); -+ Text.Hamlet.condH -+ [(fvRequired view_a9HE, -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "required "))] -+ Nothing; -+ Text.Hamlet.condH -+ [(not (fvRequired view_a9HE), -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "optional "))] -+ Nothing; -+ Text.Hamlet.condH -+ [(has (fvErrors view_a9HE), -+ 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.Html.toHtml (fvId view_a9HE)); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml (fvLabel view_a9HE)); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "</label><div class=\"controls input\">"); -+ Yesod.Widget.toWidget (fvInput view_a9HE); -+ Text.Hamlet.maybeH -+ (fvTooltip view_a9HE) -+ (\ tt_a9HF -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<span class=\"help-block\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml tt_a9HF); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) "</span>") }) -+ Nothing; -+ Text.Hamlet.maybeH -+ (fvErrors view_a9HE) -+ (\ err_a9HG -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<span class=\"help-block\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml err_a9HG); -+ 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..70ac315 100644 ---- a/Yesod/Form/Jquery.hs -+++ b/Yesod/Form/Jquery.hs -@@ -12,14 +12,22 @@ module Yesod.Form.Jquery - , Default (..) - ) where - -+import qualified Data.Text.Lazy.Builder -+import qualified Text.Shakespeare -+import qualified Data.Monoid -+import qualified Text.Julius -+import qualified "blaze-markup" Text.Blaze.Internal -+import qualified "blaze-html" Text.Blaze.Html -+import qualified Yesod.Widget -+import qualified Text.Hamlet -+import qualified Text.Julius - import Yesod.Handler - import Yesod.Core (Route) - 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) -@@ -64,27 +72,75 @@ jqueryDayField jds = Field - . readMay - . unpack - , fieldView = \theId name attrs val isReq -> do -- toWidget [shamlet| --$newline never --<input id="#{theId}" name="#{name}" *{attrs} type="date" :isReq:required="" value="#{showVal val}"> --|] -+ toWidget $ do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"date\""); -+ Text.Hamlet.condH -+ [(isReq, -+ id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))] -+ Nothing; -+ id ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ id (Text.Blaze.Html.toHtml (showVal val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . Text.Hamlet.toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - addScript' urlJqueryJs - addScript' urlJqueryUiJs - addStylesheet' urlJqueryUiCss -- toWidget [julius| --$(function(){ -- var i = document.getElementById("#{rawJS theId}"); -- if (i.type != "date") { -- $(i).datepicker({ -- dateFormat:'yy-mm-dd', -- changeMonth:#{jsBool $ jdsChangeMonth jds}, -- changeYear:#{jsBool $ jdsChangeYear jds}, -- numberOfMonths:#{rawJS $ mos $ jdsNumberOfMonths jds}, -- yearRange:#{toJSON $ jdsYearRange jds} -- }); -- } --}); --|] -+ toWidget $ Text.Julius.asJavascriptUrl -+ (\ _render_a1esc -+ -> mconcat -+ [Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ "\ -+ \$(function(){\ -+ \ var i = document.getElementById(\""), -+ Text.Julius.Javascript (Text.Julius.toJavascript (rawJS theId)), -+ Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ "\");\ -+ \ if (i.type != \"date\") {\ -+ \ $(i).datepicker({\ -+ \ 'yy-mm-dd',\ -+ \ changeMonth:"), -+ Text.Julius.Javascript -+ (Text.Julius.toJavascript (jsBool (jdsChangeMonth jds))), -+ Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ ",\ -+ \ changeYear:"), -+ Text.Julius.Javascript -+ (Text.Julius.toJavascript (jsBool (jdsChangeYear jds))), -+ Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ ",\ -+ \ numberOfMonths:"), -+ Text.Julius.Javascript -+ (Text.Julius.toJavascript (rawJS (mos (jdsNumberOfMonths jds)))), -+ Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ ",\ -+ \ yearRange:"), -+ Text.Julius.Javascript -+ (Text.Julius.toJavascript (toJSON (jdsYearRange jds))), -+ Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ "\ -+ \ });\ -+ \ }\ -+ \});")]) -+ - , fieldEnctype = UrlEncoded - } - where -@@ -105,16 +161,47 @@ jqueryAutocompleteField :: (RenderMessage master FormMessage, YesodJquery master - jqueryAutocompleteField src = Field - { fieldParse = parseHelper $ Right - , fieldView = \theId name attrs val isReq -> do -- toWidget [shamlet| --$newline never --<input id="#{theId}" name="#{name}" *{attrs} type="text" :isReq:required="" value="#{either id id val}" .autocomplete> --|] -+ toWidget $ do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<input class=\"autocomplete\" id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id -+ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"text\""); -+ Text.Hamlet.condH -+ [(isReq, -+ id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))] -+ Nothing; -+ id ((Text.Blaze.Internal.preEscapedText . pack) " value=\""); -+ id (Text.Blaze.Html.toHtml (either id id val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . Text.Hamlet.toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">") } -+ - addScript' urlJqueryJs - addScript' urlJqueryUiJs - addStylesheet' urlJqueryUiCss -- toWidget [julius| --$(function(){$("##{rawJS theId}").autocomplete({source:"@{src}",minLength:2})}); --|] -+ toWidget $ Text.Julius.asJavascriptUrl -+ (\ _render_a1esq -+ -> mconcat -+ [Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ "\ -+ \$(function(){$(\"#"), -+ Text.Julius.Javascript (Text.Julius.toJavascript (rawJS theId)), -+ Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ "\").autocomplete({source:\""), -+ Text.Julius.Javascript -+ (Data.Text.Lazy.Builder.fromText (_render_a1esq src [])), -+ Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ "\",2})});")]) -+ - , fieldEnctype = UrlEncoded - } - -diff --git a/Yesod/Form/MassInput.hs b/Yesod/Form/MassInput.hs -index 62e89d6..22fdad5 100644 ---- a/Yesod/Form/MassInput.hs -+++ b/Yesod/Form/MassInput.hs -@@ -9,10 +9,20 @@ module Yesod.Form.MassInput - , massTable - ) where - -+import qualified Data.Text.Lazy.Builder -+import qualified Text.Shakespeare -+import qualified Data.Monoid -+import qualified Text.Julius -+import qualified "blaze-markup" Text.Blaze.Internal -+import qualified "blaze-html" Text.Blaze.Html -+import qualified Yesod.Widget -+import qualified Data.Text -+import qualified Text.Hamlet -+import qualified Data.Foldable - 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,16 +85,27 @@ inputList label fixXml single mdef = formToAForm $ do - { fvLabel = label - , fvTooltip = Nothing - , fvId = theId -- , fvInput = [whamlet| --$newline never --^{fixXml views} --<p> -- $forall xml <- xmls -- ^{xml} -- <input .count type=hidden name=#{countName} value=#{count}> -- <input type=checkbox name=#{addName}> -- Add another row --|] -+ , fvInput = do { Yesod.Widget.toWidget (fixXml views); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "<p>"); -+ Data.Foldable.mapM_ -+ (\ xml_aOR7 -> Yesod.Widget.toWidget xml_aOR7) xmls; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "<input class=\"count\" type=\"hidden\" name=\""); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml countName); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "\" value=\""); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml count); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "\"><input type=\"checkbox\" name=\""); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml addName); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "\">Add another row</p>") } -+ - , fvErrors = Nothing - , fvRequired = False - }]) -@@ -97,10 +118,14 @@ withDelete af = do - deleteName <- newFormIdent - (menv, _, _) <- ask - res <- case menv >>= Map.lookup deleteName . fst of -- Just ("yes":_) -> return $ Left [whamlet| --$newline never --<input type=hidden name=#{deleteName} value=yes> --|] -+ Just ("yes":_) -> return $ Left $ do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "<input type=\"hidden\" name=\""); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml deleteName); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "\" value=\"yes\">") } -+ - _ -> do - (_, xml2) <- aFormToForm $ areq boolField FieldSettings - { fsLabel = SomeMessage MsgDelete -@@ -126,32 +151,149 @@ fixme eithers = - massDivs, massTable - :: [[FieldView sub master]] - -> GWidget sub master () --massDivs viewss = [whamlet| --$newline never --$forall views <- viewss -- <fieldset> -- $forall view <- views -- <div :fvRequired view:.required :not $ fvRequired view:.optional> -- <label for=#{fvId view}>#{fvLabel view} -- $maybe tt <- fvTooltip view -- <div .tooltip>#{tt} -- ^{fvInput view} -- $maybe err <- fvErrors view -- <div .errors>#{err} --|] -+massDivs viewss = Data.Foldable.mapM_ -+ (\ views_aORq -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "<fieldset>"); -+ Data.Foldable.mapM_ -+ (\ view_aORr -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "<div"); -+ Text.Hamlet.condH -+ [(or [fvRequired view_aORr, not (fvRequired view_aORr)], -+ do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ " class=\""); -+ Text.Hamlet.condH -+ [(fvRequired view_aORr, -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "required "))] -+ Nothing; -+ Text.Hamlet.condH -+ [(not (fvRequired view_aORr), -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "optional"))] -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "\"") })] -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "><label for=\""); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml (fvId view_aORr)); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml (fvLabel view_aORr)); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</label>"); -+ Text.Hamlet.maybeH -+ (fvTooltip view_aORr) -+ (\ tt_aORs -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "<div class=\"tooltip\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml tt_aORs); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "</div>") }) -+ Nothing; -+ Yesod.Widget.toWidget (fvInput view_aORr); -+ Text.Hamlet.maybeH -+ (fvErrors view_aORr) -+ (\ err_aORt -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "<div class=\"errors\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml err_aORt); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "</div>") }) -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</div>") }) -+ views_aORq; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "</fieldset>") }) -+ viewss -+ -+ -+massTable viewss = Data.Foldable.mapM_ -+ (\ views_aORy -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "<fieldset><table>"); -+ Data.Foldable.mapM_ -+ (\ view_aORz -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "<tr"); -+ Text.Hamlet.condH -+ [(or [fvRequired view_aORz, not (fvRequired view_aORz)], -+ do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ " class=\""); -+ Text.Hamlet.condH -+ [(fvRequired view_aORz, -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "required "))] -+ Nothing; -+ Text.Hamlet.condH -+ [(not (fvRequired view_aORz), -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "optional"))] -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "\"") })] -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "><td><label for=\""); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml (fvId view_aORz)); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml (fvLabel view_aORz)); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</label>"); -+ Text.Hamlet.maybeH -+ (fvTooltip view_aORz) -+ (\ tt_aORA -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "<div class=\"tooltip\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml tt_aORA); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "</div>") }) -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "</td><td>"); -+ Yesod.Widget.toWidget (fvInput view_aORz); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</td>"); -+ Text.Hamlet.maybeH -+ (fvErrors view_aORz) -+ (\ err_aORB -+ -> do { Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "<td class=\"errors\">"); -+ Yesod.Widget.toWidget (Text.Blaze.Html.toHtml err_aORB); -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "</td>") }) -+ Nothing; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</tr>") }) -+ views_aORy; -+ Yesod.Widget.toWidget -+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) -+ "</table></fieldset>") }) -+ viewss - --massTable viewss = [whamlet| --$newline never --$forall views <- viewss -- <fieldset> -- <table> -- $forall view <- views -- <tr :fvRequired view:.required :not $ fvRequired view:.optional> -- <td> -- <label for=#{fvId view}>#{fvLabel view} -- $maybe tt <- fvTooltip view -- <div .tooltip>#{tt} -- <td>^{fvInput view} -- $maybe err <- fvErrors view -- <td .errors>#{err} --|] -diff --git a/Yesod/Form/Nic.hs b/Yesod/Form/Nic.hs -index 7c65ce4..357532f 100644 ---- a/Yesod/Form/Nic.hs -+++ b/Yesod/Form/Nic.hs -@@ -9,13 +9,19 @@ module Yesod.Form.Nic - , nicHtmlField - ) where - -+import qualified Data.Text.Lazy.Builder -+import qualified Text.Shakespeare -+import qualified Data.Monoid -+import qualified Text.Julius -+import qualified "blaze-markup" Text.Blaze.Internal -+import qualified Yesod.Widget - import Yesod.Handler - import Yesod.Core (Route, ScriptLoadPosition(..), jsLoader, Yesod) - import Yesod.Form - import Yesod.Widget - import Text.HTML.SanitizeXSS (sanitizeBalance) --import Text.Hamlet (Html, shamlet) --import Text.Julius (julius, rawJS) -+import Text.Hamlet (Html) -+import Text.Julius (rawJS) - #if MIN_VERSION_blaze_html(0, 5, 0) - import Text.Blaze (preEscapedToMarkup) - import Text.Blaze.Html.Renderer.String (renderHtml) -@@ -36,20 +42,49 @@ nicHtmlField :: YesodNic master => Field sub master Html - nicHtmlField = Field - { fieldParse = \e _ -> return . Right . fmap (preEscapedText . sanitizeBalance) . listToMaybe $ e - , fieldView = \theId name attrs val _isReq -> do -- toWidget [shamlet| --$newline never -- <textarea id="#{theId}" *{attrs} name="#{name}" .html>#{showVal val} --|] -+ toWidget $ do { id -+ ((Text.Blaze.Internal.preEscapedText . pack) -+ "<textarea class=\"html\" id=\""); -+ id (Text.Blaze.Html.toHtml theId); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\""); -+ id (Text.Blaze.Html.toHtml name); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "\""); -+ id ((Text.Hamlet.attrsToHtml . Text.Hamlet.toAttributes) attrs); -+ id ((Text.Blaze.Internal.preEscapedText . pack) ">"); -+ id (Text.Blaze.Html.toHtml (showVal val)); -+ id ((Text.Blaze.Internal.preEscapedText . pack) "</textarea>") } -+ - addScript' urlNicEdit - master <- lift getYesod - toWidget $ - case jsLoader master of -- BottomOfHeadBlocking -> [julius| --bkLib.onDomLoaded(function(){new nicEditor({fullPanel:true}).panelInstance("#{rawJS theId}")}); --|] -- _ -> [julius| --(function(){new nicEditor({fullPanel:true}).panelInstance("#{rawJS theId}")})(); --|] -+ BottomOfHeadBlocking -> Text.Julius.asJavascriptUrl -+ (\ _render_a1itM -+ -> Data.Monoid.mconcat -+ [Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ "\ -+ \bkLib.onDomLoaded(function(){new nicEditor({true}).panelInstance(\""), -+ Text.Julius.Javascript (Text.Julius.toJavascript (rawJS theId)), -+ Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ "\")});")]) -+ -+ _ -> Text.Julius.asJavascriptUrl -+ (\ _render_a1itQ -+ -> Data.Monoid.mconcat -+ [Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ "(function(){new nicEditor({true}).panelInstance(\""), -+ Text.Julius.Javascript (Text.Julius.toJavascript (rawJS theId)), -+ Text.Julius.Javascript -+ ((Data.Text.Lazy.Builder.fromText -+ . Text.Shakespeare.pack') -+ "\")})();")]) -+ - , fieldEnctype = UrlEncoded - } - where --- -1.8.2.rc3 - |