]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Wiki/Interpreter/PageList.hs
Use time-http
[Rakka.git] / Rakka / Wiki / Interpreter / PageList.hs
index 8631c8b4bae98d3929b98bbe369ce69925ed429a..2fe9d305fc46509926a60aa6b1ddff9d22a5c403 100644 (file)
@@ -6,16 +6,37 @@ module Rakka.Wiki.Interpreter.PageList
 import           Control.Monad
 import           Data.Maybe
 import           Data.Time
-import           Network.HTTP.Lucu.RFC1123DateTime
+import qualified Data.Time.RFC1123 as RFC1123
+import           Network.URI
 import           Rakka.Storage
+import           Rakka.SystemConfig
 import           Rakka.Utils
 import           Rakka.Wiki
 import           Rakka.Wiki.Interpreter
+import           System.FilePath
 import           Text.HyperEstraier
 
 
 interpreters :: [Interpreter]
-interpreters = [ recentUpdatesInterp ]
+interpreters = [ recentUpdatesURLInterp
+               , recentUpdatesInterp
+               ]
+
+
+recentUpdatesURLInterp :: Interpreter
+recentUpdatesURLInterp
+    = InlineCommandInterpreter {
+        iciName = "recentUpdatesURL"
+      , iciInterpret
+          = \ ctx _ -> do BaseURI baseURI <- getSysConf (ctxSysConf ctx)
+                          let uri = baseURI {
+                                      uriPath  = uriPath baseURI </> "search.html"
+                                    , uriQuery = '?' : mkQueryString [ ("q"    , "[UVSET]")
+                                                                     , ("order", "@mdate NUMD")
+                                                                     ]
+                                    }
+                          return $ ExternalLink uri (Just "List all pages")
+      }
 
 
 -- <div class="recentUpdates">
@@ -64,14 +85,13 @@ recentUpdatesInterp
       mkListItem :: Bool -> HitPage -> IO ListItem
       mkListItem showSummary page
           = do lastMod <- utcToLocalZonedTime (hpLastMod page)
-               return ( [ Inline ( PageLink {
-                                     linkPage     = Just (hpPageName page)
-                                   , linkFragment = Nothing
-                                   , linkText     = Nothing
-                                   }
-                                 )
+               return ( [ Inline PageLink {
+                                       linkPage     = Just (hpPageName page)
+                                     , linkFragment = Nothing
+                                     , linkText     = Nothing
+                                     }
                         , Block ( Div [("class", "date")]
-                                  [Inline (Text (formatRFC1123DateTime lastMod))]
+                                  [Inline (Text (RFC1123.format lastMod))]
                                 )
                         ]
                         ++