{-# OPTIONS_GHC -fno-warn-name-shadowing #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} ------------------------------------------------------------------------------- -- | -- Module : Yesod.Comments.Management -- Copyright : Patrick Brisbin -- License : as-is -- -- Maintainer : Patrick Brisbin -- Stability : unstable -- Portability : unportable -- -- > /comments CommentsAdminR CommentsAdmin getCommentsAdmin -- ------------------------------------------------------------------------------- module Yesod.Comments.Management ( CommentsAdmin , getCommentsAdmin , Route(..) ) where import Yesod import Yesod.Auth import Yesod.Comments.Core import Yesod.Comments.Utils import Yesod.Comments.Form import Yesod.Comments.View import Control.Monad (forM, unless) import Data.List (sortBy, nub) import Data.Text (Text) import Data.Time (UTCTime) import Language.Haskell.TH.Syntax hiding (lift) data CommentsAdmin = CommentsAdmin getCommentsAdmin :: a -> CommentsAdmin getCommentsAdmin = const CommentsAdmin mkYesodSub "CommentsAdmin" [ ClassP ''YesodComments [ VarT $ mkName "master" ] ] [parseRoutes| / CommentsR GET /edit/#ThreadId/#CommentId EditCommentR GET POST /delete/#ThreadId/#CommentId DeleteCommentR GET POST |] getCommentsR :: YesodComments m => GHandler CommentsAdmin m RepHtml getCommentsR = do comments <- getThreadedComments layout "Your comments" [whamlet| $forall (t, cs) <- comments

#{t}
^{showComments cs} |] getEditCommentR :: YesodComments m => ThreadId -> CommentId -> GHandler CommentsAdmin m RepHtml getEditCommentR thread cid = withUserComment thread cid $ \c -> do ud <- requireUserDetails layout "Edit comment" [whamlet| ^{runFormEdit c thread (Just ud)} |] postEditCommentR :: YesodComments m => ThreadId -> CommentId -> GHandler CommentsAdmin m RepHtml postEditCommentR = getEditCommentR getDeleteCommentR :: YesodComments m => ThreadId -> CommentId -> GHandler CommentsAdmin m RepHtml getDeleteCommentR _ _ = layout "Delete comment" [whamlet|

Are you sure?