Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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());
                }
            }
        }