]> gitweb @ CieloNegro.org - Rakka.git/commitdiff
Wrote more
authorpho <pho@cielonegro.org>
Fri, 26 Oct 2007 13:44:50 +0000 (22:44 +0900)
committerpho <pho@cielonegro.org>
Fri, 26 Oct 2007 13:44:50 +0000 (22:44 +0900)
darcs-hash:20071026134450-62b54-4b60ba7ea38721949c2f29d3b58a3b6bcaabded6.gz

Rakka.cabal
Rakka/Resource/Object.hs
Rakka/Resource/Render.hs
Rakka/Storage.hs
Rakka/Wiki/Engine.hs
defaultPages/Help/Syntax
defaultPages/MainPage

index 6ccfb1495a860ca0e7cde65048e4e6d30ffc4b24..60b1ca82e96de08ef152621daaf381993cc3e5d7 100644 (file)
@@ -21,8 +21,9 @@ Category:
 Tested-With:
     GHC == 6.6.1
 Build-Depends:
-    Crypto, FileManip, HUnit, HsHyperEstraier, HsSVN, Lucu, base,
-    encoding, filepath, hslogger, hxt, mtl, network, parsec, stm, unix
+    Crypto, FileManip, HUnit, HsHyperEstraier >= 0.2, HsSVN, Lucu,
+    base, encoding, filepath, hslogger, hxt, mtl, network, parsec,
+    stm, unix
 Data-Files:
     defaultpages/Help/SampleImage/Large
     defaultpages/Help/SampleImage/Small
index b029e5422900b69e1b41d4459016f680a6b0dda2..a18a268cb3504dc55badca12134cdf5883d02ed7 100644 (file)
@@ -32,7 +32,7 @@ resObject env
 
 handleGet :: Environment -> PageName -> Resource ()
 handleGet env name
-    = do pageM <- getPage (envStorage env) name
+    = do pageM <- getPage (envStorage env) name Nothing
          case pageM of
            Nothing
                -> foundNoEntity Nothing
index a22d7c4acaeaac0f56083ec66b359ea79957907b..213b0757c000c067d6664fb1ee08a960bce3aac3 100644 (file)
@@ -46,7 +46,7 @@ fallbackRender env path
 handleGet :: Environment -> PageName -> Resource ()
 handleGet env name
     = runIdempotentA $ proc ()
-    -> do pageM <- getPageA (envStorage env) -< name
+    -> do pageM <- getPageA (envStorage env) -< (name, Nothing)
           case pageM of
             Nothing
                 -> handlePageNotFound env -< name
index 83bb07795c2a5230230403d4df910663af51975d..6b0e098e883eedad9908154edea5205308912e38 100644 (file)
@@ -17,6 +17,7 @@ import           Control.Exception
 import           Control.Monad
 import           Control.Monad.Trans
 import           Data.Set (Set)
+import qualified Data.Set as S
 import           Rakka.Page
 import           Rakka.Storage.DefaultPage
 import           Subversion.Types
@@ -64,33 +65,38 @@ mkStorage lsdir repos mkDraft
          return sto
 
 
-getPage :: MonadIO m => Storage -> PageName -> m (Maybe Page)
-getPage sto name
-    = liftIO $ loadDefaultPage name -- FIXME
+getPage :: MonadIO m => Storage -> PageName -> Maybe RevNum -> m (Maybe Page)
+getPage = ((liftIO .) .) . getPage' . stoRepository
 
 
-putPage :: MonadIO m => Storage -> Maybe RevNum -> Page -> m ()
-putPage sto oldRev page
+getPage' :: Repository -> PageName -> Maybe RevNum -> IO (Maybe Page)
+getPage' repos name rev
+    = loadDefaultPage name -- FIXME
+
+
+putPage :: MonadIO m => Storage -> Page -> RevNum -> m ()
+putPage sto page oldRev
     = error "FIXME: not implemented"
 
 
-getPageA :: ArrowIO a => Storage -> a PageName (Maybe Page)
-getPageA = arrIO . getPage 
+getPageA :: ArrowIO a => Storage -> a (PageName, Maybe RevNum) (Maybe Page)
+getPageA = arrIO2 . getPage 
 
 
-putPageA :: ArrowIO a => Storage -> a (Maybe RevNum, Page) ()
+putPageA :: ArrowIO a => Storage -> a (Page, RevNum) ()
 putPageA = arrIO2 . putPage
 
 
 findAllPages :: Storage -> RevNum -> IO (Set PageName)
