protected override DriverResult Editor(AttachToFolderPart part, dynamic shapeHelper) { int?projectId = null; // if it is Create Mode AttachToProjectPart attachToProjectPart = part.As <AttachToProjectPart>(); if (attachToProjectPart == null || attachToProjectPart.Record.Project == null) { projectId = this.projectService.GetProjectIdFromQueryString(); } else { projectId = attachToProjectPart.Record.Project != null ? (int?)attachToProjectPart.Record.Project.Id : null; } if (projectId == null) { return(null); } var folders = this.folderService.GetFolders(projectId.Value).Select(c => c.As <FolderPart>()).ToList(); FolderViewModel model = this.folderService.ConvertToTree(folders, part.Record.Folder != null ? (int?)part.Record.Folder.Id : null); List <DriverResult> shapes = new List <DriverResult>(); shapes.Add(ContentShape("Parts_AttachToFolder_Edit", () => shapeHelper.EditorTemplate( TemplateName: "Parts/AttachToFolder", Model: model, Prefix: Prefix))); var project = this.projectService.GetProject(projectId.Value); if (part.Id != default(int) && part.Record.Folder != null) { var folder = folders.FirstOrDefault(c => c.Id == part.Record.Folder.Id); shapes.AddRange(this.GetFolderMenuAndTitleShapes(folder, project, shapeHelper)); } else { if (project != null) { shapes.Add(this.GetWikiMenuAndTitle(part, project, shapeHelper)); } else { FolderWithAncestorsViewModel titleModel = new FolderWithAncestorsViewModel { Title = T("[No Folder Is Selected]").Text, Project = project.Record, ProjectId = projectId }; shapes.Add(ContentShape("Parts_Folder_Title", () => shapeHelper.Parts_Folder_Title(Model: titleModel))); } } return(Combined(shapes.ToArray())); }
protected IEnumerable <DriverResult> GetFolderMenuAndTitleShapes(FolderPart part, ProjectPart projectPart, dynamic shapeHelper) { FolderWithAncestorsViewModel model = new FolderWithAncestorsViewModel(this.folderService.Convert(part)); model.Project = projectPart.Record; model.ProjectId = projectPart.Id; List <DriverResult> shapes = new List <DriverResult>(); if (this.contentOwnershipService.CurrentUserCanEditContent(projectPart.ContentItem)) { shapes.Add(ContentShape("Parts_Folder_Menu", () => shapeHelper.Parts_Folder_Menu(Model: model))); } // folder path var folders = this.folderService.GetFolders(projectPart.Id).Select(c => c.As <FolderPart>()); var ancestors = this.folderService.GetAncestors(folders, part.Id); model.Ancestors.AddRange(ancestors.Select(c => this.folderService.Convert(c))); shapes.Add(this.ContentShape("Parts_Folder_Title", () => shapeHelper.Parts_Folder_Title( Model: model))); return(shapes); }
protected override DriverResult Display(FolderPart part, string displayType, dynamic shapeHelper) { FolderWithAncestorsViewModel model = new FolderWithAncestorsViewModel(this.folderService.Convert(part)); model.Project = part.Record.Project; switch (displayType) { case "Summary": return(ContentShape("Parts_Folder_Summary", () => shapeHelper.Parts_Folder_Summary( Model: model))); case "ChangePermissionsTitle": case "TitleAndMenu": return(ContentShape("Parts_Folder_ChangePermissionsTitle", () => shapeHelper.Parts_Folder_ChangePermissionsTitle( Model: model))); case "Detail": if (part.Record.Project == null) { throw new System.Data.DataException("Folder is not associated with any project"); } List <DriverResult> shapes = new List <DriverResult>(); var project = this.projectService.GetProject(part.Record.Project.Id); shapes.AddRange(this.GetFolderMenuAndTitleShapes(part, project, shapeHelper)); // items shapes.Add(this.RenderAttachItemsToFolder(part.Record.Id, part.Record.Project.Id, shapeHelper)); return(this.Combined(shapes.ToArray())); default: return(ContentShape("Parts_Folder_Summary", () => shapeHelper.Parts_Folder_Summary( Model: model))); } }