lebd/src/Handler/Entries.hs

36 lines
1.2 KiB
Haskell
Raw Normal View History

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
module Handler.Entries where
import Import
import Web.Slug ( Slug )
import qualified Entry.Kind as K
2017-10-08 18:02:42 -04:00
import Widget.Entry ( entryR, hEntry )
import Widget.Feed ( hFeed )
getEntriesR :: K.EntryKind -> Handler Html
getEntriesR kind = do
entries <- runDB $ selectList [EntryKind ==. kind] [Desc EntryPublished]
2017-10-08 19:08:23 -04:00
defaultLayout $ do
setTitle . toHtml . K.pluralise $ kind
$(widgetFile "entries")
checkMatching :: K.EntryKind -> Slug -> Entry -> Bool
checkMatching kind slug entry = (kind == entryKind entry) && (slug == entrySlug entry)
getEntryNoSlugR :: a -> EntryId -> Handler Html
getEntryNoSlugR _ entryId = do
entry <- fmap (Entity entryId) . runDB . get404 $ entryId
redirectWith movedPermanently301 . entryR $ entry
getEntryR :: K.EntryKind -> EntryId -> Slug -> Handler Html
getEntryR kind entryId slug = do
entry <- fmap (Entity entryId) . runDB . get404 $ entryId
if checkMatching kind slug $ entityVal entry
then defaultLayout $ do
setTitle . toHtml . entryName . entityVal $ entry
$(widgetFile "entry")
else redirectWith movedPermanently301 $ entryR entry