private void AddPathItem(List<ItemInfo> list, ItemInfo item) { if (item == null) return; list.Add(item); if (item.Parent != null) this.AddPathItem(list, item.Parent); }
public static List<ItemInfo> SetParent(this List<ItemInfo> list, ItemInfo parent) { foreach (ItemInfo item in list) { item.Parent = parent; } return list; }
public static List<ItemInfo> ToList(this XElement xml) { List<ItemInfo> res = new List<ItemInfo>(); if (xml != null && xml.HasElements) { foreach (XElement element in xml.Nodes()) { ItemInfo item = new ItemInfo(); item.TcmId = element.Attribute("ID").Value; item.ItemType = element.Attributes().Any(x => x.Name == "Type") ? (ItemType)Int32.Parse(element.Attribute("Type").Value) : GetItemType(item.TcmId); item.Title = element.Attributes().Any(x => x.Name == "Title") ? element.Attribute("Title").Value : item.TcmId; item.MimeType = element.Attributes().Any(x => x.Name == "MIMEType") ? element.Attribute("MIMEType").Value : null; item.FromPub = element.Attributes().Any(x => x.Name == "FromPub") ? element.Attribute("FromPub").Value : null; item.IsPublished = element.Attributes().Any(x => x.Name == "Icon") && element.Attribute("Icon").Value.EndsWith("P1"); res.Add(item); } } return res; }
public static void ProcessTridionItem(MappingInfo mapping, ItemInfo item, TridionFolderInfo folder) { //todo: nested path if (item == null || folder == null) return; if (!folder.ScanForItems) return; if (mapping.ProjectFolders.Any(projectFolder => projectFolder.ExistsTcmId(item.TcmId))) return; if (folder.TridionRole == TridionRole.PageLayoutContainer || folder.TridionRole == TridionRole.ComponentLayoutContainer) { TemplateBuildingBlockData tridionItem = ReadItem(mapping, item.TcmId) as TemplateBuildingBlockData; if (tridionItem == null || tridionItem.VersionInfo.RevisionDate == null) return; ShowMessage(item.Title + "..."); ProjectDestinationDialogWindow dialog = new ProjectDestinationDialogWindow(); dialog.Mapping = mapping; dialog.TridionRole = folder.TridionRole; dialog.TridionTcmId = item.TcmId; dialog.TridionTitle = item.Title; dialog.TridionContent = tridionItem.Content; bool res = dialog.ShowDialog() == true; if (res) { ProjectFolderInfo projectFolder = dialog.ProjectFolder; ProjectFileInfo projectFile = dialog.ProjectFile; if (projectFolder != null && projectFile != null) { string path = projectFile.FullPath; DateTime tridionDate = (DateTime) tridionItem.VersionInfo.RevisionDate; DateTime tridionLocalDate = tridionDate.GetLocalTime(mapping.TimeZoneId); SaveVSItem(path, tridionItem.Content); File.SetAttributes(path, FileAttributes.Normal); File.SetLastWriteTime(path, tridionLocalDate); WriteSuccessLog(path + " - Saved to Visual Studio"); } } ShowMessage(String.Empty); } if (folder.TridionRole == TridionRole.MultimediaComponentContainer) { ComponentData tridionItem = GetComponent(mapping, item.TcmId); if (tridionItem == null || tridionItem.VersionInfo.RevisionDate == null) return; ShowMessage(item.Title + "..."); ProjectBinaryDestinationDialogWindow dialog = new ProjectBinaryDestinationDialogWindow(); dialog.Mapping = mapping; dialog.TridionTcmId = item.TcmId; dialog.TridionTitle = item.Title; bool res = dialog.ShowDialog() == true; if (res) { ProjectFolderInfo projectFolder = dialog.ProjectFolder; ProjectFileInfo projectFile = dialog.ProjectFile; if (projectFolder != null && projectFile != null) { string path = projectFile.FullPath; DateTime tridionDate = (DateTime)tridionItem.VersionInfo.RevisionDate; DateTime tridionLocalDate = tridionDate.GetLocalTime(mapping.TimeZoneId); SaveVSBinaryItem(mapping, projectFile.TcmId, path); File.SetAttributes(path, FileAttributes.Normal); File.SetLastWriteTime(path, tridionLocalDate); WriteSuccessLog(path + " - Saved to Visual Studio successfully"); } } ShowMessage(String.Empty); } }