/// <summary> /// Ladda alla noder med data från filstrukturen /// </summary> /// <param name="context">Den HttpContext appen körs i</param> /// <param name="dirId">GUID för rotkatalogen</param> private FileTreeInfo Load(HttpContext context, string dirId) { //Hämta epi användare. var username = context.User.Identity.Name; var epiUser = PrincipalInfo.CreatePrincipal(username); var contentRepository = ServiceLocator.Current.GetInstance <IContentRepository>(); var folder = contentRepository.Get <ContentFolder>(ContentReference.Parse(dirId)); var rootNode = new FileTreeInfo { id = "root", parentId = "", name = "roten", size = 0, link = "", type = "root", children = new List <FileTreeInfo>() //folder = true, //folderPath = "", //key = "0", //path = "", //title = "rooten", }; var includedRootNode = new FileTreeInfo { id = dirId.ToString(CultureInfo.InvariantCulture), type = "dir", name = folder.Name, parentId = rootNode.id, size = 0, link = folder.Name, children = new List <FileTreeInfo>() //key = dirId.ToString(CultureInfo.InvariantCulture), //folder = true, //title = folder.Name, //path = folder.Name, //folderPath = folder.Name + "/", //edit = getRightsJson(folder, AccessLevel.Edit), //delete = getRightsJson(folder, AccessLevel.Delete), //contentreference = folder.ContentLink.ToString(), //typeofmedia = "folder", }; rootNode.children.Add(includedRootNode); LoadRecursiveFromMedia(folder, includedRootNode, epiUser, dirId); return(rootNode); }
public void LoadRecursiveFromMedia(ContentFolder rootDir, FileTreeInfo theNode, IPrincipal epiUser, string rootreference) { if (theNode == null) { throw new ArgumentNullException("theNode"); } var contentRepository = ServiceLocator.Current.GetInstance <IContentRepository>(); var rootFolder = contentRepository.Get <ContentFolder>(ContentReference.Parse(rootreference)); //Get directories var dirs = FileManagement.GetFolders(contentRepository, rootDir); var contentFolders = dirs as ContentFolder[] ?? dirs.ToArray(); if (contentFolders.Any()) { foreach (var dir in contentFolders) { var path = rootFolder.Name == rootDir.Name ? rootFolder.Name + "/" : rootFolder.Name + "/" + rootDir.Name + "/"; var node = new FileTreeInfo { id = dir.ContentLink.ID.ToString(CultureInfo.InvariantCulture), link = path, name = dir.Name, size = 0, parentId = rootDir.ContentLink.ID.ToString(CultureInfo.InvariantCulture), type = "dir", children = new List <FileTreeInfo>() //key = dir.ContentLink.ID.ToString(CultureInfo.InvariantCulture), //folder = true, //title = dir.Name, //path = path, //folderPath = rootFolder.Name + "/", //edit = getRightsJson(dir, AccessLevel.Edit), //delete = getRightsJson(dir, AccessLevel.Delete), //contentreference = dir.ContentLink.ToString(), //typeofmedia = "folder", //children = new List<TreeNode>() }; if (dir.QueryDistinctAccess(AccessLevel.Read)) { theNode.children.Add(node); } LoadRecursiveFromMedia(dir, node, epiUser, rootreference); } } //Get files if epiUser has access //TODO: Hantera rättigheter om man får redigera, deleta. Anders Sjöberg 2015-05-12 10:38 if (rootDir.QueryDistinctAccess(AccessLevel.Read)) { var files = GetFiles(rootDir); if (files.Any()) { var path = rootFolder.Name == rootDir.Name ? rootFolder.Name + "/" : rootFolder.Name + "/" + rootDir.Name + "/"; theNode.children.AddRange(files.Select(media => new FileTreeInfo { id = media.ContentLink.ID.ToString(CultureInfo.InvariantCulture), type = GetFileType(media.MimeType), name = FileManagement.IsLinkNode(media) ? GetLinkName(media.Name) : media.Name, link = FileManagement.IsLinkNode(media) ? GetLink(media) : "", parentId = theNode.id, size = 1, path = GetFilePath(media.ContentLink, media.Name), children = new List <FileTreeInfo>() //key = media.ContentLink.ID.ToString(CultureInfo.InvariantCulture), //folder = false, //title = FileManagement.IsLinkNode(media) ? GetLinkName(media.Name) : media.Name, //path = GetFilePath(media.ContentLink, media.Name), //folderPath = path, //edit = getRightsJson(rootDir, AccessLevel.Edit), //delete = getRightsJson(rootDir, AccessLevel.Delete), //link = FileManagement.IsLinkNode(media) ? GetLink(media) : "", //GetFilePath(uFile.ContentLink, uFile.Name), //icon = FileManagement.IsLinkNode(media) ? "/images/link.png" : GetKnowIcon(media.MimeType), //typeofmedia = "file", //contentreference = media.ContentLink.ToString(), //children = new List<TreeNode>() }).ToList()); } } }