module Clckwrks.Page.Admin.Pages where
import Clckwrks (UserId)
import Clckwrks.Monad (query)
import Clckwrks.Admin.Template (template)
import Clckwrks.Page.Acid (PagesSummary(..))
import Clckwrks.Page.Monad (PageM)
import Clckwrks.Page.URL (PageAdminURL(..), PageURL(..))
import Clckwrks.Page.Types (PageId(..), PublishStatus(..), Slug(..), publishStatusString)
import qualified Data.Text as T
import Data.Text.Lazy (Text)
import Data.Time (UTCTime)
import Happstack.Server (Response)
import HSP.XML
import HSP.XMLGenerator
pages :: PageM Response
pages =
do pages <- query PagesSummary
template "Page List" () $ editList pages
editList :: [(PageId, T.Text, Maybe Slug, UTCTime, UserId, PublishStatus)]
-> GenChildList PageM
editList [] = <%><p>There are currently no pages.</p></%>
editList pgs =
<%>
<table class="table table-condensed">
<thead>
<tr>
<th>Page Id</th>
<th>Title</th>
<th>Last Updated</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<% mapM editPageTR pgs %>
</tbody>
</table>
</%>
where
editPageTR :: (PageId, T.Text, Maybe Slug, UTCTime, UserId, PublishStatus) -> GenXML PageM
editPageTR (pid, ttl, _slug, updated, userId, published) =
<tr>
<td><% show $ unPageId pid %></td>
<td><a href=(PageAdmin $ EditPage pid)><% ttl %></a></td>
<td><% updated %></td>
<td><% publishStatusString published %></td>
</tr>