uebung2017-9/Timeline.hs

38 lines
1.4 KiB
Haskell
Raw Normal View History

2017-06-29 15:08:27 +00:00
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Handler.Timeline where
import Import
2017-06-29 15:23:52 +00:00
-- TODO: Bearbeiten Sie die Aufgaben im Widget-Template "timeline"
2017-06-29 15:08:27 +00:00
getTimelineR :: Handler Html
getTimelineR = do
(uid, user) <- requireAuthPair
posts <- runDB $ selectList [PostUserId ==. uid] [Desc PostCreated]
(postWidget, postEnctype) <- generateFormPost (postForm Nothing uid)
let userName :: Text
userName = userIdent user
defaultLayout $ do
setTitle . toHtml $ userName <> "'s Timeline"
$(widgetFile "timeline")
-- TODO: Implementieren Sie ein Verhalten zum Speichern des Posts.
-- Nützliche Funktionen: runFormPost.
postTimelineR :: Handler Html
postTimelineR = do
getTimelineR
2017-06-29 16:01:54 +00:00
-- TODO: Eventuell müssen Sie hier oder in config/models die Reihenfolge der Post-Argumente anpassen.
postForm :: UserId -> Form Post
postForm u = renderDivs $ Post
-- UserId
2017-06-29 15:08:27 +00:00
<$> pure u
2017-06-29 16:01:54 +00:00
-- Textfeld mit Default-Wert "Post content"
2017-06-29 15:08:27 +00:00
<*> areq textField "Post" (Just "Post content")
2017-06-29 16:01:54 +00:00
-- Systemzeit
2017-06-29 15:08:27 +00:00
<*> lift (liftIO getCurrentTime)