]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Wiki/Engine.hs
Wrote many...
[Rakka.git] / Rakka / Wiki / Engine.hs
index 8d5c8eecc0fa87ffbf53812a8916aece7cb1fa72..afbc610ab0f1497ec94f9b9b8991fb819049c7c2 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"
@@ -60,6 +60,10 @@ formatEntirePage sto sysConf interpTable
                                 Just x -> sattr "lang" x
                                 _      -> none
                             )
+                         += ( case pageFileName page of
+                                Just x -> sattr "fileName" x
+                                _      -> none
+                            )
                          += ( case pageType page of
                                 MIMEType "text" "css" _
                                     -> sattr "isTheme" (yesOrNo $ pageIsTheme page)
@@ -131,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"
@@ -212,6 +216,18 @@ wikifyPage interpTable page
                  case parse parser "" source of
                    Left err -> wikifyParseError err
                    Right xs -> xs
+
+        MIMEType "image" _ _
+            -> [ Paragraph [ Image (pageName page) Nothing ] ]
+
+        _   -> if pageIsBinary page then
+                   -- object へのリンクのみ
+                   [ Paragraph [ ObjectLink (pageName page) (Just $ pageFileName' page) ] ]
+               else
+                   -- pre
+                   let text = decodeLazy UTF8 (pageContent page)
+                   in
+                     [ Preformatted [ Text text ] ]
     where
       tableToFunc :: String -> Maybe CommandType
       tableToFunc name
@@ -288,10 +304,14 @@ makeDraft interpTable page
          setAttribute doc "@lang"          $ pageLanguage page
          setAttribute doc "@type"          $ Just $ show $ pageType page
          setAttribute doc "@mdate"         $ Just $ formatW3CDateTime $ pageLastMod page
+         setAttribute doc "rakka:fileName" $ pageFileName page
          setAttribute doc "rakka:isLocked" $ Just $ yesOrNo $ pageIsLocked page
          setAttribute doc "rakka:isBoring" $ Just $ yesOrNo $ pageIsBoring page
          setAttribute doc "rakka:isBinary" $ Just $ yesOrNo $ pageIsBinary page
          setAttribute doc "rakka:revision" $ Just $ show $ pageRevision page
+         setAttribute doc "rakka:summary"  $ pageSummary page
+
+         addHiddenText doc (pageName page)
 
          case pageType page of
             MIMEType "text" "css" _
@@ -328,6 +348,11 @@ makeDraft interpTable page
           = do case i of
                  Text text
                      -> addText doc text
+                 ObjectLink page Nothing
+                     -> addText doc page
+                 ObjectLink page (Just text)
+                     -> do addHiddenText doc page
+                           addText doc text
                  PageLink page fragment Nothing
                      -> addText doc (fromMaybe "" page ++
                                      fromMaybe "" fragment)
@@ -352,4 +377,4 @@ everywhereM' f x = f x >>= gmapM (everywhereM' f)
 wikifyParseError :: ParseError -> WikiPage
 wikifyParseError err
     = [Div [("class", "error")]
-               [ Preformatted [Text (show err)] ]]
+               [ Block (Preformatted [Text (show err)]) ]]