public static ComponentTemplateDocumentData GetComponentTemplateData(ILocalClient client, string id) { ComponentTemplateData item = client.Read(id, new ReadOptions()) as ComponentTemplateData; if (item == null) return null; ComponentTemplateDocumentData componentTemplate = new ComponentTemplateDocumentData(); componentTemplate.Title = item.Title; componentTemplate.TemplateType = item.TemplateType; componentTemplate.LinkedSchemas = item.RelatedSchemas.Select(x => new SchemaDocumentData {Title = x.Title}).ToList(); componentTemplate.MetadataSchema = new SchemaDocumentData {Title = item.MetadataSchema.Title}; componentTemplate.OutputFormat = item.OutputFormat; componentTemplate.Priority = item.Priority; componentTemplate.Dynamic = item.DynamicTemplate.ToLower() == "dynamic"; componentTemplate.InlineEditing = item.IsEditable; foreach (TbbInfo tbbInfo in Functions.GetTbbList(item.Content)) { TbbDocumentData tbbDocument = TBBHelper.GetTBBData(client, tbbInfo.TcmId); componentTemplate.TBBs.Add(tbbDocument); } return componentTemplate; }
public byte[] CreateComponentTemplateDocument(ComponentTemplateDocumentData ctData, string templateLocation) { byte[] binFile = null; byte[] byteArray = File.ReadAllBytes(templateLocation); using (MemoryStream mem = new MemoryStream()) { mem.Write(byteArray, 0, byteArray.Length); using (WordprocessingDocument doc = WordprocessingDocument.Open(mem, true)) { Paragraph header = doc.MainDocumentPart.Document.Body.GetFirstChild<Paragraph>(); header.ChildElements.First(x => x is Run).Append(new Text(String.Format(" \"{0}\"", ctData.Title))); Table table = doc.MainDocumentPart.Document.Body.GetFirstChild<Table>(); RunFonts textFonts = table.GetFirstChild<TableRow>().GetFirstChild<TableCell>().GetFirstChild<Paragraph>(). GetFirstChild<ParagraphProperties>().GetFirstChild<ParagraphMarkRunProperties>(). GetFirstChild<RunFonts>(); string paragraphPropertiesOuterXml = getParagraphPropertiesXml(textFonts); string runPropertiesOuterXml = getRunPropertiesXml(textFonts); table.Elements<TableRow>().ElementAt(0).Elements<TableCell>().ElementAt(1).Elements<Paragraph>().ElementAt(0).Append(new Run(new RunProperties(runPropertiesOuterXml), new Text(ctData.Title))); table.Elements<TableRow>().ElementAt(1).Elements<TableCell>().ElementAt(1).Elements<Paragraph>().ElementAt(0).Append(new Run(new RunProperties(runPropertiesOuterXml), new Text(ctData.TemplateType))); table.Elements<TableRow>().ElementAt(2).Elements<TableCell>().ElementAt(1).Elements<Paragraph>().ElementAt(0).Append(new Run(new RunProperties(runPropertiesOuterXml), new Text(String.Join(", ", ctData.LinkedSchemas.Select(x => x.Title))))); table.Elements<TableRow>().ElementAt(3).Elements<TableCell>().ElementAt(1).Elements<Paragraph>().ElementAt(0).Append(new Run(new RunProperties(runPropertiesOuterXml), new Text(ctData.MetadataSchema.Title))); table.Elements<TableRow>().ElementAt(4).Elements<TableCell>().ElementAt(1).Elements<Paragraph>().ElementAt(0).Append(new Run(new RunProperties(runPropertiesOuterXml), new Text(ctData.OutputFormat))); table.Elements<TableRow>().ElementAt(5).Elements<TableCell>().ElementAt(1).Elements<Paragraph>().ElementAt(0).Append(new Run(new RunProperties(runPropertiesOuterXml), new Text(ctData.Priority.ToString()))); table.Elements<TableRow>().ElementAt(6).Elements<TableCell>().ElementAt(1).Elements<Paragraph>().ElementAt(0).Append(new Run(new RunProperties(runPropertiesOuterXml), new Text(ctData.Dynamic == true ? TEXT_YES : TEXT_NO))); table.Elements<TableRow>().ElementAt(7).Elements<TableCell>().ElementAt(1).Elements<Paragraph>().ElementAt(0).Append(new Run(new RunProperties(runPropertiesOuterXml), new Text(ctData.InlineEditing == true ? TEXT_YES : TEXT_NO))); // Clear empty rows foreach (TableRow row in table.Elements<TableRow>()) { Text text = row.Elements<TableCell>().ElementAt(1).GetFirstChild<Paragraph>().GetFirstChild<Run>().GetFirstChild<Text>(); if (string.IsNullOrEmpty(text.InnerText.Trim())) { table.RemoveChild(row); } } foreach (TbbDocumentData tbbData in ctData.TBBs) { TableRow tr = new TableRow(); TableCell tc1 = new TableCell(); tc1.Append(new Paragraph(new ParagraphProperties(paragraphPropertiesOuterXml), new Run(new RunProperties(runPropertiesOuterXml), new Text(tbbData.Title)))); tr.Append(tc1); TableCell tc2 = new TableCell(); tc2.Append(new Paragraph(new ParagraphProperties(paragraphPropertiesOuterXml), new Run(new RunProperties(runPropertiesOuterXml), new Text(tbbData.TbbType)))); tr.Append(tc2); TableCell tc3 = new TableCell(); //tc3.Append(new Paragraph(new ParagraphProperties(paragraphPropertiesOuterXml), new Run(new RunProperties(runPropertiesOuterXml), new Text(tbbData.FieldType)))); tr.Append(tc3); table.Append(tr); } } binFile = mem.ToArray(); } return binFile; }