@@ -351,14 +351,6 @@ getLayout layout = do
351351 layoutpath ++ " missing in reference file"
352352 return root
353353
354−shapeHasName :: NameSpaces -> String -> Element -> Bool
355−shapeHasName ns name element
356− | Just nvSpPr <- findChild (elemName ns "p" "nvSpPr") element
357− , Just cNvPr <- findChild (elemName ns "p" "cNvPr") nvSpPr
358− , Just nm <- findAttr (QName "name" Nothing Nothing) cNvPr =
359− nm == name
360− | otherwise = False
361−
362354shapeHasId :: NameSpaces -> String -> Element -> Bool
363355shapeHasId ns ident element
364356 | Just nvSpPr <- findChild (elemName ns "p" "nvSpPr") element
@@ -374,14 +366,11 @@ getContentShape :: PandocMonad m => NameSpaces -> Element -> P m Element
374366getContentShape ns spTreeElem
375367 | isElem ns "p" "spTree" spTreeElem = do
376368 contentType <- asks envContentType
377− let ident = case contentType of
378− NormalContent -> "3"
379− TwoColumnLeftContent -> "3"
380− TwoColumnRightContent -> "4"
381− case filterChild
382− (\e -> (isElem ns "p" "sp" e) && (shapeHasId ns ident e))
383− spTreeElem
384− of
369+ let idx = case contentType of
370+ NormalContent -> "1"
371+ TwoColumnLeftContent -> "1"
372+ TwoColumnRightContent -> "2"
373+ case getShapeByPlaceHolderIndex ns spTreeElem idx of
385374 Just e -> return e
386375 Nothing -> throwError $
387376 PandocSomeError $
@@ -992,14 +981,6 @@ graphicToElement tableWidth (Tbl tblPr hdrCells rows) = do
992981 ]
993982 ]
994983
995−getShapeByName :: NameSpaces -> Element -> String -> Maybe Element
996−getShapeByName ns spTreeElem name
997− | isElem ns "p" "spTree" spTreeElem =
998− filterChild (\e -> (isElem ns "p" "sp" e) && (shapeHasName ns name e)) spTreeElem
999− | otherwise = Nothing
1000−
1001−
1002−
1003984getShapeByPlaceHolderType :: NameSpaces -> Element -> String -> Maybe Element
1004985getShapeByPlaceHolderType ns spTreeElem phType
1005986 | isElem ns "p" "spTree" spTreeElem =
@@ -1013,18 +994,26 @@ getShapeByPlaceHolderType ns spTreeElem phType
1013994 filterChild findPhType spTreeElem
1014995 | otherwise = Nothing
1015996
1016−-- getShapeById :: NameSpaces -> Element -> String -> Maybe Element
1017−-- getShapeById ns spTreeElem ident
1018−-- | isElem ns "p" "spTree" spTreeElem =
1019−-- filterChild (\e -> (isElem ns "p" "sp" e) && (shapeHasId ns ident e)) spTreeElem
1020−-- | otherwise = Nothing
997+getShapeByPlaceHolderIndex :: NameSpaces -> Element -> String -> Maybe Element
998+getShapeByPlaceHolderIndex ns spTreeElem phIdx
999+ | isElem ns "p" "spTree" spTreeElem =
1000+ let findPhType element = isElem ns "p" "sp" element &&
1001+ Just phIdx == (Just element >>=
1002+ findChild (elemName ns "p" "nvSpPr") >>=
1003+ findChild (elemName ns "p" "nvPr") >>=
1004+ findChild (elemName ns "p" "ph") >>=
1005+ findAttr (QName "idx" Nothing Nothing))
1006+ in
1007+ filterChild findPhType spTreeElem
1008+ | otherwise = Nothing
1009+
10211010
10221011nonBodyTextToElement :: PandocMonad m => Element -> String -> [ParaElem] -> P m Element
1023−nonBodyTextToElement layout shapeName paraElements
1012+nonBodyTextToElement layout phType paraElements
10241013 | ns <- elemToNameSpaces layout
10251014 , Just cSld <- findChild (elemName ns "p" "cSld") layout
10261015 , Just spTree <- findChild (elemName ns "p" "spTree") cSld
1027− , Just sp <- getShapeByName ns spTree shapeName = do
1016+ , Just sp <- getShapeByPlaceHolderType ns spTree phType = do
10281017 let hdrPara = Paragraph def paraElements
10291018 element <- paragraphToElement hdrPara
10301019 let txBody = mknode "p:txBody" [] $
@@ -1039,7 +1028,7 @@ contentToElement layout hdrShape shapes
10391028 | ns <- elemToNameSpaces layout
10401029 , Just cSld <- findChild (elemName ns "p" "cSld") layout
10411030 , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do
1042− element <- nonBodyTextToElement layout "Title 1" hdrShape
1031+ element <- nonBodyTextToElement layout "title" hdrShape
10431032 let hdrShapeElements = if null hdrShape
10441033 then []
10451034 else [element]
@@ -1057,7 +1046,7 @@ twoColumnToElement layout hdrShape shapesL shapesR
10571046 | ns <- elemToNameSpaces layout
10581047 , Just cSld <- findChild (elemName ns "p" "cSld") layout
10591048 , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do
1060− element <- nonBodyTextToElement layout "Title 1" hdrShape
1049+ element <- nonBodyTextToElement layout "title" hdrShape
10611050 let hdrShapeElements = if null hdrShape
10621051 then []
10631052 else [element]
@@ -1081,7 +1070,7 @@ titleToElement layout titleElems
10811070 | ns <- elemToNameSpaces layout
10821071 , Just cSld <- findChild (elemName ns "p" "cSld") layout
10831072 , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do
1084− element <- nonBodyTextToElement layout "Title 1" titleElems
1073+ element <- nonBodyTextToElement layout "title" titleElems
10851074 let titleShapeElements = if null titleElems
10861075 then []
10871076 else [element]
@@ -1095,15 +1084,15 @@ metadataToElement layout titleElems subtitleElems authorsElems dateElems
10951084 , Just spTree <- findChild (elemName ns "p" "spTree") cSld = do
10961085 titleShapeElements <- if null titleElems
10971086 then return []
1098− else sequence [nonBodyTextToElement layout "Title 1" titleElems]
1087+ else sequence [nonBodyTextToElement layout "ctrTitle" titleElems]
10991088 let combinedAuthorElems = intercalate [Break] authorsElems
11001089 subtitleAndAuthorElems = intercalate [Break, Break] [subtitleElems, combinedAuthorElems]
11011090 subtitleShapeElements <- if null subtitleAndAuthorElems
11021091 then return []
1103− else sequence [nonBodyTextToElement layout "Subtitle 2" subtitleAndAuthorElems]
1092+ else sequence [nonBodyTextToElement layout "subTitle" subtitleAndAuthorElems]
11041093 dateShapeElements <- if null dateElems
11051094 then return []
1106− else sequence [nonBodyTextToElement layout "Date Placeholder 3" dateElems]
1095+ else sequence [nonBodyTextToElement layout "dt" dateElems]
11071096 return $ replaceNamedChildren ns "p" "sp"
11081097 (titleShapeElements ++ subtitleShapeElements ++ dateShapeElements)
11091098 spTree