{-# LANGUAGE FlexibleContexts, TypeFamilies #-} {-# OPTIONS_GHC -F -pgmFtrhsx #-} module Survey.Pages.EditSurvey where import Control.Applicative (Applicative((<*>),pure), Alternative, (*>), (<*), (<$>)) import Control.Monad import Control.Monad.Trans (MonadIO(..)) import Data.Acid import Data.Maybe (fromMaybe) import Data.Text (Text) import qualified Data.Text as Text import Happstack.Server import HSP import qualified HSX.XMLGenerator as HSX import Survey.Types import Survey.State (SurveyState, NewItemToSurvey(..), surveyError) import Survey.Pages.FormPart import qualified Survey.URL as URL import Text.Digestive import Text.Digestive.Common (input) import Text.Digestive.Forms (FormInput(..)) import qualified Text.Digestive.Forms as Forms import Text.Digestive.Forms.Happstack import Text.Digestive.HSP.Html4 hiding (inputTextArea) import Web.Routes editSurveyPage :: (EmbedAsAttr m (Attr String URL.SurveyURL), EmbedAsChild m XML, URL m ~ URL.SurveyURL, XMLGenerator m) => (String -> [XMLGenT m (HSX.XML m)] -> XMLGenT m (HSX.XML m) -> m Response) -> SurveyId -> m Response editSurveyPage pageTemplate sid = do pageTemplate "Edit Survey" [] $
Survey <% show $ unSurveyId $ sid %>
Add a question with an answer that is:
Add True / False
Add Integer Range
Add Single Line
Add Long Response
Add Pick One
Add Pick Many
Survey <% show $ unSurveyId $ sid %>
<% formPart "survey" actionURL addItem Nothing ((,) <$> questionForm <*> choicesForm <* submit "add survey item") %><% surveyError e %>
(Right item) -> pageTemplate "Item Added" []Item successfully added. <% show item %>