X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Rakka.git;a=blobdiff_plain;f=Rakka%2FWiki%2FInterpreter%2FTrackback.hs;h=485c46f1d6e343b48eece25ae6dc384ae146d36f;hp=a5b96814bf37d05a4f89d85f51d65d03f11734fd;hb=51edda81709389f8219ddb45d572de915a2e7553;hpb=dc29dc9081156af3b536b19ffd828cdd67ddd84a diff --git a/Rakka/Wiki/Interpreter/Trackback.hs b/Rakka/Wiki/Interpreter/Trackback.hs index a5b9681..485c46f 100644 --- a/Rakka/Wiki/Interpreter/Trackback.hs +++ b/Rakka/Wiki/Interpreter/Trackback.hs @@ -3,8 +3,13 @@ module Rakka.Wiki.Interpreter.Trackback ) where +import Data.Maybe +import Data.Time +import Network.HTTP.Lucu.RFC1123DateTime import Rakka.Page +import Rakka.Storage import Rakka.SystemConfig +import Rakka.TrackBack import Rakka.Wiki import Rakka.Wiki.Interpreter @@ -35,5 +40,37 @@ trackbacksInterp = BlockCommandInterpreter { bciName = "trackbacks" , bciInterpret - = \ _ _ -> return $ Div [("class", "trackbacks")] [] + = \ ctx _ -> + do trackbacks <- case ctxPageName ctx of + Nothing + -> return [] + Just name + -> getAttachment (ctxStorage ctx) name "trackbacks" Nothing + >>= + return . fromMaybe [] + items <- mapM mkListItem trackbacks + + let divElem = Div [("class", "trackbacks")] [list] + list = Block (List Bullet items) + + return divElem } + where + mkListItem :: TrackBack -> IO ListItem + mkListItem tb + = do zonedTime <- utcToLocalZonedTime (tbTime tb) + + let anchor = Just (Inline (ExternalLink (tbURL tb) label)) + label = case (tbTitle tb, tbBlogName tb) of + (Nothing , Nothing ) -> Nothing + (Just title, Nothing ) -> Just title + (Nothing , Just blogName) -> Just blogName + (Just title, Just blogName) -> Just (title ++ " (" ++ blogName ++ ")") + date = Just ( Block ( Div [("class", "date")] + [Inline (Text (formatRFC1123DateTime zonedTime))] + ) + ) + excerpt = do e <- tbExcerpt tb + return $ Block $ Paragraph [Text e] + + return $ catMaybes [anchor, date, excerpt] \ No newline at end of file