lucienne-0.0.1: Lucienne/View/Link.hs
module Lucienne.View.Link
( Style (..)
, to, toHome, toFeedUrl, toFeedItemUrl, toFeed, toFeed', toDeleteFeed, toDoDeleteFeed
, toFeedItem, toDoDeleteFeedItem, toDoReadFeedItem)
where
import Text.Blaze ((!))
import qualified Text.Blaze.Html4.Strict as H
import qualified Text.Blaze.Html4.Strict.Attributes as A
import Data.Bson (ObjectId)
import Lucienne.View.Common (stringValue,setTitle)
import Lucienne.Model.Feed (Feed)
import qualified Lucienne.Model.Feed as F
import Lucienne.Model.FeedItem (FeedItem)
import qualified Lucienne.Model.FeedItem as FI
import Lucienne.Model.Util (showObjectId)
import qualified Lucienne.Url as Url
data Style = Default | Highlight | Active | Inactive
to :: String -> H.Html -> H.Html
to url = to' url Default
to' :: String -> Style -> H.Html -> H.Html
to' url style nested =
H.a ! toAttribute style ! A.href (stringValue url) $ nested
toAttribute :: Style -> H.Attribute
toAttribute style =
case style of
Default -> A.class_ "default"
Highlight -> A.class_ "highlight"
Active -> A.class_ "active"
Inactive -> A.class_ "inactive"
toFeedUrl :: Feed -> H.Html -> H.Html
toFeedUrl feed = setTitle "Go to feed URL" . (to $ F.url feed)
toHome :: H.Html -> H.Html
toHome = to Url.home
toDoDeleteFeed,toDeleteFeed :: Feed -> H.Html -> H.Html
toDeleteFeed feed = toId Url.deleteFeed (F.id feed) Default
toDoDeleteFeed feed = toId Url.doDeleteFeed (F.id feed) Default
toFeed :: Feed -> Style -> H.Html -> H.Html
toFeed feed style = toId Url.feed (F.id feed) style
toFeedItem :: FeedItem -> Style -> H.Html -> H.Html
toFeedItem item = toId Url.feedItem (FI.id item)
toFeedItemUrl,toFeed',toDoDeleteFeedItem,toDoReadFeedItem :: FeedItem -> H.Html -> H.Html
toFeedItemUrl item = setTitle "Go to URL" . to (FI.url item)
toFeed' item = toId Url.feed (FI.feedId item) Default
toDoDeleteFeedItem item =
setTitle "Delete" . toId Url.doDeleteFeedItem (FI.id item) Default
toDoReadFeedItem item =
setTitle "Mark as read" . toId Url.doReadFeedItem (FI.id item) Default
toId :: Url.Url -> ObjectId -> Style -> H.Html -> H.Html
toId url objId style nested =
H.a !
toAttribute style !
A.href (stringValue $ url ++ "/" ++ (showObjectId objId)) $
nested