module Clckwrks.Media.Page.AllMedia where
import Control.Applicative ((<$>))
import Control.Monad.Reader (ask)
import Clckwrks (ClckURL(..), query)
import Clckwrks.Admin.Template (template)
import Clckwrks.Media.Acid (AllMediumIds(..))
import Clckwrks.Media.Types (MediumId(..))
import Clckwrks.Media.Monad (MediaM)
import Clckwrks.Media.URL (MediaURL(..))
import Data.String (fromString)
import Data.Text.Lazy (Text)
import Happstack.Server (Response, asContentType, notFound, serveFile, toResponse)
import HSP.XML (XML, fromStringLit)
import HSP.XMLGenerator
allMedia :: MediaM Response
allMedia =
do mediumIds <- query AllMediumIds
template "all media" <link rel="stylesheet" type="text/css" href=(PluginData (fromString "media") "style.css") /> $
mkGallery mediumIds
mkGallery :: [MediumId] -> XMLGenT MediaM XML
mkGallery mediumIds =
<ul id="media-gallery">
<% mapM mkPreview mediumIds %>
</ul>
mkPreview :: MediumId -> XMLGenT MediaM XML
mkPreview mid =
<li>
<a href=(GetMedium mid)><img src=(Preview mid) /></a>
</li>