protected override void TransformPage(Dynamic.Page page) { Page tcmPage = this.GetTcmPage(); StructureGroup tcmSG = (StructureGroup)tcmPage.OrganizationalItem; String mergeActionStr = Package.GetValue("MergeAction"); Dynamic.MergeAction mergeAction; if (string.IsNullOrEmpty(mergeActionStr)) { mergeAction = defaultMergeAction; } else { mergeAction = (Dynamic.MergeAction)Enum.Parse(typeof(Dynamic.MergeAction), mergeActionStr); } while (tcmSG.OrganizationalItem != null) { if (tcmSG.MetadataSchema != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmSG.Metadata, tcmSG.MetadataSchema); // change Builder.FieldsBuilder.AddFields(page.Metadata, tcmFields, 1, false, mergeAction, manager); } tcmSG = (StructureGroup)tcmSG.OrganizationalItem; } }
protected override void TransformComponent(Dynamic.Component component) { TCM.Component tcmComponent = this.GetTcmComponent(); TCM.Folder tcmFolder = (TCM.Folder)tcmComponent.OrganizationalItem; String mergeActionStr = Package.GetValue("MergeAction"); Dynamic.MergeAction mergeAction; if (string.IsNullOrEmpty(mergeActionStr)) { mergeAction = defaultMergeAction; } else { mergeAction = (Dynamic.MergeAction)Enum.Parse(typeof(Dynamic.MergeAction), mergeActionStr); } while (tcmFolder.OrganizationalItem != null) { if (tcmFolder.MetadataSchema != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmFolder.Metadata, tcmFolder.MetadataSchema); // change Builder.FieldsBuilder.AddFields(component.MetadataFields, tcmFields, 1, false, mergeAction, manager); } tcmFolder = (TCM.Folder)tcmFolder.OrganizationalItem; } }
public static Dynamic.PageTemplate BuildPageTemplate(TComm.PageTemplate tcmPageTemplate, BuildManager manager) { Dynamic.PageTemplate pt = new Dynamic.PageTemplate(); pt.Title = tcmPageTemplate.Title; pt.Id = tcmPageTemplate.Id.ToString(); pt.FileExtension = tcmPageTemplate.FileExtension; pt.RevisionDate = tcmPageTemplate.RevisionDate; if (tcmPageTemplate.Metadata != null && tcmPageTemplate.MetadataSchema != null) { pt.MetadataFields = new Dynamic.FieldSet(); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmPageTemplate.Metadata, tcmPageTemplate.MetadataSchema); pt.MetadataFields = manager.BuildFields(tcmMetadataFields); } else { pt.MetadataFields = null; } if (!manager.BuildProperties.OmitContextPublications) pt.Publication = manager.BuildPublication(tcmPageTemplate.ContextRepository); if (!manager.BuildProperties.OmitOwningPublications) pt.OwningPublication = manager.BuildPublication(tcmPageTemplate.OwningRepository); if (!manager.BuildProperties.OmitFolders) pt.Folder = manager.BuildOrganizationalItem((TCM.Folder)tcmPageTemplate.OrganizationalItem); return pt; }
public static Dynamic.Page BuildPage(TCM.Page tcmPage, Engine engine, BuildManager manager, int linkLevels, bool resolveWidthAndHeight) { Dynamic.Page p = new Dynamic.Page(); p.Title = tcmPage.Title; p.Id = tcmPage.Id.ToString(); p.Filename = tcmPage.FileName; p.PageTemplate = manager.BuildPageTemplate(tcmPage.PageTemplate); p.Schema = manager.BuildSchema(tcmPage.MetadataSchema); p.Metadata = new Dynamic.SerializableDictionary <string, Dynamic.Field>(); if (linkLevels > 0) { try { if (tcmPage.Metadata != null) { var tcmMetadataFields = new Tridion.ContentManager.ContentManagement.Fields.ItemFields(tcmPage.Metadata, tcmPage.MetadataSchema); p.Metadata = manager.BuildFields(tcmMetadataFields, linkLevels, resolveWidthAndHeight); } } catch (ItemDoesNotExistException) { // fail silently if there is no metadata schema } } p.ComponentPresentations = new List <Dynamic.ComponentPresentation>(); foreach (TCM.ComponentPresentation cp in tcmPage.ComponentPresentations) { Dynamic.ComponentPresentation dynCp = manager.BuildComponentPresentation(cp, engine, linkLevels - 1, resolveWidthAndHeight); p.ComponentPresentations.Add(dynCp); } p.StructureGroup = manager.BuildOrganizationalItem((TCM.StructureGroup)tcmPage.OrganizationalItem); p.Publication = manager.BuildPublication(tcmPage.ContextRepository); p.Categories = manager.BuildCategories(tcmPage); return(p); }
protected override void TransformComponent(Dynamic.Component component) { TCM.Component tcmComponent = this.GetTcmComponent(); TCM.Folder tcmFolder = (TCM.Folder)tcmComponent.OrganizationalItem; String mergeActionStr = Package.GetValue("MergeAction"); Dynamic.MergeAction mergeAction; if (string.IsNullOrEmpty(mergeActionStr)) { mergeAction = defaultMergeAction; } else { mergeAction = (Dynamic.MergeAction)Enum.Parse(typeof(Dynamic.MergeAction), mergeActionStr); } while (tcmFolder.OrganizationalItem != null) { if (tcmFolder.MetadataSchema != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmFolder.Metadata, tcmFolder.MetadataSchema); // change Builder.FieldsBuilder.AddFields(component.MetadataFields, tcmFields, 1, false, mergeAction, manager); } tcmFolder = (TCM.Folder)tcmFolder.OrganizationalItem; } }
public static Dynamic.Page BuildPage(TCM.Page tcmPage, Engine engine, BuildManager manager, int linkLevels, bool resolveWidthAndHeight) { Dynamic.Page p = new Dynamic.Page(); p.Title = tcmPage.Title; p.Id = tcmPage.Id.ToString(); p.Filename = tcmPage.FileName; p.PageTemplate = manager.BuildPageTemplate(tcmPage.PageTemplate); p.Schema = manager.BuildSchema(tcmPage.MetadataSchema); p.Metadata = new Dynamic.SerializableDictionary<string, Dynamic.Field>(); if (linkLevels > 0) { try { if (tcmPage.Metadata != null) { var tcmMetadataFields = new Tridion.ContentManager.ContentManagement.Fields.ItemFields(tcmPage.Metadata, tcmPage.MetadataSchema); p.Metadata = manager.BuildFields(tcmMetadataFields, linkLevels, resolveWidthAndHeight); } } catch (ItemDoesNotExistException) { // fail silently if there is no metadata schema } } p.ComponentPresentations = new List<Dynamic.ComponentPresentation>(); foreach (TCM.ComponentPresentation cp in tcmPage.ComponentPresentations) { Dynamic.ComponentPresentation dynCp = manager.BuildComponentPresentation(cp, engine, linkLevels - 1, resolveWidthAndHeight); p.ComponentPresentations.Add(dynCp); } p.StructureGroup = manager.BuildOrganizationalItem((TCM.StructureGroup)tcmPage.OrganizationalItem); p.Publication = manager.BuildPublication(tcmPage.ContextRepository); p.Categories = manager.BuildCategories(tcmPage); return p; }
protected override void TransformPage(Dynamic.Page page) { Page tcmPage = this.GetTcmPage(); StructureGroup tcmSG = (StructureGroup)tcmPage.OrganizationalItem; String mergeActionStr = Package.GetValue("MergeAction"); Dynamic.MergeAction mergeAction; if (string.IsNullOrEmpty(mergeActionStr)) { mergeAction = defaultMergeAction; } else { mergeAction = (Dynamic.MergeAction)Enum.Parse(typeof(Dynamic.MergeAction), mergeActionStr); } while (tcmSG.OrganizationalItem != null) { if (tcmSG.MetadataSchema != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmSG.Metadata, tcmSG.MetadataSchema); // change Builder.FieldsBuilder.AddFields(page.Metadata, tcmFields, 1, false, mergeAction, manager); } tcmSG = (StructureGroup)tcmSG.OrganizationalItem; } }
public static Dynamic.Fields BuildFields(TCM.Fields.ItemFields tcmItemFields, int linkLevels, bool resolveWidthAndHeight, BuildManager manager) { var fields = new Fields(); AddFields(fields, tcmItemFields, linkLevels, resolveWidthAndHeight, Dynamic.MergeAction.Replace, manager); return(fields); }
public static Dynamic.ComponentTemplate BuildComponentTemplate(TComm.ComponentTemplate tcmComponentTemplate, BuildManager manager) { Dynamic.ComponentTemplate ct = new Dynamic.ComponentTemplate(); ct.Title = tcmComponentTemplate.Title; ct.Id = tcmComponentTemplate.Id.ToString(); ct.OutputFormat = tcmComponentTemplate.OutputFormat; ct.RevisionDate = tcmComponentTemplate.RevisionDate; if (tcmComponentTemplate.Metadata != null && tcmComponentTemplate.MetadataSchema != null) { ct.MetadataFields = new Dynamic.FieldSet(); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponentTemplate.Metadata, tcmComponentTemplate.MetadataSchema); ct.MetadataFields = manager.BuildFields(tcmMetadataFields); } else { ct.MetadataFields = null; } if (!manager.BuildProperties.OmitContextPublications) ct.Publication = manager.BuildPublication(tcmComponentTemplate.ContextRepository); if (!manager.BuildProperties.OmitOwningPublications) ct.OwningPublication = manager.BuildPublication(tcmComponentTemplate.OwningRepository); if (!manager.BuildProperties.OmitFolders) ct.Folder = manager.BuildOrganizationalItem((TCM.Folder)tcmComponentTemplate.OrganizationalItem); return ct; }
public static Dynamic.Page BuildPage(TCM.Page tcmPage, Engine engine, BuildManager manager, int linkLevels, bool resolveWidthAndHeight, bool publishEmptyFields) { Dynamic.Page p = new Dynamic.Page { Title = tcmPage.Title, Id = tcmPage.Id.ToString(), Filename = tcmPage.FileName, PageTemplate = manager.BuildPageTemplate(tcmPage.PageTemplate), Schema = manager.BuildSchema(tcmPage.MetadataSchema), Version = tcmPage.Version, RevisionDate = tcmPage.RevisionDate, MetadataFields = new Dynamic.FieldSet() }; if (linkLevels > 0) { try { if (tcmPage.Metadata != null && tcmPage.MetadataSchema != null) { var tcmMetadataFields = new Tridion.ContentManager.ContentManagement.Fields.ItemFields(tcmPage.Metadata, tcmPage.MetadataSchema); p.MetadataFields = manager.BuildFields(tcmMetadataFields); } } catch (Exception) { // fail silently if there is no metadata schema } } p.ComponentPresentations = new List <Dynamic.ComponentPresentation>(); foreach (TCM.ComponentPresentation cp in tcmPage.ComponentPresentations) { Dynamic.ComponentPresentation dynCp = manager.BuildComponentPresentation(cp, engine, linkLevels - 1, resolveWidthAndHeight); p.ComponentPresentations.Add(dynCp); } p.StructureGroup = manager.BuildOrganizationalItem((TCM.StructureGroup)tcmPage.OrganizationalItem); if (!manager.BuildProperties.OmitContextPublications) { p.Publication = manager.BuildPublication(tcmPage.ContextRepository); } if (!manager.BuildProperties.OmitOwningPublications) { p.OwningPublication = manager.BuildPublication(tcmPage.OwningRepository); } if (!manager.BuildProperties.OmitCategories) { p.Categories = manager.BuildCategories(tcmPage); } manager.AddXpathToFields(p.MetadataFields, "Metadata"); return(p); }
public static Dynamic.Page BuildPage(TCM.Page tcmPage, Engine engine, BuildManager manager, int linkLevels, bool resolveWidthAndHeight,bool publishEmptyFields) { Dynamic.Page p = new Dynamic.Page { Title = tcmPage.Title, Id = tcmPage.Id.ToString(), Filename = tcmPage.FileName, PageTemplate = manager.BuildPageTemplate(tcmPage.PageTemplate), Schema = manager.BuildSchema(tcmPage.MetadataSchema), Version = tcmPage.Version, RevisionDate = tcmPage.RevisionDate, MetadataFields = new Dynamic.FieldSet() }; if (linkLevels > 0) { try { if (tcmPage.Metadata != null && tcmPage.MetadataSchema != null) { var tcmMetadataFields = new Tridion.ContentManager.ContentManagement.Fields.ItemFields(tcmPage.Metadata, tcmPage.MetadataSchema); p.MetadataFields = manager.BuildFields(tcmMetadataFields); } } catch (Exception) { // fail silently if there is no metadata schema } } p.ComponentPresentations = new List<Dynamic.ComponentPresentation>(); foreach (TCM.ComponentPresentation cp in tcmPage.ComponentPresentations) { Dynamic.ComponentPresentation dynCp = manager.BuildComponentPresentation(cp, engine, linkLevels - 1, resolveWidthAndHeight); p.ComponentPresentations.Add(dynCp); } p.StructureGroup = manager.BuildOrganizationalItem((TCM.StructureGroup)tcmPage.OrganizationalItem); if (!manager.BuildProperties.OmitContextPublications) { p.Publication = manager.BuildPublication(tcmPage.ContextRepository); } if (!manager.BuildProperties.OmitOwningPublications) { p.OwningPublication = manager.BuildPublication(tcmPage.OwningRepository); } if (!manager.BuildProperties.OmitCategories) { p.Categories = manager.BuildCategories(tcmPage); } manager.AddXpathToFields(p.MetadataFields, "Metadata"); return p; }
protected override void TransformComponent(Dynamic.Component component) { TCM.Component tcmComponent = this.GetTcmComponent(); TCM.Folder tcmFolder = (TCM.Folder)tcmComponent.OrganizationalItem; while (tcmFolder.OrganizationalItem != null) { if (tcmFolder.MetadataSchema != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmFolder.Metadata, tcmFolder.MetadataSchema); FieldsBuilder.AddFields(component.MetadataFields, tcmFields, Manager); } tcmFolder = (TCM.Folder)tcmFolder.OrganizationalItem; } }
protected override void TransformComponent(Dynamic.Component component) { TCM.Component tcmComponent = this.GetTcmComponent(); TCM.Folder tcmFolder = (TCM.Folder)tcmComponent.OrganizationalItem; while (tcmFolder.OrganizationalItem != null) { if (tcmFolder.MetadataSchema != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmFolder.Metadata, tcmFolder.MetadataSchema); FieldsBuilder.AddFields(component.MetadataFields, tcmFields, Manager); } tcmFolder = (TCM.Folder)tcmFolder.OrganizationalItem; } }
protected override void TransformPage(Dynamic.Page page) { GeneralUtils.TimedLog("start TransformPage with id " + page.Id); Page tcmPage = this.GetTcmPage(); StructureGroup tcmSG = (StructureGroup)tcmPage.OrganizationalItem; String mergeActionStr = Package.GetValue("MergeAction"); Dynamic.MergeAction mergeAction; if (!string.IsNullOrEmpty(mergeActionStr)) { try { mergeAction = (Dynamic.MergeAction)Enum.Parse(typeof(Dynamic.MergeAction), mergeActionStr); } catch { GeneralUtils.TimedLog("unexpected merge action " + mergeActionStr + ", using default"); mergeAction = defaultMergeAction; } } else { GeneralUtils.TimedLog("no merge action specified, using default"); mergeAction = defaultMergeAction; } GeneralUtils.TimedLog("using merge action " + mergeAction.ToString()); while (tcmSG != null) { GeneralUtils.TimedLog("found structure group with id " + tcmSG.Id); if (tcmSG.MetadataSchema != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmSG.Metadata, tcmSG.MetadataSchema); GeneralUtils.TimedLog(string.Format("about to merge {0} fields on structure group with {1} fields on page ", tcmFields.Count, page.MetadataFields.Count)); // change FieldsBuilder.AddFields(page.MetadataFields, tcmFields, LinkLevels, false, false, mergeAction, Manager); GeneralUtils.TimedLog(string.Format("finished merging, we now have {0} fields on structure group and {1} fields on page ", tcmFields.Count, page.MetadataFields.Count)); } tcmSG = tcmSG.OrganizationalItem as StructureGroup; } }
protected override void TransformPage(Dynamic.Page page) { GeneralUtils.TimedLog("start TransformPage with id " + page.Id); Page tcmPage = this.GetTcmPage(); StructureGroup tcmSG = (StructureGroup)tcmPage.OrganizationalItem; String mergeActionStr = Package.GetValue("MergeAction"); Dynamic.MergeAction mergeAction; if (! string.IsNullOrEmpty(mergeActionStr)) { try { mergeAction = (Dynamic.MergeAction)Enum.Parse(typeof(Dynamic.MergeAction), mergeActionStr); } catch { GeneralUtils.TimedLog("unexpected merge action " + mergeActionStr + ", using default"); mergeAction = defaultMergeAction; } } else { GeneralUtils.TimedLog("no merge action specified, using default"); mergeAction = defaultMergeAction; } GeneralUtils.TimedLog("using merge action " + mergeAction.ToString()); while (tcmSG != null) { GeneralUtils.TimedLog("found structure group with id " + tcmSG.Id); if (tcmSG.MetadataSchema != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmSG.Metadata, tcmSG.MetadataSchema); GeneralUtils.TimedLog(string.Format("about to merge {0} fields on structure group with {1} fields on page ", tcmFields.Count, page.MetadataFields.Count)); // change FieldsBuilder.AddFields(page.MetadataFields, tcmFields, LinkLevels, false,false, mergeAction, Manager); GeneralUtils.TimedLog(string.Format("finished merging, we now have {0} fields on structure group and {1} fields on page ", tcmFields.Count, page.MetadataFields.Count)); } tcmSG = tcmSG.OrganizationalItem as StructureGroup; } }
public static Dynamic.Region BuildRegion(TCM.Regions.IRegion tcmRegion, Engine engine, BuildManager manager, int linkLevels, bool resolveWidthAndHeight, bool publishEmptyFields) { Dynamic.Region r = new Dynamic.Region { Name = tcmRegion.RegionName, Schema = manager.BuildSchema(tcmRegion.RegionSchema), MetadataFields = new Dynamic.FieldSet() }; if (linkLevels > 0) { try { if (tcmRegion.Metadata != null && tcmRegion.RegionSchema != null) { var tcmMetadataFields = new Tridion.ContentManager.ContentManagement.Fields.ItemFields(tcmRegion.Metadata, tcmRegion.RegionSchema); r.MetadataFields = manager.BuildFields(tcmMetadataFields); } } catch (Exception) { // fail silently if there is no metadata schema } } r.ComponentPresentations = new List <Dynamic.ComponentPresentation>(); foreach (TCM.ComponentPresentation cp in tcmRegion.ComponentPresentations) { Dynamic.ComponentPresentation dynCp = manager.BuildComponentPresentation(cp, engine, linkLevels - 1, resolveWidthAndHeight); r.ComponentPresentations.Add(dynCp); } manager.AddXpathToFields(r.MetadataFields, "Metadata"); // adding nested regions r.Regions = new List <Dynamic.Region>(); foreach (TCM.Regions.IRegion nestedTcmRegion in tcmRegion.Regions) { Dynamic.Region nestedRegion = manager.BuildRegion(nestedTcmRegion, engine); r.Regions.Add(nestedRegion); } return(r); }
protected override void TransformPage(Dynamic.Page page) { GeneralUtils.TimedLog("start TransformPage with id " + page.Id); Page tcmPage = this.GetTcmPage(); StructureGroup tcmSG = (StructureGroup)tcmPage.OrganizationalItem; String mergeActionStr = Package.GetValue("MergeAction"); while (tcmSG != null) { if (tcmSG.MetadataSchema != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmSG.Metadata, tcmSG.MetadataSchema); FieldsBuilder.AddFields(page.MetadataFields, tcmFields, Manager); } tcmSG = tcmSG.OrganizationalItem as StructureGroup; } GeneralUtils.TimedLog("finished TransformPage"); }
public static Dynamic.ComponentTemplate BuildComponentTemplate(TComm.ComponentTemplate tcmComponentTemplate, BuildManager manager) { Dynamic.ComponentTemplate ct = new Dynamic.ComponentTemplate(); ct.Title = tcmComponentTemplate.Title; ct.Id = tcmComponentTemplate.Id.ToString(); ct.OutputFormat = tcmComponentTemplate.OutputFormat; if (tcmComponentTemplate.Metadata != null && tcmComponentTemplate.MetadataSchema != null) { ct.MetadataFields = new Dynamic.SerializableDictionary <string, Dynamic.Field>(); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponentTemplate.Metadata, tcmComponentTemplate.MetadataSchema); ct.MetadataFields = manager.BuildFields(tcmMetadataFields, 0, false); // never follow links to comopnents from component templates, never resolve binary widht/height } else { ct.MetadataFields = null; } ct.Folder = manager.BuildOrganizationalItem((TCM.Folder)tcmComponentTemplate.OrganizationalItem); ct.Publication = manager.BuildPublication(tcmComponentTemplate.ContextRepository); return(ct); }
protected override void TransformPage(Dynamic.Page page) { GeneralUtils.TimedLog("start TransformPage with id " + page.Id); Page tcmPage = this.GetTcmPage(); StructureGroup tcmSG = (StructureGroup)tcmPage.OrganizationalItem; String mergeActionStr = Package.GetValue("MergeAction"); while (tcmSG != null) { if (tcmSG.MetadataSchema != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmSG.Metadata, tcmSG.MetadataSchema); FieldsBuilder.AddFields(page.MetadataFields, tcmFields, Manager); } tcmSG = tcmSG.OrganizationalItem as StructureGroup; } GeneralUtils.TimedLog("finished TransformPage"); }
public static Dynamic.ComponentTemplate BuildComponentTemplate(TComm.ComponentTemplate tcmComponentTemplate, BuildManager manager) { Dynamic.ComponentTemplate ct = new Dynamic.ComponentTemplate(); ct.Title = tcmComponentTemplate.Title; ct.Id = tcmComponentTemplate.Id.ToString(); ct.OutputFormat = tcmComponentTemplate.OutputFormat; if (tcmComponentTemplate.Metadata != null && tcmComponentTemplate.MetadataSchema != null) { ct.MetadataFields = new Dynamic.SerializableDictionary<string, Dynamic.Field>(); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponentTemplate.Metadata, tcmComponentTemplate.MetadataSchema); ct.MetadataFields = manager.BuildFields(tcmMetadataFields, 0, false); // never follow links to comopnents from component templates, never resolve binary widht/height } else { ct.MetadataFields = null; } ct.Folder = manager.BuildOrganizationalItem((TCM.Folder)tcmComponentTemplate.OrganizationalItem); ct.Publication = manager.BuildPublication(tcmComponentTemplate.ContextRepository); return ct; }
public static Dynamic.Keyword BuildKeyword(Keyword keyword, int currentLinkLevel, BuildManager buildManager) { Dynamic.Keyword dk = new Dynamic.Keyword(); dk.Id = keyword.Id; dk.Title = keyword.Title; dk.Path = FindKeywordPath(keyword); dk.Description = keyword.Description; dk.Key = keyword.Key; dk.TaxonomyId = keyword.OrganizationalItem.Id; if (currentLinkLevel > 0) { if (keyword.Metadata != null && keyword.MetadataSchema != null) { var tcmMetadataFields = new Tridion.ContentManager.ContentManagement.Fields.ItemFields(keyword.Metadata, keyword.MetadataSchema); dk.MetadataFields = buildManager.BuildFields(tcmMetadataFields, currentLinkLevel); } } return(dk); }
public static Dynamic.PageTemplate BuildPageTemplate(TComm.PageTemplate tcmPageTemplate, BuildManager manager) { Dynamic.PageTemplate pt = new Dynamic.PageTemplate(); pt.Title = tcmPageTemplate.Title; pt.Id = tcmPageTemplate.Id.ToString(); pt.FileExtension = tcmPageTemplate.FileExtension; if (tcmPageTemplate.Metadata != null && tcmPageTemplate.MetadataSchema != null) { pt.MetadataFields = new Dynamic.SerializableDictionary<string, Dynamic.Field>(); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmPageTemplate.Metadata, tcmPageTemplate.MetadataSchema); pt.MetadataFields = manager.BuildFields(tcmMetadataFields, 0, false); // never follow links to comopnents from page templates, never resolve binary widht/height } else { pt.MetadataFields = null; } pt.Publication = manager.BuildPublication(tcmPageTemplate.ContextRepository); pt.Folder = manager.BuildOrganizationalItem((TCM.Folder)tcmPageTemplate.OrganizationalItem); return pt; }
public static Dynamic.PageTemplate BuildPageTemplate(TComm.PageTemplate tcmPageTemplate, BuildManager manager) { Dynamic.PageTemplate pt = new Dynamic.PageTemplate(); pt.Title = tcmPageTemplate.Title; pt.Id = tcmPageTemplate.Id.ToString(); pt.FileExtension = tcmPageTemplate.FileExtension; if (tcmPageTemplate.Metadata != null && tcmPageTemplate.MetadataSchema != null) { pt.MetadataFields = new Dynamic.SerializableDictionary <string, Dynamic.Field>(); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmPageTemplate.Metadata, tcmPageTemplate.MetadataSchema); pt.MetadataFields = manager.BuildFields(tcmMetadataFields, 0, false); // never follow links to comopnents from page templates, never resolve binary widht/height } else { pt.MetadataFields = null; } pt.Publication = manager.BuildPublication(tcmPageTemplate.ContextRepository); pt.Folder = manager.BuildOrganizationalItem((TCM.Folder)tcmPageTemplate.OrganizationalItem); return(pt); }
public static Dynamic.ComponentTemplate BuildComponentTemplate(TComm.ComponentTemplate tcmComponentTemplate, BuildManager manager) { Dynamic.ComponentTemplate ct = new Dynamic.ComponentTemplate(); ct.Title = tcmComponentTemplate.Title; ct.Id = tcmComponentTemplate.Id.ToString(); ct.OutputFormat = tcmComponentTemplate.OutputFormat; ct.RevisionDate = tcmComponentTemplate.RevisionDate; if (tcmComponentTemplate.Metadata != null && tcmComponentTemplate.MetadataSchema != null) { ct.MetadataFields = new Dynamic.FieldSet(); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponentTemplate.Metadata, tcmComponentTemplate.MetadataSchema); ct.MetadataFields = manager.BuildFields(tcmMetadataFields); } else { ct.MetadataFields = null; } if (!manager.BuildProperties.OmitContextPublications) { ct.Publication = manager.BuildPublication(tcmComponentTemplate.ContextRepository); } if (!manager.BuildProperties.OmitOwningPublications) { ct.OwningPublication = manager.BuildPublication(tcmComponentTemplate.OwningRepository); } if (!manager.BuildProperties.OmitFolders) { ct.Folder = manager.BuildOrganizationalItem((TCM.Folder)tcmComponentTemplate.OrganizationalItem); } return(ct); }
public static Dynamic.Component BuildComponent(TCM.Component tcmComponent, int currentLinkLevel, BuildManager manager) { log.Debug(string.Format("start BuildComponent with component {0} ({1}) and link level {2}", tcmComponent.Title, tcmComponent.Id, currentLinkLevel)); Dynamic.Component c = new Dynamic.Component(); c.Title = tcmComponent.Title; c.Id = tcmComponent.Id.ToString(); c.RevisionDate = tcmComponent.RevisionDate; c.Version = tcmComponent.Version; c.Schema = manager.BuildSchema(tcmComponent.Schema); c.ComponentType = (ComponentType)Enum.Parse(typeof(ComponentType), tcmComponent.ComponentType.ToString()); if (tcmComponent.ComponentType.Equals(TCM.ComponentType.Multimedia)) { Multimedia multimedia = new Multimedia(); multimedia.MimeType = tcmComponent.BinaryContent.MultimediaType.MimeType; multimedia.Size = tcmComponent.BinaryContent.Size; multimedia.FileName = tcmComponent.BinaryContent.Filename; string extension = System.IO.Path.GetExtension(multimedia.FileName); if (string.IsNullOrEmpty(extension)) { multimedia.FileExtension = ""; } else { // remove leading dot from extension because microsoft returns this as ".gif" multimedia.FileExtension = extension.Substring(1); } if (manager.BuildProperties.ResolveWidthAndHeight) { try { MemoryStream memstream = new MemoryStream(); tcmComponent.BinaryContent.WriteToStream(memstream); Image image = Image.FromStream(memstream); memstream.Close(); multimedia.Width = image.Size.Width; multimedia.Height = image.Size.Height; } catch (Exception e) { log.Warning(string.Format("error retrieving width and height of image: is component with ID {0} really an image? Error message: {1}", c.Id, e.Message)); multimedia.Width = 0; multimedia.Height = 0; } } else { multimedia.Width = 0; multimedia.Height = 0; } c.Multimedia = multimedia; c.Multimedia.Url = manager.PublishMultimediaComponent(c); } else { c.Multimedia = null; } c.Fields = new Dynamic.FieldSet(); c.MetadataFields = new Dynamic.FieldSet(); if (currentLinkLevel > 0) { if (tcmComponent.Content != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmComponent.Content, tcmComponent.Schema); c.Fields = manager.BuildFields(tcmFields, currentLinkLevel); } if (tcmComponent.Metadata != null) { TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponent.Metadata, tcmComponent.MetadataSchema); c.MetadataFields = manager.BuildFields(tcmMetadataFields, currentLinkLevel); } } if (!manager.BuildProperties.OmitContextPublications) { c.Publication = manager.BuildPublication(tcmComponent.ContextRepository); } if (!manager.BuildProperties.OmitOwningPublications) { c.OwningPublication = manager.BuildPublication(tcmComponent.OwningRepository); } if (!manager.BuildProperties.OmitFolders) { TCM.Folder folder = (TCM.Folder)tcmComponent.OrganizationalItem; c.Folder = manager.BuildOrganizationalItem(folder); } if (!manager.BuildProperties.OmitCategories) { c.Categories = manager.BuildCategories(tcmComponent); } manager.AddXpathToFields(c.Fields, "tcm:Content/custom:" + tcmComponent.Schema.RootElementName); manager.AddXpathToFields(c.MetadataFields, "tcm:Metadata/custom:Metadata"); return c; }
public static Dynamic.FieldSet BuildFields(TCM.Fields.ItemFields tcmItemFields, int currentLinkLevel, BuildManager manager) { Dynamic.FieldSet fields = new FieldSet(); AddFields(fields, tcmItemFields, currentLinkLevel, manager); return(fields); }
public static void AddFields(Dynamic.FieldSet fields, TCM.Fields.ItemFields tcmItemFields, BuildManager manager) { AddFields(fields, tcmItemFields, manager.BuildProperties.LinkLevels, manager); }
public static void AddFields(Dynamic.SerializableDictionary <string, Field> fields, TCM.Fields.ItemFields tcmItemFields, int linkLevels, bool resolveWidthAndHeight, Dynamic.MergeAction mergeAction, BuildManager manager) { foreach (TCM.Fields.ItemField tcmItemField in tcmItemFields) { try { if (fields.ContainsKey(tcmItemField.Name)) { if (mergeAction.Equals(Dynamic.MergeAction.Skip)) { continue; } Dynamic.Field f = manager.BuildField(tcmItemField, linkLevels, resolveWidthAndHeight); if (mergeAction.Equals(Dynamic.MergeAction.Replace)) { fields.Remove(f.Name); fields.Add(f.Name, f); } else { Field existingField = fields[f.Name]; switch (existingField.FieldType) { case FieldType.ComponentLink: case FieldType.MultiMediaLink: foreach (Component linkedComponent in f.LinkedComponentValues) { bool valueExists = false; foreach (Component existingLinkedComponent in existingField.LinkedComponentValues) { if (linkedComponent.Id.Equals(existingLinkedComponent.Id)) { // this value already exists valueExists = true; break; } } if (!valueExists) { existingField.LinkedComponentValues.Add(linkedComponent); } } break; case FieldType.Date: foreach (DateTime dateTime in f.DateTimeValues) { bool valueExists = false; foreach (DateTime existingDateTime in existingField.DateTimeValues) { if (dateTime.Equals(existingDateTime)) { // this value already exists valueExists = true; break; } } if (!valueExists) { existingField.DateTimeValues.Add(dateTime); } } break; case FieldType.Number: foreach (int nr in f.NumericValues) { bool valueExists = false; foreach (int existingNr in existingField.NumericValues) { if (nr == existingNr) { // this value already exists valueExists = true; break; } } if (!valueExists) { existingField.NumericValues.Add(nr); } } break; default: foreach (string val in f.Values) { bool valueExists = false; foreach (string existingVal in existingField.Values) { if (val.Equals(existingVal)) { // this value already exists valueExists = true; break; } } if (!valueExists) { existingField.Values.Add(val); } } break; } } } else { Dynamic.Field f = manager.BuildField(tcmItemField, linkLevels, resolveWidthAndHeight); fields.Add(f.Name, f); } } catch (FieldHasNoValueException) { // fail silently, field is not added to the list } catch (FieldTypeNotDefinedException) { // fail silently, field is not added to the list } } }
public static Dynamic.Component BuildComponent(TCM.Component tcmComponent, int linkLevels, bool resolveWidthAndHeight, BuildManager manager) { GeneralUtils.TimedLog("start BuildComponent"); Dynamic.Component c = new Dynamic.Component(); c.Title = tcmComponent.Title; c.Id = tcmComponent.Id.ToString(); GeneralUtils.TimedLog("component title = " + c.Title); GeneralUtils.TimedLog("start building schema"); c.Schema = manager.BuildSchema(tcmComponent.Schema); GeneralUtils.TimedLog("finished building schema"); c.ComponentType = (ComponentType)Enum.Parse(typeof(ComponentType), tcmComponent.ComponentType.ToString()); if (tcmComponent.ComponentType.Equals(TCM.ComponentType.Multimedia)) { GeneralUtils.TimedLog("start building multimedia"); Multimedia multimedia = new Multimedia(); multimedia.MimeType = tcmComponent.BinaryContent.MultimediaType.MimeType; multimedia.Size = tcmComponent.BinaryContent.FileSize; multimedia.FileName = tcmComponent.BinaryContent.Filename; // remove leading dot from extension because microsoft returns this as ".gif" multimedia.FileExtension = System.IO.Path.GetExtension(multimedia.FileName).Substring(1); if (resolveWidthAndHeight) { MemoryStream memstream = new MemoryStream(); tcmComponent.BinaryContent.WriteToStream(memstream); Image image = Image.FromStream(memstream); memstream.Close(); multimedia.Width = image.Size.Width; multimedia.Height = image.Size.Height; } else { multimedia.Width = 0; multimedia.Height = 0; } c.Multimedia = multimedia; GeneralUtils.TimedLog("finished building multimedia"); } else { c.Multimedia = null; } c.Fields = new Dynamic.SerializableDictionary<string,Field>(); c.MetadataFields = new Dynamic.SerializableDictionary<string, Field>(); if (linkLevels > 0) { if (tcmComponent.Content != null) { GeneralUtils.TimedLog("start retrieving tcm fields"); TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmComponent.Content, tcmComponent.Schema); GeneralUtils.TimedLog("finished retrieving tcm fields"); GeneralUtils.TimedLog("start building fields"); c.Fields = manager.BuildFields(tcmFields, linkLevels, resolveWidthAndHeight); GeneralUtils.TimedLog("finished building fields"); } if (tcmComponent.Metadata != null) { GeneralUtils.TimedLog("start retrieving tcm metadata fields"); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponent.Metadata, tcmComponent.MetadataSchema); GeneralUtils.TimedLog("finished retrieving tcm metadata fields"); GeneralUtils.TimedLog("start building metadata fields"); c.MetadataFields = manager.BuildFields(tcmMetadataFields, linkLevels, resolveWidthAndHeight); GeneralUtils.TimedLog("finished building metadata fields"); } } GeneralUtils.TimedLog("start retrieving tcm publication"); TCM.Repository pub = tcmComponent.ContextRepository; GeneralUtils.TimedLog("finished retrieving tcm publication"); GeneralUtils.TimedLog("start building publication"); c.Publication = manager.BuildPublication(pub); GeneralUtils.TimedLog("finished building publication"); GeneralUtils.TimedLog("start retrieving tcm folder"); TCM.Folder folder = (TCM.Folder) tcmComponent.OrganizationalItem; GeneralUtils.TimedLog("finished retrieving tcm folder"); GeneralUtils.TimedLog("start building folder"); c.Folder = manager.BuildOrganizationalItem(folder); GeneralUtils.TimedLog("finished building folder"); GeneralUtils.TimedLog("start building categories"); c.Categories = manager.BuildCategories(tcmComponent); GeneralUtils.TimedLog("finished building categories"); GeneralUtils.TimedLog("finished BuildComponent " + c.Title); return c; }
public static Dynamic.Component BuildComponent(TCM.Component tcmComponent, int currentLinkLevel, BuildManager manager) { log.Debug(string.Format("start BuildComponent with component {0} ({1}) and link level {2}", tcmComponent.Title, tcmComponent.Id, currentLinkLevel)); Dynamic.Component c = new Dynamic.Component(); c.Title = tcmComponent.Title; c.Id = tcmComponent.Id.ToString(); c.RevisionDate = tcmComponent.RevisionDate; c.Version = tcmComponent.Version; c.Schema = manager.BuildSchema(tcmComponent.Schema); c.ComponentType = (ComponentType)Enum.Parse(typeof(ComponentType), tcmComponent.ComponentType.ToString()); if (tcmComponent.ComponentType.Equals(TCM.ComponentType.Multimedia)) { Multimedia multimedia = new Multimedia(); multimedia.MimeType = tcmComponent.BinaryContent.MultimediaType.MimeType; multimedia.Size = tcmComponent.BinaryContent.Size; multimedia.FileName = tcmComponent.BinaryContent.Filename; string extension = System.IO.Path.GetExtension(multimedia.FileName); if (string.IsNullOrEmpty(extension)) { multimedia.FileExtension = ""; } else { // remove leading dot from extension because microsoft returns this as ".gif" multimedia.FileExtension = extension.Substring(1); } if (manager.BuildProperties.ResolveWidthAndHeight) { try { MemoryStream memstream = new MemoryStream(); tcmComponent.BinaryContent.WriteToStream(memstream); Image image = Image.FromStream(memstream); memstream.Close(); multimedia.Width = image.Size.Width; multimedia.Height = image.Size.Height; } catch (Exception e) { log.Warning(string.Format("error retrieving width and height of image: is component with ID {0} really an image? Error message: {1}", c.Id, e.Message)); multimedia.Width = 0; multimedia.Height = 0; } } else { multimedia.Width = 0; multimedia.Height = 0; } c.Multimedia = multimedia; c.Multimedia.Url = manager.PublishMultimediaComponent(c); } else { c.Multimedia = null; } c.Fields = new Dynamic.FieldSet(); c.MetadataFields = new Dynamic.FieldSet(); if (currentLinkLevel > 0) { if (tcmComponent.Content != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmComponent.Content, tcmComponent.Schema); c.Fields = manager.BuildFields(tcmFields, currentLinkLevel); } if (tcmComponent.Metadata != null) { TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponent.Metadata, tcmComponent.MetadataSchema); c.MetadataFields = manager.BuildFields(tcmMetadataFields, currentLinkLevel); } } if (!manager.BuildProperties.OmitContextPublications) { c.Publication = manager.BuildPublication(tcmComponent.ContextRepository); } if (!manager.BuildProperties.OmitOwningPublications) { c.OwningPublication = manager.BuildPublication(tcmComponent.OwningRepository); } if (!manager.BuildProperties.OmitFolders) { TCM.Folder folder = (TCM.Folder)tcmComponent.OrganizationalItem; c.Folder = manager.BuildOrganizationalItem(folder); } if (!manager.BuildProperties.OmitCategories) { c.Categories = manager.BuildCategories(tcmComponent); } manager.AddXpathToFields(c.Fields, "tcm:Content/custom:" + tcmComponent.Schema.RootElementName); manager.AddXpathToFields(c.MetadataFields, "tcm:Metadata/custom:Metadata"); return(c); }
public virtual Dynamic.FieldSet BuildFields(TCM.Fields.ItemFields tcmItemFields, int currentLinkLevel) { return(FieldsBuilder.BuildFields(tcmItemFields, currentLinkLevel, this)); }
public virtual Dynamic.FieldSet BuildFields(TCM.Fields.ItemFields tcmItemFields) { return(FieldsBuilder.BuildFields(tcmItemFields, this.BuildProperties.LinkLevels, this)); }
public static void AddFields(Dynamic.FieldSet fields, TCM.Fields.ItemFields tcmItemFields, int linkLevels, bool resolveWidthAndHeight, bool publishEmptyFields, Dynamic.MergeAction mergeAction, BuildManager manager) { GeneralUtils.TimedLog(string.Format("add fields: found {0} fields", tcmItemFields.Count)); foreach (TCM.Fields.ItemField tcmItemField in tcmItemFields) { GeneralUtils.TimedLog("add fields: found " + tcmItemField.Name); try { if (fields.ContainsKey(tcmItemField.Name)) { GeneralUtils.TimedLog("field exists already, with " + fields[tcmItemField.Name].Values.Count + " values"); if (mergeAction.Equals(Dynamic.MergeAction.Skip) || (mergeAction.Equals(Dynamic.MergeAction.MergeMultiValueSkipSingleValue) && tcmItemField.Definition.MaxOccurs == 1)) { GeneralUtils.TimedLog(string.Format("skipping field (merge action {0}, maxoccurs {1}", mergeAction.ToString(), tcmItemField.Definition.MaxOccurs)); continue; } Dynamic.Field f = manager.BuildField(tcmItemField, linkLevels, resolveWidthAndHeight, publishEmptyFields); if (mergeAction.Equals(Dynamic.MergeAction.Replace) || (mergeAction.Equals(Dynamic.MergeAction.MergeMultiValueReplaceSingleValue) && tcmItemField.Definition.MaxOccurs == 1)) { GeneralUtils.TimedLog(string.Format("replacing field (merge action {0}, maxoccurs {1}", mergeAction.ToString(), tcmItemField.Definition.MaxOccurs)); fields.Remove(f.Name); fields.Add(f.Name, f); } else { IField existingField = fields[f.Name]; switch (existingField.FieldType) { case FieldType.ComponentLink: case FieldType.MultiMediaLink: foreach (Component linkedComponent in f.LinkedComponentValues) { bool valueExists = false; foreach (Component existingLinkedComponent in existingField.LinkedComponentValues) { if (linkedComponent.Id.Equals(existingLinkedComponent.Id)) { // this value already exists valueExists = true; break; } } if (!valueExists) { existingField.LinkedComponentValues.Add(linkedComponent); } } break; case FieldType.Date: foreach (DateTime dateTime in f.DateTimeValues) { bool valueExists = false; foreach (DateTime existingDateTime in existingField.DateTimeValues) { if (dateTime.Equals(existingDateTime)) { // this value already exists valueExists = true; break; } } if (!valueExists) { existingField.DateTimeValues.Add(dateTime); } } break; case FieldType.Number: foreach (int nr in f.NumericValues) { bool valueExists = false; foreach (int existingNr in existingField.NumericValues) { if (nr == existingNr) { // this value already exists valueExists = true; break; } } if (!valueExists) { existingField.NumericValues.Add(nr); } } break; default: foreach (string val in f.Values) { bool valueExists = false; foreach (string existingVal in existingField.Values) { if (val.Equals(existingVal)) { // this value already exists valueExists = true; break; } } GeneralUtils.TimedLog(string.Format("found value {0}, valueExists: {1}", val, valueExists)); if (!valueExists) { existingField.Values.Add(val); } } break; } } } else { Dynamic.Field f = manager.BuildField(tcmItemField, linkLevels, resolveWidthAndHeight, publishEmptyFields); fields.Add(f.Name, f); } } catch (FieldHasNoValueException) { // fail silently, field is not added to the list } catch (FieldTypeNotDefinedException) { // fail silently, field is not added to the list } } }
public virtual Dynamic.FieldSet BuildFields(TCM.Fields.ItemFields tcmItemFields, int linkLevels, bool resolveWidthAndHeight, bool publishEmptyFields) { return(FieldsBuilder.BuildFields(tcmItemFields, linkLevels, resolveWidthAndHeight, publishEmptyFields, this)); }
public static Dynamic.Component BuildComponent(TCM.Component tcmComponent, int currentLinkLevel, BuildManager manager) { log.Debug(string.Format("start BuildComponent with component {0} ({1}) and link level {2}", tcmComponent.Title, tcmComponent.Id, currentLinkLevel)); Dynamic.Component c = new Dynamic.Component(); c.Title = tcmComponent.Title; c.Id = tcmComponent.Id.ToString(); c.RevisionDate = tcmComponent.RevisionDate; c.Version = tcmComponent.Version; c.Schema = manager.BuildSchema(tcmComponent.Schema); c.ComponentType = (ComponentType)Enum.Parse(typeof(ComponentType), tcmComponent.ComponentType.ToString()); if (tcmComponent.ComponentType.Equals(TCM.ComponentType.Multimedia)) { Multimedia multimedia = new Multimedia(); multimedia.MimeType = tcmComponent.BinaryContent.MultimediaType.MimeType; // PLEASE NOTE: this weird way to set the size of the multimedia is needed because of a difference between Tridion 2011 and 2013 // The property in Tridion's BinaryContent class changed its name AND its type (int FileSize became long Size) // This way, we can use preprocessing to choose the right property // Thijs Borst and Quirijn Slings, 9 April 2015 #if Legacy PropertyInfo prop = tcmComponent.BinaryContent.GetType().GetProperty("FileSize", BindingFlags.Public | BindingFlags.Instance); multimedia.Size = Convert.ToInt64(prop.GetValue(tcmComponent.BinaryContent, null)); #else PropertyInfo prop = tcmComponent.BinaryContent.GetType().GetProperty("Size", BindingFlags.Public | BindingFlags.Instance); multimedia.Size = (long)prop.GetValue(tcmComponent.BinaryContent, null); #endif multimedia.FileName = tcmComponent.BinaryContent.Filename; string extension = System.IO.Path.GetExtension(multimedia.FileName); if (string.IsNullOrEmpty(extension)) { multimedia.FileExtension = ""; } else { // remove leading dot from extension because microsoft returns this as ".gif" multimedia.FileExtension = extension.Substring(1); } if (manager.BuildProperties.ResolveWidthAndHeight) { try { MemoryStream memstream = new MemoryStream(); tcmComponent.BinaryContent.WriteToStream(memstream); Image image = Image.FromStream(memstream); memstream.Close(); multimedia.Width = image.Size.Width; multimedia.Height = image.Size.Height; } catch (Exception e) { log.Warning(string.Format("error retrieving width and height of image: is component with ID {0} really an image? Error message: {1}", c.Id, e.Message)); multimedia.Width = 0; multimedia.Height = 0; } } else { multimedia.Width = 0; multimedia.Height = 0; } c.Multimedia = multimedia; manager.PublishMultimediaComponent(c); } else { c.Multimedia = null; } c.Fields = new Dynamic.FieldSet(); c.MetadataFields = new Dynamic.FieldSet(); if (currentLinkLevel > 0) { if (tcmComponent.Content != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmComponent.Content, tcmComponent.Schema); c.Fields = manager.BuildFields(tcmFields, currentLinkLevel); } if (tcmComponent.Metadata != null) { TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponent.Metadata, tcmComponent.MetadataSchema); c.MetadataFields = manager.BuildFields(tcmMetadataFields, currentLinkLevel); } } if (!manager.BuildProperties.OmitContextPublications) { c.Publication = manager.BuildPublication(tcmComponent.ContextRepository); } if (!manager.BuildProperties.OmitOwningPublications) { c.OwningPublication = manager.BuildPublication(tcmComponent.OwningRepository); } if (!manager.BuildProperties.OmitFolders) { TCM.Folder folder = (TCM.Folder)tcmComponent.OrganizationalItem; c.Folder = manager.BuildOrganizationalItem(folder); } if (!manager.BuildProperties.OmitCategories) { c.Categories = manager.BuildCategories(tcmComponent); } manager.AddXpathToFields(c.Fields, "tcm:Content/custom:" + tcmComponent.Schema.RootElementName); manager.AddXpathToFields(c.MetadataFields, "tcm:Metadata/custom:Metadata"); return(c); }
public static Dynamic.Component BuildComponent(TCM.Component tcmComponent, int linkLevels, bool resolveWidthAndHeight, bool publishEmptyFields, BuildManager manager) { GeneralUtils.TimedLog("start BuildComponent"); Dynamic.Component c = new Dynamic.Component(); c.Title = tcmComponent.Title; c.Id = tcmComponent.Id.ToString(); c.RevisionDate = tcmComponent.RevisionDate; GeneralUtils.TimedLog("component title = " + c.Title); c.Version = tcmComponent.Version; GeneralUtils.TimedLog("start building schema"); c.Schema = manager.BuildSchema(tcmComponent.Schema); GeneralUtils.TimedLog("finished building schema"); c.ComponentType = (ComponentType)Enum.Parse(typeof(ComponentType), tcmComponent.ComponentType.ToString()); if (tcmComponent.ComponentType.Equals(TCM.ComponentType.Multimedia)) { GeneralUtils.TimedLog("start building multimedia"); Multimedia multimedia = new Multimedia(); multimedia.MimeType = tcmComponent.BinaryContent.MultimediaType.MimeType; multimedia.Size = tcmComponent.BinaryContent.FileSize; multimedia.FileName = tcmComponent.BinaryContent.Filename; // remove leading dot from extension because microsoft returns this as ".gif" string extension = System.IO.Path.GetExtension(multimedia.FileName); if (string.IsNullOrEmpty(extension)) multimedia.FileExtension = ""; else multimedia.FileExtension = extension.Substring(1); if (resolveWidthAndHeight) { try { MemoryStream memstream = new MemoryStream(); tcmComponent.BinaryContent.WriteToStream(memstream); Image image = Image.FromStream(memstream); memstream.Close(); multimedia.Width = image.Size.Width; multimedia.Height = image.Size.Height; } catch (Exception e) { log.Warning("error retrieving width and height of image: " + e.Message); multimedia.Width = 0; multimedia.Height = 0; } } else { multimedia.Width = 0; multimedia.Height = 0; } c.Multimedia = multimedia; GeneralUtils.TimedLog("finished building multimedia"); } else { c.Multimedia = null; } c.Fields = new Dynamic.FieldSet(); c.MetadataFields = new Dynamic.FieldSet(); if (linkLevels > 0) { if (tcmComponent.Content != null) { GeneralUtils.TimedLog("start retrieving tcm fields"); TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmComponent.Content, tcmComponent.Schema); log.Debug("TCM fields" +tcmFields.ToXml()); GeneralUtils.TimedLog("finished retrieving tcm fields"); GeneralUtils.TimedLog("start building fields"); c.Fields = manager.BuildFields(tcmFields, linkLevels, resolveWidthAndHeight,publishEmptyFields); GeneralUtils.TimedLog("finished building fields"); } if (tcmComponent.Metadata != null) { GeneralUtils.TimedLog("start retrieving tcm metadata fields"); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponent.Metadata, tcmComponent.MetadataSchema); GeneralUtils.TimedLog("finished retrieving tcm metadata fields"); GeneralUtils.TimedLog("start building metadata fields"); c.MetadataFields = manager.BuildFields(tcmMetadataFields, linkLevels, resolveWidthAndHeight,publishEmptyFields); GeneralUtils.TimedLog("finished building metadata fields"); } } c.Publication = manager.BuildPublication(tcmComponent.ContextRepository); c.OwningPublication = manager.BuildPublication(tcmComponent.OwningRepository); TCM.Folder folder = (TCM.Folder)tcmComponent.OrganizationalItem; c.Folder = manager.BuildOrganizationalItem(folder); c.Categories = manager.BuildCategories(tcmComponent); manager.AddXpathToFields(c.Fields, "tcm:Content/custom:" + tcmComponent.Schema.RootElementName); // TODO: check if the first part of the XPath is really the root element name, or simply always 'Content' manager.AddXpathToFields(c.MetadataFields, "tcm:Metadata/custom:Metadata"); return c; }
public static Dynamic.Component BuildComponent(TCM.Component tcmComponent, int linkLevels, bool resolveWidthAndHeight, bool publishEmptyFields, BuildManager manager) { GeneralUtils.TimedLog("start BuildComponent"); Dynamic.Component c = new Dynamic.Component(); c.Title = tcmComponent.Title; c.Id = tcmComponent.Id.ToString(); c.RevisionDate = tcmComponent.RevisionDate; GeneralUtils.TimedLog("component title = " + c.Title); c.Version = tcmComponent.Version; GeneralUtils.TimedLog("start building schema"); c.Schema = manager.BuildSchema(tcmComponent.Schema); GeneralUtils.TimedLog("finished building schema"); c.ComponentType = (ComponentType)Enum.Parse(typeof(ComponentType), tcmComponent.ComponentType.ToString()); if (tcmComponent.ComponentType.Equals(TCM.ComponentType.Multimedia)) { GeneralUtils.TimedLog("start building multimedia"); Multimedia multimedia = new Multimedia(); multimedia.MimeType = tcmComponent.BinaryContent.MultimediaType.MimeType; multimedia.Size = tcmComponent.BinaryContent.FileSize; multimedia.FileName = tcmComponent.BinaryContent.Filename; // remove leading dot from extension because microsoft returns this as ".gif" string extension = System.IO.Path.GetExtension(multimedia.FileName); if (string.IsNullOrEmpty(extension)) { multimedia.FileExtension = ""; } else { multimedia.FileExtension = extension.Substring(1); } if (resolveWidthAndHeight) { try { MemoryStream memstream = new MemoryStream(); tcmComponent.BinaryContent.WriteToStream(memstream); Image image = Image.FromStream(memstream); memstream.Close(); multimedia.Width = image.Size.Width; multimedia.Height = image.Size.Height; } catch (Exception e) { log.Warning("error retrieving width and height of image: " + e.Message); multimedia.Width = 0; multimedia.Height = 0; } } else { multimedia.Width = 0; multimedia.Height = 0; } c.Multimedia = multimedia; GeneralUtils.TimedLog("finished building multimedia"); } else { c.Multimedia = null; } c.Fields = new Dynamic.FieldSet(); c.MetadataFields = new Dynamic.FieldSet(); if (linkLevels > 0) { if (tcmComponent.Content != null) { GeneralUtils.TimedLog("start retrieving tcm fields"); TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmComponent.Content, tcmComponent.Schema); log.Debug("TCM fields" + tcmFields.ToXml()); GeneralUtils.TimedLog("finished retrieving tcm fields"); GeneralUtils.TimedLog("start building fields"); c.Fields = manager.BuildFields(tcmFields, linkLevels, resolveWidthAndHeight, publishEmptyFields); GeneralUtils.TimedLog("finished building fields"); } if (tcmComponent.Metadata != null) { GeneralUtils.TimedLog("start retrieving tcm metadata fields"); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponent.Metadata, tcmComponent.MetadataSchema); GeneralUtils.TimedLog("finished retrieving tcm metadata fields"); GeneralUtils.TimedLog("start building metadata fields"); c.MetadataFields = manager.BuildFields(tcmMetadataFields, linkLevels, resolveWidthAndHeight, publishEmptyFields); GeneralUtils.TimedLog("finished building metadata fields"); } } c.Publication = manager.BuildPublication(tcmComponent.ContextRepository); c.OwningPublication = manager.BuildPublication(tcmComponent.OwningRepository); TCM.Folder folder = (TCM.Folder)tcmComponent.OrganizationalItem; c.Folder = manager.BuildOrganizationalItem(folder); c.Categories = manager.BuildCategories(tcmComponent); manager.AddXpathToFields(c.Fields, "tcm:Content/custom:" + tcmComponent.Schema.RootElementName); // TODO: check if the first part of the XPath is really the root element name, or simply always 'Content' manager.AddXpathToFields(c.MetadataFields, "tcm:Metadata/custom:Metadata"); return(c); }
public static Dynamic.Component BuildComponent(TCM.Component tcmComponent, int linkLevels, bool resolveWidthAndHeight, BuildManager manager) { GeneralUtils.TimedLog("start BuildComponent"); Dynamic.Component c = new Dynamic.Component(); c.Title = tcmComponent.Title; c.Id = tcmComponent.Id.ToString(); GeneralUtils.TimedLog("component title = " + c.Title); GeneralUtils.TimedLog("start building schema"); c.Schema = manager.BuildSchema(tcmComponent.Schema); GeneralUtils.TimedLog("finished building schema"); c.ComponentType = (ComponentType)Enum.Parse(typeof(ComponentType), tcmComponent.ComponentType.ToString()); if (tcmComponent.ComponentType.Equals(TCM.ComponentType.Multimedia)) { GeneralUtils.TimedLog("start building multimedia"); Multimedia multimedia = new Multimedia(); multimedia.MimeType = tcmComponent.BinaryContent.MultimediaType.MimeType; multimedia.Size = tcmComponent.BinaryContent.FileSize; multimedia.FileName = tcmComponent.BinaryContent.Filename; // remove leading dot from extension because microsoft returns this as ".gif" multimedia.FileExtension = System.IO.Path.GetExtension(multimedia.FileName).Substring(1); if (resolveWidthAndHeight) { MemoryStream memstream = new MemoryStream(); tcmComponent.BinaryContent.WriteToStream(memstream); Image image = Image.FromStream(memstream); memstream.Close(); multimedia.Width = image.Size.Width; multimedia.Height = image.Size.Height; } else { multimedia.Width = 0; multimedia.Height = 0; } c.Multimedia = multimedia; GeneralUtils.TimedLog("finished building multimedia"); } else { c.Multimedia = null; } c.Fields = new Dynamic.SerializableDictionary <string, Field>(); c.MetadataFields = new Dynamic.SerializableDictionary <string, Field>(); if (linkLevels > 0) { if (tcmComponent.Content != null) { GeneralUtils.TimedLog("start retrieving tcm fields"); TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmComponent.Content, tcmComponent.Schema); GeneralUtils.TimedLog("finished retrieving tcm fields"); GeneralUtils.TimedLog("start building fields"); c.Fields = manager.BuildFields(tcmFields, linkLevels, resolveWidthAndHeight); GeneralUtils.TimedLog("finished building fields"); } if (tcmComponent.Metadata != null) { GeneralUtils.TimedLog("start retrieving tcm metadata fields"); TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponent.Metadata, tcmComponent.MetadataSchema); GeneralUtils.TimedLog("finished retrieving tcm metadata fields"); GeneralUtils.TimedLog("start building metadata fields"); c.MetadataFields = manager.BuildFields(tcmMetadataFields, linkLevels, resolveWidthAndHeight); GeneralUtils.TimedLog("finished building metadata fields"); } } GeneralUtils.TimedLog("start retrieving tcm publication"); TCM.Repository pub = tcmComponent.ContextRepository; GeneralUtils.TimedLog("finished retrieving tcm publication"); GeneralUtils.TimedLog("start building publication"); c.Publication = manager.BuildPublication(pub); GeneralUtils.TimedLog("finished building publication"); GeneralUtils.TimedLog("start retrieving tcm folder"); TCM.Folder folder = (TCM.Folder)tcmComponent.OrganizationalItem; GeneralUtils.TimedLog("finished retrieving tcm folder"); GeneralUtils.TimedLog("start building folder"); c.Folder = manager.BuildOrganizationalItem(folder); GeneralUtils.TimedLog("finished building folder"); GeneralUtils.TimedLog("start building categories"); c.Categories = manager.BuildCategories(tcmComponent); GeneralUtils.TimedLog("finished building categories"); GeneralUtils.TimedLog("finished BuildComponent " + c.Title); return(c); }
public static Dynamic.Component BuildComponent(TCM.Component tcmComponent, int currentLinkLevel, BuildManager manager) { log.Debug(string.Format("start BuildComponent with component {0} ({1}) and link level {2}", tcmComponent.Title, tcmComponent.Id, currentLinkLevel)); Dynamic.Component c = new Dynamic.Component(); c.Title = tcmComponent.Title; c.Id = tcmComponent.Id.ToString(); c.RevisionDate = tcmComponent.RevisionDate; c.Version = tcmComponent.Version; c.Schema = manager.BuildSchema(tcmComponent.Schema); c.ComponentType = (ComponentType)Enum.Parse(typeof(ComponentType), tcmComponent.ComponentType.ToString()); if (tcmComponent.ComponentType.Equals(TCM.ComponentType.Multimedia)) { Multimedia multimedia = new Multimedia(); multimedia.MimeType = tcmComponent.BinaryContent.MultimediaType.MimeType; // PLEASE NOTE: this weird way to set the size of the multimedia is needed because of a difference between Tridion 2011 and 2013 // The property in Tridion's BinaryContent class changed its name AND its type (int FileSize became long Size) // This way, we can use preprocessing to choose the right property // Thijs Borst and Quirijn Slings, 9 April 2015 #if Legacy PropertyInfo prop = tcmComponent.BinaryContent.GetType().GetProperty("FileSize", BindingFlags.Public | BindingFlags.Instance); multimedia.Size = Convert.ToInt64(prop.GetValue(tcmComponent.BinaryContent,null)); #else PropertyInfo prop = tcmComponent.BinaryContent.GetType().GetProperty("Size", BindingFlags.Public | BindingFlags.Instance); multimedia.Size = (long) prop.GetValue(tcmComponent.BinaryContent,null); #endif multimedia.FileName = tcmComponent.BinaryContent.Filename; string extension = System.IO.Path.GetExtension(multimedia.FileName); if (string.IsNullOrEmpty(extension)) { multimedia.FileExtension = ""; } else { // remove leading dot from extension because microsoft returns this as ".gif" multimedia.FileExtension = extension.Substring(1); } if (manager.BuildProperties.ResolveWidthAndHeight) { try { MemoryStream memstream = new MemoryStream(); tcmComponent.BinaryContent.WriteToStream(memstream); Image image = Image.FromStream(memstream); memstream.Close(); multimedia.Width = image.Size.Width; multimedia.Height = image.Size.Height; } catch (Exception e) { log.Warning(string.Format("error retrieving width and height of image: is component with ID {0} really an image? Error message: {1}", c.Id, e.Message)); multimedia.Width = 0; multimedia.Height = 0; } } else { multimedia.Width = 0; multimedia.Height = 0; } c.Multimedia = multimedia; c.Multimedia.Url = manager.PublishMultimediaComponent(c); } else { c.Multimedia = null; } c.Fields = new Dynamic.FieldSet(); c.MetadataFields = new Dynamic.FieldSet(); if (currentLinkLevel > 0) { if (tcmComponent.Content != null) { TCM.Fields.ItemFields tcmFields = new TCM.Fields.ItemFields(tcmComponent.Content, tcmComponent.Schema); c.Fields = manager.BuildFields(tcmFields, currentLinkLevel); } if (tcmComponent.Metadata != null) { TCM.Fields.ItemFields tcmMetadataFields = new TCM.Fields.ItemFields(tcmComponent.Metadata, tcmComponent.MetadataSchema); c.MetadataFields = manager.BuildFields(tcmMetadataFields, currentLinkLevel); } } if (!manager.BuildProperties.OmitContextPublications) { c.Publication = manager.BuildPublication(tcmComponent.ContextRepository); } if (!manager.BuildProperties.OmitOwningPublications) { c.OwningPublication = manager.BuildPublication(tcmComponent.OwningRepository); } if (!manager.BuildProperties.OmitFolders) { TCM.Folder folder = (TCM.Folder)tcmComponent.OrganizationalItem; c.Folder = manager.BuildOrganizationalItem(folder); } if (!manager.BuildProperties.OmitCategories) { c.Categories = manager.BuildCategories(tcmComponent); } manager.AddXpathToFields(c.Fields, "tcm:Content/custom:" + tcmComponent.Schema.RootElementName); manager.AddXpathToFields(c.MetadataFields, "tcm:Metadata/custom:Metadata"); return c; }