packages feed

bamboo-2009.6.6: src/Bamboo/View/Widget/Sidebar.hs

{-# LANGUAGE NoImplicitPrelude #-}
module Bamboo.View.Widget.Sidebar where


import Bamboo.View.Env hiding (rss_link)
import Bamboo.View.Widget.Helper
import qualified Bamboo.Type.StaticWidget as Sidebar
import qualified Bamboo.Type.Config as C
import qualified Bamboo.Type.State as State
import qualified Data.Set as Set
import qualified Bamboo.Type.Theme as T


-- model
import qualified Bamboo.Model.Tag as Tag

-- view

sidebar :: Widget
sidebar s = 
  div_class_id (s.config.theme.T.sidebar) "sidebar" << unordList formatted_list
  where
    stock_list = 
      [ feed
      , tag_list $ s.State.tags
      ] 
    custom_list =
      s
        .config
        .C.sidebar
        .map (\x -> h2 << x.Sidebar.name +++ x.markup)
    
    formatted_list = (stock_list ++ custom_list) .intersperse hr

    feed = toHtml
      [ h2 << "Subscribe"
      , p ! [theclass "feed"] << rss_link s
      ]

    rss_link = rss_url_link_pair >>> snd
    tag_list tags = toHtml
      [ h2 << "Tags"
      , unordList $ tags.Tag.sorted.map tag_link]
  
    tag_link x = 
      ( hotlink (s.config.root / x.Tag.uid) << x.Tag.name ) 
      +++ ( " (" ++ x.Tag.resources.Set.size.show ++ ")" )