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); } }
public static void ProcessTridionFolder(MappingInfo mapping, TridionFolderInfo folder) { if (!folder.ScanForItems || string.IsNullOrEmpty(folder.TcmId) || (folder.TridionRole != TridionRole.PageLayoutContainer && folder.TridionRole != TridionRole.ComponentLayoutContainer)) return; List<ItemInfo> items = GetTbbsByParentFolder(mapping, folder.TcmId); foreach (ItemInfo item in items) { ProcessTridionItem(mapping, item, folder); } List<ItemInfo> childFolderItems = GetFoldersByParentFolder(mapping, folder.TcmId); if (childFolderItems != null && childFolderItems.Count > 0) { List<TridionFolderInfo> childFolders = childFolderItems.Select(childFolderItem => new TridionFolderInfo { TcmId = childFolderItem.TcmId, TridionRole = folder.TridionRole, ScanForItems = folder.ScanForItems, ParentFolder = folder }).ToList(); folder.ChildFolders = childFolders; foreach (TridionFolderInfo childFolder in childFolders) { ProcessTridionFolder(mapping, childFolder); } } }