diff --git a/src/Handler/Utils/Form/MassInput.hs b/src/Handler/Utils/Form/MassInput.hs index b89799f9a..6cd67ccc5 100644 --- a/src/Handler/Utils/Form/MassInput.hs +++ b/src/Handler/Utils/Form/MassInput.hs @@ -36,6 +36,8 @@ import qualified Data.Foldable as Fold import Control.Monad.Reader.Class (MonadReader(local)) +import Text.Hamlet (hamletFile) + $(mapM tupleBoxCoord [2..4]) @@ -409,6 +411,12 @@ massInput MassInput{..} FieldSettings{..} fvRequired initialResult csrf = do MsgRenderer mr <- getMsgRenderer + whenM (hasCustomHeader HeaderMassInputShortcircuit) . liftHandlerT $ do + PageContent{..} <- widgetToPageContent $(widgetFile "widgets/massinput/massinput-standalone") + ur <- getUrlRenderParams + + sendResponse $ $(hamletFile "templates/widgets/massinput/massinput-standalone-wrapper.hamlet") ur + let fvLabel = toHtml $ mr fsLabel fvTooltip = toHtml . mr <$> fsTooltip diff --git a/src/Utils.hs b/src/Utils.hs index 40fa580ee..4310da38d 100644 --- a/src/Utils.hs +++ b/src/Utils.hs @@ -645,7 +645,7 @@ takeSessionJson key = lookupSessionJson key <* deleteSession (toPathPiece key) -- Custom HTTP Request-Headers -- --------------------------------- -data CustomHeader = HeaderIsModal | HeaderDBTableShortcircuit +data CustomHeader = HeaderIsModal | HeaderDBTableShortcircuit | HeaderMassInputShortcircuit deriving (Eq, Ord, Enum, Bounded, Read, Show, Generic) instance Universe CustomHeader diff --git a/templates/widgets/massinput/massinput-standalone-wrapper.hamlet b/templates/widgets/massinput/massinput-standalone-wrapper.hamlet new file mode 100644 index 000000000..f6cfbcf2a --- /dev/null +++ b/templates/widgets/massinput/massinput-standalone-wrapper.hamlet @@ -0,0 +1,8 @@ +$newline never +$# Wrapper around massinput-standalone +$# pageTitle :: Html +$# pageHead :: HtmlUrl url +$# pageBody :: HtmlUrl url +$# +$# Probably only `pageBody` is relevant +^{pageBody} diff --git a/templates/widgets/massinput/massinput-standalone.hamlet b/templates/widgets/massinput/massinput-standalone.hamlet new file mode 100644 index 000000000..6fef23b58 --- /dev/null +++ b/templates/widgets/massinput/massinput-standalone.hamlet @@ -0,0 +1,6 @@ +$newline never +$# Version of `widgets/massinput/massinput` for when short-circuiting happens +$# i.e. the response is only this widget wrapped in `massinput-standalone-wrapper.hamlet` +#{csrf} +^{shapeInput} +^{miWidget}