{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -F -pgmFhsx2hs #-}
module Clckwrks.Page.Admin.NewPage where
import Clckwrks
import Clckwrks.Page.Acid as Acid
import Clckwrks.Page.Monad (PageM)
import Clckwrks.Page.URL as URL (PageURL(..), PageAdminURL(NewPage, NewPost, EditPage))
import Clckwrks.Admin.Template (template)
import Data.UUID ()
import Data.Time.Clock (getCurrentTime)
import Data.Text.Lazy (Text)
import HSP.XML
import HSP.XMLGenerator
import System.Random (randomIO)
newPage :: PageKind -> PageM Response
newPage pageKind =
do method GET
template "Create New Page/Post" () $
<%>
<form class="form-inline" action=(PageAdmin URL.NewPage) method="POST" enctype="multipart/form-data">
<button class="btn" type="submit">Create New Page</button>
</form>
<form class="form-inline" action=(PageAdmin URL.NewPost) method="POST" enctype="multipart/form-data">
<button class="btn" type="submit">Create New Post</button>
</form>
</%>
<|>
do method POST
uuid <- liftIO $ randomIO
now <- liftIO $ getCurrentTime
muid <- getUserId
case muid of
Nothing -> escape $ internalServerError $ toResponse ("Clcwrks.Admin.NewPage.newPage was unable to obtain the current UserId" :: Text)
(Just uid) ->
do page <- update (Acid.NewPage pageKind uid uuid now)
seeOtherURL (PageAdmin $ EditPage (pageId page))