packages feed

happstack-6.0.0: templates/project/src/Pages/GuestBookEntries.hs

{-# OPTIONS_GHC -F -pgmFtrhsx #-}
module Pages.GuestBookEntries 
     ( guestBookEntriesPage 
     ) where

import HSP
import Happstack.Server  (Method(GET), Response, ServerPart, ServerPartT, methodM)
import Happstack.State   (query)
import Pages.AppTemplate (appTemplate)
import Pages.Common      (dateStr)
import State.GuestBook   (ReadGuestBook(..))
import Types.GuestBook   (GuestBook(..), GuestBookEntry(..))

guestBookEntriesPage :: ServerPart Response
guestBookEntriesPage =
    do methodM GET
       gb  <- query ReadGuestBook
       appTemplate "Guestbook Entries" () (guestBookXML gb)

guestBookXML :: GuestBook -> XMLGenT (ServerPartT IO) XML
guestBookXML (GuestBook entries) =
    <div>
     <h2 id="comments" class="h2comment">Words of Wisdom</h2>
     <div class="clear" />
     <ul class="commentlist">
      <% mapM guestBookEntryXML $ zip entries (cycle [False,True]) %>
     </ul>
    </div>

guestBookEntryXML :: (GuestBookEntry, Bool) -> XMLGenT (ServerPartT IO) XML
guestBookEntryXML ((GuestBookEntry author message date email), alt) =
           <li class=(if alt then "alt" else "")>
            <strong><% author ++ (displayemail email)  %></strong> said:<br /><br />
            <% map p (lines message) %>
            <br />
            <small class="commentmetadata"><% dateStr date %></small> 
           </li>
        where p str = <p><% str %></p>
              displayemail "" = ""
              displayemail x = "<" ++ x ++ ">"