@@ -166,7 +166,6 @@ alwaysInheritedPatterns =
166166 , "ppt/theme/theme1.xml"
167167 , "ppt/theme/_rels/theme1.xml.rels"
168168 , "ppt/presProps.xml"
169− , "ppt/viewProps.xml"
170169 , "ppt/tableStyles.xml"
171170 , "ppt/media/image*"
172171 ]
@@ -213,7 +212,6 @@ requiredFiles = [ "docProps/app.xml"
213212 , "ppt/slideMasters/slideMaster1.xml"
214213 , "ppt/slideMasters/_rels/slideMaster1.xml.rels"
215214 , "ppt/theme/theme1.xml"
216− , "ppt/viewProps.xml"
217215 , "ppt/tableStyles.xml"
218216 ]
219217
@@ -231,6 +229,8 @@ presentationToArchiveP p@(Presentation docProps slides) = do
231229 )
232230
233231 newArch' <- foldM copyFileToArchive emptyArchive filePaths
232+ -- we make a modified ppt/viewProps.xml out of the presentation viewProps
233+ viewPropsEntry <- makeViewPropsEntry
234234 -- we make a docProps/core.xml entry out of the presentation docprops
235235 docPropsEntry <- docPropsToEntry docProps
236236 -- we make a docProps/custom.xml entry out of the custom properties
@@ -258,7 +258,7 @@ presentationToArchiveP p@(Presentation docProps slides) = do
258258 spkNotesRelEntries ++
259259 mediaEntries ++
260260 [contentTypesEntry, docPropsEntry, docCustomPropsEntry, relsEntry,
261− presEntry, presRelsEntry]
261+ presEntry, presRelsEntry, viewPropsEntry]
262262
263263makeSlideIdMap :: Presentation -> M.Map SlideId Int
264264makeSlideIdMap (Presentation _ slides) =
@@ -1701,6 +1701,23 @@ docCustomPropsToEntry :: PandocMonad m => DocProps -> P m Entry
17011701docCustomPropsToEntry docProps = docCustomPropsElement docProps >>=
17021702 elemToEntry "docProps/custom.xml"
17031703
1704+-- We read from the template, but we remove the lastView, so it always
1705+-- opens on slide view. Templates will sometimes be open in master
1706+-- view for editing.
1707+viewPropsElement :: PandocMonad m => P m Element
1708+viewPropsElement = do
1709+ refArchive <- asks envRefArchive
1710+ distArchive <- asks envDistArchive
1711+ viewPrElement <- parseXml refArchive distArchive "ppt/viewProps.xml"
1712+ -- remove "lastView" if it exists:
1713+ let notLastView :: Text.XML.Light.Attr -> Bool
1714+ notLastView attr = (qName $ attrKey attr) /= "lastView"
1715+ return $
1716+ viewPrElement {elAttribs = filter notLastView (elAttribs viewPrElement)}
1717+
1718+makeViewPropsEntry :: PandocMonad m => P m Entry
1719+makeViewPropsEntry = viewPropsElement >>= elemToEntry "ppt/viewProps.xml"
1720+
17041721defaultContentTypeToElem :: DefaultContentType -> Element
17051722defaultContentTypeToElem dct =
17061723 mknode "Default"
@@ -1787,9 +1804,11 @@ presentationToContentTypes p@(Presentation _ slides) = do
17871804 (mapMaybe mediaFileContentType $ mediaFps)
17881805
17891806 inheritedOverrides = mapMaybe pathToOverride filePaths
1790− docPropsOverride = mapMaybe pathToOverride ["docProps/core.xml"]
1791− docCustomPropsOverride = mapMaybe pathToOverride ["docProps/custom.xml"]
1792− presOverride = mapMaybe pathToOverride ["ppt/presentation.xml"]
1807+ createdOverrides = mapMaybe pathToOverride [ "docProps/core.xml"
1808+ , "docProps/custom.xml"
1809+ , "ppt/presentation.xml"
1810+ , "ppt/viewProps.xml"
1811+ ]
17931812 relativePaths <- mapM slideToFilePath slides
17941813 let slideOverrides = mapMaybe
17951814 (\fp -> pathToOverride $ "ppt/slides/" ++ fp)
@@ -1797,8 +1816,7 @@ presentationToContentTypes p@(Presentation _ slides) = do
17971816 speakerNotesOverrides <- (mapMaybe pathToOverride) <$> getSpeakerNotesFilePaths
17981817 return $ ContentTypes
17991818 (defaults ++ mediaDefaults)
1800− (inheritedOverrides ++ docPropsOverride ++ docCustomPropsOverride ++
1801− presOverride ++ slideOverrides ++ speakerNotesOverrides)
1819+ (inheritedOverrides ++ createdOverrides ++ slideOverrides ++ speakerNotesOverrides)
18021820
18031821presML :: String
18041822presML = "application/vnd.openxmlformats-officedocument.presentationml"