From d25656571a4662a4e67b195daed69e77d80c4c2c Mon Sep 17 00:00:00 2001
From: Arlo O'Keeffe <MailToArlo@googlemail.com>
Date: Fri, 13 Jul 2012 15:19:39 -0600
Subject: Set ODT title property

---
 src/Text/Pandoc/Writers/ODT.hs | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/Text/Pandoc/Writers/ODT.hs b/src/Text/Pandoc/Writers/ODT.hs
index f8f22494f..9e3dba98a 100644
--- a/src/Text/Pandoc/Writers/ODT.hs
+++ b/src/Text/Pandoc/Writers/ODT.hs
@@ -36,7 +36,7 @@ import Data.ByteString.Lazy.UTF8 ( fromString )
 import Codec.Archive.Zip
 import Data.Time.Clock.POSIX
 import Paths_pandoc ( getDataFileName )
-import Text.Pandoc.Shared ( WriterOptions(..) )
+import Text.Pandoc.Shared hiding (Element)
 import Text.Pandoc.ImageSize ( readImageSize, sizeInPoints )
 import Text.Pandoc.MIME ( getMimeType )
 import Text.Pandoc.Definition
@@ -53,7 +53,7 @@ writeODT :: Maybe FilePath -- ^ Path specified by --reference-odt
          -> WriterOptions  -- ^ Writer options
          -> Pandoc         -- ^ Document to convert
          -> IO B.ByteString
-writeODT mbRefOdt opts doc = do
+writeODT mbRefOdt opts doc@(Pandoc (Meta title _ _) _) = do
   let datadir = writerUserDataDir opts
   refArchive <- liftM toArchive $
        case mbRefOdt of
@@ -98,7 +98,25 @@ writeODT mbRefOdt opts doc = do
               )
          )
   let archive' = addEntryToArchive manifestEntry archive
-  return $ fromArchive archive'
+  let metaEntry = toEntry "meta.xml" epochtime
+       $ fromString $ show
+       $ text "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+       $$
+        ( inTags True "office:document-meta"
+           [("xmlns:office","urn:oasis:names:tc:opendocument:xmlns:office:1.0")
+           ,("xmlns:xlink","http://www.w3.org/1999/xlink")
+           ,("xmlns:dc","http://purl.org/dc/elements/1.1/")
+           ,("xmlns:meta","urn:oasis:names:tc:opendocument:xmlns:meta:1.0")
+           ,("xmlns:ooo","http://openoffice.org/2004/office")
+           ,("xmlns:grddl","http://www.w3.org/2003/g/data-view#")
+           ,("office:version","1.2")]
+           $ ( inTagsSimple "office:meta"
+                $ ( inTagsSimple "dc:title" (text $ escapeStringForXML (stringify title))
+                  )
+             )
+        )
+  let archive'' = addEntryToArchive metaEntry archive'
+  return $ fromArchive archive''
 
 transformPic :: FilePath -> IORef [Entry] -> Inline -> IO Inline
 transformPic sourceDir entriesRef (Image lab (src,tit)) = do
-- 
cgit v1.2.3