X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Rakka.git;a=blobdiff_plain;f=Rakka%2FResource%2FPageEntity.hs;h=208b0b5946d07c8b45ded213f1c09b1ba742c464;hp=efb92162f874808624972730ee430d5a7e867b71;hb=f57c5c5ae6c95e68b11400718e7ce5de4ea1317a;hpb=396dbf64bef1796e9aaee706bc5ec4f1bcf06783 diff --git a/Rakka/Resource/PageEntity.hs b/Rakka/Resource/PageEntity.hs index efb9216..208b0b5 100644 --- a/Rakka/Resource/PageEntity.hs +++ b/Rakka/Resource/PageEntity.hs @@ -23,6 +23,7 @@ import Rakka.Utils import Rakka.W3CDateTime import Rakka.Wiki.Engine import System.FilePath +import Text.HyperEstraier hiding (getText) import Text.XML.HXT.Arrow.Namespace import Text.XML.HXT.Arrow.WriteDocument import Text.XML.HXT.Arrow.XmlArrow @@ -113,7 +114,7 @@ handleGetEntity env rev -> foundEntity (strongETag $ show rev) (entityLastMod page) outputXmlPage tree [ (MIMEType "application" "xhtml+xml" [], entityToXHTML env) - , (MIMEType "application" "rdf+xml" [], entityToRSS env) + , (MIMEType "application" "rss+xml" [], entityToRSS env) ] @@ -131,6 +132,8 @@ entityToXHTML env let cssHref = [uriToString id (mkObjectURI baseURI styleSheet) ""] scriptSrc = [uriToString id (baseURI { uriPath = uriPath baseURI "js" }) ""] + feeds <- arrIO0 (findFeeds (envStorage env)) -< () + pageTitle <- listA (readSubPage env) -< (name, Just page, "PageTitle") leftSideBar <- listA (readSubPage env) -< (name, Just page, "SideBar/Left") rightSideBar <- listA (readSubPage env) -< (name, Just page, "SideBar/Right") @@ -157,6 +160,14 @@ entityToXHTML env += sattr "type" "text/css" += attr "href" (arr id >>> mkText) ) + += ( constL feeds + >>> + eelem "link" + += sattr "rel" "alternate" + += sattr "type" "application/rss+xml" + += attr "title" (txt siteName <+> txt " - " <+> mkText) + += attr "href" (arr (mkFeedURIStr baseURI) >>> mkText) + ) += ( constL scriptSrc >>> eelem "script" @@ -225,7 +236,7 @@ entityToRSS env += sattr "xmlns:dc" "http://purl.org/dc/elements/1.1/" += sattr "xmlns:trackback" "http://madskills.com/public/xml/rss/module/trackback/" += ( eelem "channel" - += sattr "rdf:about" (uriToString id (mkRDFURI baseURI name) "") + += sattr "rdf:about" (uriToString id (mkFeedURI baseURI name) "") += ( eelem "title" += txt siteName += txt " - " @@ -540,3 +551,18 @@ handleDelete env name = do userID <- getUserID env status <- deletePage (envStorage env) userID name setStatus status + + +findFeeds :: Storage -> IO [PageName] +findFeeds sto + = do cond <- newCondition + setPhrase cond "[UVSET]" + addAttrCond cond "rakka:isFeed STREQ yes" + setOrder cond "@uri STRA" + result <- searchPages sto cond + return (map fst result) + + +mkFeedURIStr :: URI -> PageName -> String +mkFeedURIStr baseURI name + = uriToString id (mkFeedURI baseURI name) "" \ No newline at end of file