-findAllPages sto revNum
+findAllPages _   0   = findAllDefaultPages
+findAllPages sto rev
     = findAllDefaultPages -- FIXME
 
 
 findChangedPages :: Storage -> RevNum -> RevNum -> IO (Set PageName)
 findChangedPages sto 0      newRev = findAllPages sto newRev
 findChangedPages sto oldRev newRev
-    = fail "fixme: not impl"
+    = fail "FIXME: not impl"
 
 
 getCurrentRevNum :: Storage -> IO RevNum
@@ -135,14 +141,29 @@ syncIndex sto
          debugM logger ("The repository revision is currently " ++ show newRev)
 
          when (newRev /= oldRev) (syncIndex' oldRev newRev)
-
-         return oldRev -- FIXME
-         --return newRev
+         return newRev
     where
       syncIndex' :: RevNum -> RevNum -> IO ()
       syncIndex' oldRev newRev
           = do pages <- findChangedPages sto oldRev newRev
-               print pages -- FIXME
+               mapM_ (updateIndex sto newRev) (S.toList pages)
+
+
+updateIndex :: Storage -> RevNum -> PageName -> IO ()
+updateIndex sto rev name
+    = do pageM <- getPage sto name (Just rev)
+         case pageM of
+           -- ページが削除された
+           Nothing
+               -> do docIdM <- getDocIdByURI (stoIndexDB sto) (mkRakkaURI name)
+                     case docIdM of
+                       Nothing    -> return ()
+                       Just docId -> do removeDocument (stoIndexDB sto) docId [CleaningRemove]
+                                        infoM logger ("Removed page " ++ name ++ " from the index")
+           Just page
+               -> do draft <- stoMakeDraft sto page
+                     putDocument (stoIndexDB sto) draft [CleaningPut]
+                     infoM logger ("Indexed page " ++ name ++ " of revision " ++ show (pageRevision page))
 
 
 updateIndexRev :: Storage -> (RevNum -> IO RevNum) -> IO ()
index bb8dc3be9ca4bbe5bc26c90f6acc6b701c4d0816..b646a52cc65471f998e224060aaaed68512cb29b 100644 (file)
@@ -46,9 +46,9 @@ formatEntirePage sto sysConf interpTable
           BaseURI    baseURI  <- getSysConfA sysConf -< ()
           StyleSheet cssName  <- getSysConfA sysConf -< ()
 
-          Just pageTitle    <- getPageA sto -< "PageTitle"
-          Just leftSideBar  <- getPageA sto -< "SideBar/Left"
-          Just rightSideBar <- getPageA sto -< "SideBar/Right"
+          Just pageTitle    <- getPageA sto -< ("PageTitle"    , Nothing)
+          Just leftSideBar  <- getPageA sto -< ("SideBar/Left" , Nothing)
+          Just rightSideBar <- getPageA sto -< ("SideBar/Right", Nothing)
 
           tree <- ( eelem "/"
                     += ( eelem "page"
@@ -135,9 +135,9 @@ formatUnexistentPage sto sysConf interpTable
           BaseURI    baseURI  <- getSysConfA sysConf -< ()
           StyleSheet cssName  <- getSysConfA sysConf -< ()
 
-          Just pageTitle    <- getPageA sto -< "PageTitle"
-          Just leftSideBar  <- getPageA sto -< "SideBar/Left"
-          Just rightSideBar <- getPageA sto -< "SideBar/Right"
+          Just pageTitle    <- getPageA sto -< ("PageTitle"    , Nothing)
+          Just leftSideBar  <- getPageA sto -< ("SideBar/Left" , Nothing)
+          Just rightSideBar <- getPageA sto -< ("SideBar/Right", Nothing)
 
           tree <- ( eelem "/"
                     += ( eelem "pageNotFound"
index ce9a0b2e6947a4379ff2f398ab0cd93d5b42838e..d60a5a5ae9bd4141bc09be9f33e7612867ee33dd 100644 (file)
@@ -90,6 +90,8 @@ blah blah blah blah...
 * [[#example]]
 * [http://www.google.com/]
 * [http://www.google.com/ Google]
+* [[[Page]]]
+* [[[Page|Link to object of "Page"]]]
 
 
 <div id="example">example</div>
index dde08d73d3cca1d90b81b2a86ee1a11e33571b91..cdfb7d6f720233ffc6552921603115e5402bc242 100644 (file)
@@ -23,8 +23,6 @@ Another paragraph...
 
 == Subsection ==
 
-* [[[Help/Syntax]]]
-* [[[Help/Syntax|Object of Help/Syntax]]]
 * [[Help/Syntax]]
 * [http://cielonegro.org/]
 * [http://cielonegro.org/ CieloNegro]