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);
        }
Exemple #3
0
        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)));
            }
        }