From 7c4d6b5e4704219cdae573d32bac8661310a8d7a Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Wed, 4 Jul 2012 17:53:24 +0300 Subject: [PATCH] Javascript in Head (#380) --- yesod-core/Yesod/Widget.hs | 2 +- yesod-core/test/YesodCoreTest/Widget.hs | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/yesod-core/Yesod/Widget.hs b/yesod-core/Yesod/Widget.hs index cdeabd44..c372b9e7 100644 --- a/yesod-core/Yesod/Widget.hs +++ b/yesod-core/Yesod/Widget.hs @@ -153,7 +153,7 @@ instance render ~ RY master => ToWidgetHead sub master (render -> Html) where instance render ~ RY master => ToWidgetHead sub master (render -> Css) where toWidgetHead = toWidget instance render ~ RY master => ToWidgetHead sub master (render -> Javascript) where - toWidgetHead = toWidget + toWidgetHead j = toWidgetHead $ \r -> H.script $ preEscapedLazyText $ renderJavascriptUrl r j instance ToWidgetHead sub master Html where toWidgetHead = toWidgetHead . const diff --git a/yesod-core/test/YesodCoreTest/Widget.hs b/yesod-core/test/YesodCoreTest/Widget.hs index 86ed0718..7d079596 100644 --- a/yesod-core/test/YesodCoreTest/Widget.hs +++ b/yesod-core/test/YesodCoreTest/Widget.hs @@ -26,6 +26,7 @@ mkYesod "Y" [parseRoutes| /whamlet WhamletR GET /towidget TowidgetR GET /auto AutoR GET +/jshead JSHeadR GET |] instance Yesod Y where @@ -82,12 +83,16 @@ $newline never where someHtml = [shamlet|somehtml|] +getJSHeadR :: Handler RepHtml +getJSHeadR = defaultLayout $ toWidgetHead [julius|alert("hello");|] + widgetTest :: Spec widgetTest = describe "Test.Widget" [ it "addJuliusBody" case_addJuliusBody , it "whamlet" case_whamlet , it "two letter lang codes" case_two_letter_lang , it "automatically applies toWidget" case_auto + , it "toWidgetHead puts JS in head" case_jshead ] runner :: Session () -> IO () @@ -121,3 +126,10 @@ case_auto = runner $ do , requestHeaders = [("Accept-Language", "es")] } assertBody "\nsomehtml" res + +case_jshead :: IO () +case_jshead = runner $ do + res <- request defaultRequest + { pathInfo = ["jshead"] + } + assertBody "\n" res