fix: use preEscapedText for inline JS script content
H.toHtml was escaping the JS content, causing the script tag to be empty. H.preEscapedText preserves the text as-is, which is correct for script tags.
This commit is contained in:
+3
-4
@@ -208,7 +208,8 @@ page title content =
|
||||
|
||||
-- | Inline JavaScript for client-side search + sort rendering.
|
||||
searchJs :: Text
|
||||
searchJs = T.unlines
|
||||
searchJs =
|
||||
T.unlines
|
||||
[ "(function(){"
|
||||
, "'use strict';"
|
||||
, ""
|
||||
@@ -349,7 +350,7 @@ indexPage _mode recipes =
|
||||
H.script ! A.id "roux-errors-data" ! A.type_ "application/json" $
|
||||
H.toHtml (decodeUtf8 (LB.toStrict (encode (Prelude.map Idx.toSearchEntry (filterBad recipes)))))
|
||||
-- Inline JS
|
||||
H.script ! A.type_ "text/javascript" $ H.toHtml searchJs
|
||||
H.script ! A.type_ "text/javascript" $ H.preEscapedText searchJs
|
||||
where
|
||||
filterOk = filter (isRight . Idx.riRecipe)
|
||||
filterBad = filter (isLeft . Idx.riRecipe)
|
||||
@@ -634,5 +635,3 @@ isLeft _ = False
|
||||
-- | Check if an 'Either' is 'Right'.
|
||||
isRight :: Either a b -> Bool
|
||||
isRight = not . isLeft
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user