gitit 0.14.0.0 → 0.15.0.0
raw patch · 13 files changed
+22/−390 lines, 13 filesdep ~HStringTemplatedep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: HStringTemplate, base
API changes (from Hackage documentation)
- Network.Gitit.ContentTransformer: exportPage :: Handler
- Network.Gitit.ContentTransformer: exportPandoc :: Pandoc -> ContentTransformer Response
- Network.Gitit.Export: exportFormats :: Config -> [(String, String -> Pandoc -> Handler)]
- Network.Gitit.Handlers: exportPage :: Handler
- Network.Gitit.Interface: [pdfExport] :: Config -> Bool
- Network.Gitit.Types: [pdfExport] :: Config -> Bool
- Network.Gitit.Interface: Config :: FilePath -> FileStoreType -> PageType -> String -> MathMethod -> Bool -> Bool -> (Handler -> Handler) -> AuthenticationLevel -> Handler -> FilePath -> Int -> FilePath -> FilePath -> Priority -> FilePath -> [String] -> Bool -> Integer -> Integer -> String -> Int -> Bool -> String -> [String] -> [String] -> String -> String -> Maybe (String, [String]) -> Bool -> Bool -> String -> String -> String -> String -> Bool -> Bool -> FilePath -> Map String String -> String -> String -> Text -> Bool -> String -> Bool -> String -> Integer -> Integer -> Bool -> Maybe FilePath -> Bool -> Int -> GithubConfig -> Config
+ Network.Gitit.Interface: Config :: FilePath -> FileStoreType -> PageType -> String -> MathMethod -> Bool -> Bool -> (Handler -> Handler) -> AuthenticationLevel -> Handler -> FilePath -> Int -> FilePath -> FilePath -> Priority -> FilePath -> [String] -> Bool -> Integer -> Integer -> String -> Int -> Bool -> String -> [String] -> [String] -> String -> String -> Maybe (String, [String]) -> Bool -> Bool -> String -> String -> String -> String -> Bool -> Bool -> FilePath -> Map String String -> String -> String -> Text -> Bool -> String -> Bool -> String -> Integer -> Integer -> Maybe FilePath -> Bool -> Int -> GithubConfig -> Config
- Network.Gitit.Types: Config :: FilePath -> FileStoreType -> PageType -> String -> MathMethod -> Bool -> Bool -> (Handler -> Handler) -> AuthenticationLevel -> Handler -> FilePath -> Int -> FilePath -> FilePath -> Priority -> FilePath -> [String] -> Bool -> Integer -> Integer -> String -> Int -> Bool -> String -> [String] -> [String] -> String -> String -> Maybe (String, [String]) -> Bool -> Bool -> String -> String -> String -> String -> Bool -> Bool -> FilePath -> Map String String -> String -> String -> Text -> Bool -> String -> Bool -> String -> Integer -> Integer -> Bool -> Maybe FilePath -> Bool -> Int -> GithubConfig -> Config
+ Network.Gitit.Types: Config :: FilePath -> FileStoreType -> PageType -> String -> MathMethod -> Bool -> Bool -> (Handler -> Handler) -> AuthenticationLevel -> Handler -> FilePath -> Int -> FilePath -> FilePath -> Priority -> FilePath -> [String] -> Bool -> Integer -> Integer -> String -> Int -> Bool -> String -> [String] -> [String] -> String -> String -> Maybe (String, [String]) -> Bool -> Bool -> String -> String -> String -> String -> Bool -> Bool -> FilePath -> Map String String -> String -> String -> Text -> Bool -> String -> Bool -> String -> Integer -> Integer -> Maybe FilePath -> Bool -> Int -> GithubConfig -> Config
Files
- CHANGES +9/−0
- README.markdown +4/−5
- data/default.conf +1/−8
- data/templates/pagetools.st +0/−1
- gitit.cabal +4/−7
- src/Network/Gitit.hs +0/−1
- src/Network/Gitit/Cache.hs +1/−12
- src/Network/Gitit/Config.hs +0/−2
- src/Network/Gitit/ContentTransformer.hs +0/−27
- src/Network/Gitit/Export.hs +0/−307
- src/Network/Gitit/Handlers.hs +1/−2
- src/Network/Gitit/Layout.hs +1/−15
- src/Network/Gitit/Types.hs +1/−3
CHANGES view
@@ -1,3 +1,12 @@+Version 0.15.0.0 released 12 Aug 2021++ * Remove the Export feature entirely.+ There were too many security problems associated with exports.+ Given limitations on developer time, removing the feature entirely+ seemed the best solution. API change: removed Network.Gitit.Export.++ * Fix dependencies to compile with ghc 9.+ Version 0.14.0.0 released 12 Aug 2021 * PDF export: fix vulnerability. Augustin Laville pointed
README.markdown view
@@ -7,10 +7,9 @@ and may be modified either by using the VCS's command-line tools or through the wiki's web interface. By default, pandoc's extended version of markdown is used as a markup language, but reStructuredText, LaTeX, HTML,-DocBook, or Emacs Org-mode markup can also be used. Pages can be exported in a-number of different formats, including LaTeX, RTF, OpenOffice ODT, and-MediaWiki markup. Gitit can be configured to display TeX math (using-[texmath]) and highlighted source code (using [highlighting-kate]).+DocBook, or Emacs Org-mode markup can also be used. Gitit can+be configured to display TeX math (using [texmath]) and+highlighted source code (using [highlighting-kate]). Other features include @@ -411,7 +410,7 @@ By default, gitit does not cache content. If your wiki receives a lot of traffic or contains pages that are slow to render, you may want to activate caching. To do this, set the configuration option `use-cache` to `yes`.-By default, rendered pages, highlighted source files, and exported PDFs+By default, rendered pages, and highlighted source files will be cached in the `cache` directory. (Another directory can be specified by setting the `cache-dir` configuration option.)
data/default.conf view
@@ -266,16 +266,9 @@ feed-refresh-time: 60 # number of minutes to cache feeds before refreshing -pdf-export: no-# if yes, PDF will appear in export options. PDF will be created using-# pdflatex, which must be installed and in the path. Note that PDF-# exports create significant additional server load.- pandoc-user-data: # if a directory is specified, this will be searched for pandoc-# customizations. These can include a templates/ directory for custom-# templates for various export formats, an S5 directory for custom-# S5 styles, and a reference.odt for ODT exports. If no directory is+# customizations. If no directory is # specified, $HOME/.pandoc will be searched. See pandoc's README for # more information.
data/templates/pagetools.st view
@@ -9,6 +9,5 @@ <li><a href="$base$/_feed$pageUrl$" type="application/atom+xml" rel="alternate" title="This page's ATOM Feed">Atom feed</a> <img alt="feed icon" src="$base$/img/icons/feed.png"/></li> $endif$ </ul>- $exportbox$ </fieldset> </div>
gitit.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.0 name: gitit-version: 0.14.0.0+version: 0.15.0.0 build-type: Simple synopsis: Wiki using happstack, git or darcs, and pandoc. description: Gitit is a wiki backed by a git, darcs, or mercurial@@ -9,9 +9,7 @@ the wiki's web interface. Pandoc is used for markup processing, so pages may be written in (extended) markdown, reStructuredText, LaTeX, HTML,- or literate Haskell, and exported in ten different- formats, including LaTeX, ConTeXt, DocBook, RTF,- OpenOffice ODT, and MediaWiki markup.+ or literate Haskell. . Notable features include .@@ -115,14 +113,13 @@ Network.Gitit.Authentication.Github, Network.Gitit.Util, Network.Gitit.Server Network.Gitit.Cache, Network.Gitit.State,- Network.Gitit.Export, Network.Gitit.Handlers, Network.Gitit.Plugins, Network.Gitit.Rpxnow, Network.Gitit.Page, Network.Gitit.Feed, Network.Gitit.Compat.Except, Paths_gitit autogen-modules: Paths_gitit- build-depends: base >= 4.9 && < 4.15,+ build-depends: base >= 4.9 && < 5, syb, filepath, safe,@@ -145,7 +142,7 @@ utf8-string >= 0.3 && < 1.1, SHA > 1, HTTP >= 4000.0,- HStringTemplate >= 0.6 && < 0.9,+ HStringTemplate >= 0.8.8 && < 0.9, old-locale, time, recaptcha >= 0.1,
src/Network/Gitit.hs view
@@ -199,7 +199,6 @@ authenticate ForModify (unlessNoDelete deletePage showPage) ] , dir "_preview" preview , guardIndex >> indexPage- , guardCommand "export" >> exportPage , method POST >> guardCommand "cancel" >> showPage , method POST >> guardCommand "update" >> authenticate ForModify (unlessNoEdit updatePage showPage)
src/Network/Gitit/Cache.hs view
@@ -41,23 +41,13 @@ import Text.Pandoc.UTF8 (encodePath) -- | Expire a cached file, identified by its filename in the filestore.--- If there is an associated exported PDF, expire it too. -- Returns () after deleting a file from the cache, fails if no cached file. expireCachedFile :: String -> GititServerPart () expireCachedFile file = do cfg <- getConfig let target = encodePath $ cacheDir cfg </> file exists <- liftIO $ doesFileExist target- when exists $ liftIO $ do- liftIO $ removeFile target- expireCachedPDF target (defaultExtension cfg)--expireCachedPDF :: String -> String -> IO ()-expireCachedPDF file ext = - when (takeExtension file == "." ++ ext) $ do- let pdfname = file ++ ".export.pdf"- exists <- doesFileExist pdfname- when exists $ removeFile pdfname+ when exists $ liftIO $ liftIO $ removeFile target lookupCache :: String -> GititServerPart (Maybe (UTCTime, B.ByteString)) lookupCache file = do@@ -84,4 +74,3 @@ liftIO $ do createDirectoryIfMissing True targetDir B.writeFile target contents- expireCachedPDF target (defaultExtension cfg)
src/Network/Gitit/Config.hs view
@@ -130,7 +130,6 @@ cfWikiTitle <- get cp "DEFAULT" "wiki-title" cfFeedDays <- get cp "DEFAULT" "feed-days" cfFeedRefreshTime <- get cp "DEFAULT" "feed-refresh-time"- cfPDFExport <- get cp "DEFAULT" "pdf-export" cfPandocUserData <- get cp "DEFAULT" "pandoc-user-data" cfXssSanitize <- get cp "DEFAULT" "xss-sanitize" cfRecentActivityDays <- get cp "DEFAULT" "recent-activity-days"@@ -232,7 +231,6 @@ , wikiTitle = cfWikiTitle , feedDays = readNumber "feed-days" cfFeedDays , feedRefreshTime = readNumber "feed-refresh-time" cfFeedRefreshTime- , pdfExport = cfPDFExport , pandocUserData = if null cfPandocUserData then Nothing else Just cfPandocUserData
src/Network/Gitit/ContentTransformer.hs view
@@ -31,7 +31,6 @@ , showRawPage , showFileAsText , showPage- , exportPage , showHighlightedSource , showFile , preview@@ -45,7 +44,6 @@ , textResponse , mimeFileResponse , mimeResponse- , exportPandoc , applyWikiTemplate -- * Content-type transformation combinators , pageToWikiPandoc@@ -79,7 +77,6 @@ import Data.Maybe (isNothing, mapMaybe) import Data.Semigroup ((<>)) import Network.Gitit.Cache (lookupCache, cacheContents)-import Network.Gitit.Export (exportFormats) import Network.Gitit.Framework hiding (uriPath) import Network.Gitit.Layout import Network.Gitit.Page (stringToPage)@@ -186,10 +183,6 @@ showPage :: Handler showPage = runPageTransformer htmlViaPandoc --- | Responds with page exported into selected format.-exportPage :: Handler-exportPage = runPageTransformer exportViaPandoc- -- | Responds with highlighted source code. showHighlightedSource :: Handler showHighlightedSource = runFileTransformer highlightRawSource@@ -220,15 +213,6 @@ rawTextResponse :: ContentTransformer Response rawTextResponse = rawContents >>= textResponse --- | Responds with a wiki page in the format specified--- by the @format@ parameter.-exportViaPandoc :: ContentTransformer Response-exportViaPandoc = rawContents >>=- maybe mzero return >>=- contentsToPage >>=- pageToWikiPandoc >>=- exportPandoc- -- | Responds with a wiki page. Uses the cache when -- possible and caches the rendered page when appropriate. htmlViaPandoc :: ContentTransformer Response@@ -321,17 +305,6 @@ -> m Response mimeResponse c mimeType = return . setContentType mimeType . toResponse $ c---- | Converts Pandoc to response using format specified in parameters.-exportPandoc :: Pandoc -> ContentTransformer Response-exportPandoc doc = do- params <- getParams- page <- getPageName- cfg <- lift getConfig- let format = pFormat params- case lookup format (exportFormats cfg) of- Nothing -> error $ "Unknown export format: " ++ format- Just writer -> lift (writer page doc) -- | Adds the sidebar, page tabs, and other elements of the wiki page -- layout to the raw content.
− src/Network/Gitit/Export.hs
@@ -1,307 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE FlexibleContexts #-}-{--Copyright (C) 2009 John MacFarlane <jgm@berkeley.edu>--This program is free software; you can redistribute it and/or modify-it under the terms of the GNU General Public License as published by-the Free Software Foundation; either version 2 of the License, or-(at your option) any later version.--This program is distributed in the hope that it will be useful,-but WITHOUT ANY WARRANTY; without even the implied warranty of-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-GNU General Public License for more details.--You should have received a copy of the GNU General Public License-along with this program; if not, write to the Free Software-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA--}--{- Functions for exporting wiki pages in various formats.--}--module Network.Gitit.Export ( exportFormats ) where-import Control.Exception (throwIO)-import Text.Pandoc hiding (HTMLMathMethod(..), getDataFileName)-import qualified Text.Pandoc as Pandoc-import Text.Pandoc.PDF (makePDF)-import Text.Pandoc.SelfContained as SelfContained-import qualified Text.Pandoc.UTF8 as UTF8-import qualified Data.Map as M-import Network.Gitit.Server-import Network.Gitit.Framework (pathForPage)-import Network.Gitit.State (getConfig)-import Network.Gitit.Types-import Network.Gitit.Cache (cacheContents, lookupCache)-import Text.DocTemplates as DT-import Control.Monad.Trans (liftIO)-import Control.Monad (unless)-import Text.XHtml (noHtml)-import qualified Data.ByteString as B-import qualified Data.ByteString.Lazy as L-import System.FilePath ((</>), takeDirectory)-import System.Environment (setEnv)-import System.Directory (doesFileExist)-import Text.HTML.SanitizeXSS-import Data.ByteString.Lazy (fromStrict)-import Data.Text (Text)-import qualified Data.Text as T-import Data.Text.Encoding (encodeUtf8)-import Data.List (isPrefixOf)-import Skylighting (styleToCss, pygments)-import System.IO.Temp (withSystemTempDirectory)-import Paths_gitit (getDataFileName)--defaultRespOptions :: WriterOptions-defaultRespOptions = def { writerHighlightStyle = Just pygments }--respondX :: String -> String -> String- -> (WriterOptions -> Pandoc -> PandocIO L.ByteString)- -> WriterOptions -> String -> Pandoc -> Handler-respondX templ mimetype ext fn opts page doc = do- cfg <- getConfig- doc' <- if ext `elem` ["odt","pdf","beamer","epub","docx","rtf"]- then fixURLs page doc- else return doc- doc'' <- liftIO $ runIO $ do- setUserDataDir $ pandocUserData cfg- compiledTemplate <- compileDefaultTemplate (T.pack templ)- fn opts{ writerTemplate = Just compiledTemplate } doc'- either (liftIO . throwIO)- (ok . setContentType mimetype .- (if null ext then id else setFilename (page ++ "." ++ ext)) .- toResponseBS B.empty)- doc''--respondS :: String -> String -> String -> (WriterOptions -> Pandoc -> PandocIO Text)- -> WriterOptions -> String -> Pandoc -> Handler-respondS templ mimetype ext fn =- respondX templ mimetype ext (\o d -> fromStrict . encodeUtf8 <$> fn o d)--respondSlides :: String -> (WriterOptions -> Pandoc -> PandocIO Text) -> String -> Pandoc -> Handler-respondSlides templ fn page doc = do- cfg <- getConfig- let math = case mathMethod cfg of- MathML -> Pandoc.MathML- WebTeX u -> Pandoc.WebTeX $ T.pack u- _ -> Pandoc.PlainMath- let opts' = defaultRespOptions { writerIncremental = True- , writerHTMLMathMethod = math}- -- We sanitize the body only, to protect against XSS attacks.- -- (Sanitizing the whole HTML page would strip out javascript- -- needed for the slides.) We then pass the body into the- -- slide template using the 'body' variable.- Pandoc meta blocks <- fixURLs page doc- docOrError <- liftIO $ runIO $ do- setUserDataDir $ pandocUserData cfg- body' <- writeHtml5String opts' (Pandoc meta blocks) -- just body- let body'' = T.unpack- $ (if xssSanitize cfg then sanitizeBalance else id)- $ body'- let setVariable key val (DT.Context ctx) =- DT.Context $ M.insert (T.pack key) (toVal (T.pack val)) ctx- variables' <- if mathMethod cfg == MathML- then do- s <- readDataFile "MathMLinHTML.js"- return $ setVariable "mathml-script"- (UTF8.toString s) mempty- else return mempty- compiledTemplate <- compileDefaultTemplate (T.pack templ)- dzcore <- if templ == "dzslides"- then do- dztempl <- readDataFile $ "dzslides" </> "template.html"- return $ unlines- $ dropWhile (not . isPrefixOf "<!-- {{{{ dzslides core")- $ lines $ UTF8.toString dztempl- else return ""- let opts'' = opts'{- writerVariables =- setVariable "body" body'' $- setVariable "dzslides-core" dzcore $- setVariable "highlighting-css" pygmentsCss- $ variables'- ,writerTemplate = Just compiledTemplate }- h <- fn opts'' (Pandoc meta [])- makeSelfContained h- either (liftIO . throwIO)- (ok . setContentType "text/html;charset=UTF-8" .- (setFilename (page ++ ".html")) .- toResponseBS B.empty . L.fromStrict . UTF8.fromText)- docOrError--respondLaTeX :: String -> Pandoc -> Handler-respondLaTeX = respondS "latex" "application/x-latex" "tex"- writeLaTeX defaultRespOptions--respondConTeXt :: String -> Pandoc -> Handler-respondConTeXt = respondS "context" "application/x-context" "tex"- writeConTeXt defaultRespOptions---respondRTF :: String -> Pandoc -> Handler-respondRTF = respondX "rtf" "application/rtf" "rtf"- (\o d -> L.fromStrict . UTF8.fromText <$> writeRTF o d) defaultRespOptions--respondRST :: String -> Pandoc -> Handler-respondRST = respondS "rst" "text/plain; charset=utf-8" ""- writeRST defaultRespOptions{writerReferenceLinks = True}--respondMarkdown :: String -> Pandoc -> Handler-respondMarkdown = respondS "markdown" "text/plain; charset=utf-8" ""- writeMarkdown defaultRespOptions{writerReferenceLinks = True}--respondCommonMark :: String -> Pandoc -> Handler-respondCommonMark = respondS "commonmark" "text/plain; charset=utf-8" ""- writeCommonMark defaultRespOptions{writerReferenceLinks = True}--respondPlain :: String -> Pandoc -> Handler-respondPlain = respondS "plain" "text/plain; charset=utf-8" ""- writePlain defaultRespOptions--respondMan :: String -> Pandoc -> Handler-respondMan = respondS "man" "text/plain; charset=utf-8" ""- writeMan defaultRespOptions--respondTexinfo :: String -> Pandoc -> Handler-respondTexinfo = respondS "texinfo" "application/x-texinfo" "texi"- writeTexinfo defaultRespOptions--respondDocbook :: String -> Pandoc -> Handler-respondDocbook = respondS "docbook" "application/docbook+xml" "xml"- writeDocbook5 defaultRespOptions--respondOrg :: String -> Pandoc -> Handler-respondOrg = respondS "org" "text/plain; charset=utf-8" ""- writeOrg defaultRespOptions--respondICML :: String -> Pandoc -> Handler-respondICML = respondX "icml" "application/xml; charset=utf-8" ""- (\o d -> L.fromStrict . UTF8.fromText <$> writeICML o d)- defaultRespOptions--respondTextile :: String -> Pandoc -> Handler-respondTextile = respondS "textile" "text/plain; charset=utf-8" ""- writeTextile defaultRespOptions--respondAsciiDoc :: String -> Pandoc -> Handler-respondAsciiDoc = respondS "asciidoc" "text/plain; charset=utf-8" ""- writeAsciiDoc defaultRespOptions--respondMediaWiki :: String -> Pandoc -> Handler-respondMediaWiki = respondS "mediawiki" "text/plain; charset=utf-8" ""- writeMediaWiki defaultRespOptions--respondODT :: String -> Pandoc -> Handler-respondODT = respondX "opendocument" "application/vnd.oasis.opendocument.text"- "odt" writeODT defaultRespOptions--respondEPUB :: String -> Pandoc -> Handler-respondEPUB = respondX "html" "application/epub+zip" "epub" writeEPUB3- defaultRespOptions--respondDocx :: String -> Pandoc -> Handler-respondDocx = respondX "native"- "application/vnd.openxmlformats-officedocument.wordprocessingml.document"- "docx" writeDocx defaultRespOptions--respondPDF :: Bool -> String -> Pandoc -> Handler-respondPDF useBeamer page old_pndc = fixURLs page old_pndc >>= \pndc -> do- cfg <- getConfig- unless (pdfExport cfg) $ error "PDF export disabled"- let cacheName = pathForPage page (defaultExtension cfg) ++ ".export.pdf"- cached <- if useCache cfg- then lookupCache cacheName- else return Nothing- pdf' <- case cached of- Just (_modtime, bs) -> return $ Right $ L.fromChunks [bs]- Nothing -> liftIO $- withSystemTempDirectory "gitit" $ \tmpdir -> do- let toc = tableOfContents cfg- -- ensure that LaTeX \include commands can't include- -- files outside the working directory, e.g. /etc/passwd:- writeFile (tmpdir </> "texmf.cnf")- "openout_any = p\nopenin_any = p\n"- setEnv "TEXMFCNF" (tmpdir ++ ":")- res <- runIO $ do- setUserDataDir $ pandocUserData cfg- setInputFiles [baseUrl cfg]- let templ = if useBeamer then "beamer" else "latex"- compiledTemplate <- compileDefaultTemplate templ- makePDF "pdflatex" [] (if useBeamer then writeBeamer else writeLaTeX)- defaultRespOptions{ writerTemplate = Just compiledTemplate- , writerTableOfContents = toc } pndc- either (liftIO . throwIO) return res-- case pdf' of- Left logOutput' -> simpleErrorHandler ("PDF creation failed:\n"- ++ UTF8.toStringLazy logOutput')- Right pdfBS -> do- case cached of- Nothing ->- cacheContents cacheName $ B.concat . L.toChunks $ pdfBS- _ -> return ()- ok $ setContentType "application/pdf" $ setFilename (page ++ ".pdf") $- (toResponse noHtml) {rsBody = pdfBS}---- | When we create a PDF or ODT from a Gitit page, we need to fix the URLs of any--- images on the page. Those URLs will often be relative to the staticDir, but the--- PDF or ODT processor only understands paths relative to the working directory.------ Because the working directory will not in general be the root of the gitit instance--- at the time the Pandoc is fed to e.g. pdflatex, this function replaces the URLs of--- images in the staticDir with their correct absolute file path.-fixURLs :: String -> Pandoc -> GititServerPart Pandoc-fixURLs page pndc = do- cfg <- getConfig- defaultStatic <- liftIO $ getDataFileName $ "data" </> "static"-- let static = staticDir cfg- let repoPath = repositoryPath cfg-- let go (Image attr ils (url, title)) = do- fixedURL <- fixURL $ T.unpack url- return $ Image attr ils (T.pack fixedURL, title)- go x = return x-- fixURL ('/':url) = resolve url- fixURL url = resolve $ takeDirectory page </> url-- resolve p = do- sp <- doesFileExist $ static </> p- dsp <- doesFileExist $ defaultStatic </> p- return (if sp then static </> p- else (if dsp then defaultStatic </> p- else repoPath </> p))- liftIO $ bottomUpM go pndc--exportFormats :: Config -> [(String, String -> Pandoc -> Handler)]-exportFormats cfg = if pdfExport cfg- then ("PDF", respondPDF False) :- ("Beamer", respondPDF True) :- rest- else rest- where rest = [ ("LaTeX", respondLaTeX) -- (description, writer)- , ("ConTeXt", respondConTeXt)- , ("Texinfo", respondTexinfo)- , ("reST", respondRST)- , ("Markdown", respondMarkdown)- , ("CommonMark",respondCommonMark)- , ("Plain text",respondPlain)- , ("MediaWiki", respondMediaWiki)- , ("Org-mode", respondOrg)- , ("ICML", respondICML)- , ("Textile", respondTextile)- , ("AsciiDoc", respondAsciiDoc)- , ("Man page", respondMan)- , ("DocBook", respondDocbook)- , ("DZSlides", respondSlides "dzslides" writeDZSlides)- , ("Slidy", respondSlides "slidy" writeSlidy)- , ("S5", respondSlides "s5" writeS5)- , ("EPUB", respondEPUB)- , ("ODT", respondODT)- , ("DOCX", respondDocx)- , ("RTF", respondRTF) ]--pygmentsCss :: String-pygmentsCss = styleToCss pygments
src/Network/Gitit/Handlers.hs view
@@ -42,7 +42,6 @@ , showPage , showPageDiff , showFileDiff- , exportPage , updatePage , editPage , deletePage@@ -61,7 +60,7 @@ import Network.Gitit.Util (orIfNull) import Network.Gitit.Cache (expireCachedFile, lookupCache, cacheContents) import Network.Gitit.ContentTransformer (showRawPage, showFileAsText, showPage,- exportPage, showHighlightedSource, preview, applyPreCommitPlugins)+ showHighlightedSource, preview, applyPreCommitPlugins) import Network.Gitit.Page (readCategories) import qualified Control.Exception as E import System.FilePath
src/Network/Gitit/Layout.hs view
@@ -31,12 +31,11 @@ import Network.Gitit.Framework import Network.Gitit.State import Network.Gitit.Types-import Network.Gitit.Export (exportFormats) import Network.HTTP (urlEncodeVars) import qualified Text.StringTemplate as T import Text.XHtml hiding ( (</>), dir, method, password, rev ) import Text.XHtml.Strict ( stringToHtmlString )-import Data.Maybe (isNothing, isJust, fromJust)+import Data.Maybe (isNothing) defaultPageLayout :: PageLayout defaultPageLayout = PageLayout@@ -111,8 +110,6 @@ maybe id (T.setAttribute "markuphelp") (pgMarkupHelp layout) . setBoolAttr "printable" (pgPrintable layout) . maybe id (T.setAttribute "revision") rev .- T.setAttribute "exportbox"- (renderHtmlFragment $ exportBox base' cfg page rev) . (if null (pgTabs layout) then id else T.setAttribute "tabs" (renderHtmlFragment tabs)) . (\f x xs -> if null xs then x else f xs) (T.setAttribute "messages") id (pgMessages layout) .@@ -121,17 +118,6 @@ setBoolAttr "wikiupload" ( uploadsAllowed cfg) $ templ --exportBox :: String -> Config -> String -> Maybe String -> Html-exportBox base' cfg page rev | not (isSourceCode page) =- gui (base' ++ urlForPage page) ! [identifier "exportbox"] <<- ([ textfield "revision" ! [thestyle "display: none;",- value (fromJust rev)] | isJust rev ] ++- [ select ! [name "format"] <<- map ((\f -> option ! [value f] << f) . fst) (exportFormats cfg)- , primHtmlChar "nbsp"- , submit "export" "Export" ])-exportBox _ _ _ _ = noHtml -- auxiliary functions:
src/Network/Gitit/Types.hs view
@@ -204,8 +204,6 @@ feedDays :: Integer, -- | Number of minutes to cache feeds before refreshing feedRefreshTime :: Integer,- -- | Allow PDF export?- pdfExport :: Bool, -- | Directory to search for pandoc customizations pandocUserData :: Maybe FilePath, -- | Filter HTML through xss-sanitize@@ -467,7 +465,7 @@ return $ case map fst pairs `intersect` commandList of [] -> Command Nothing (c:_) -> Command $ Just c- where commandList = ["update", "cancel", "export"]+ where commandList = ["update", "cancel"] -- | State for a single wiki. data WikiState = WikiState {