Ejemplo n.º 1
0
        public virtual IList <File> GetFiles()
        {
            try
            {
                List <File> files = new List <File>();

                var fileMap = new Dictionary <string, File>(StringComparer.OrdinalIgnoreCase);
                foreach (var fd in FileSystem.GetFiles(LocalUrl))
                {
                    var file = new File(fd, this);
                    file.Set(FileSystem);
                    file.Set(ImageSizes);

                    var unresizedFileName = ImageSizes.RemoveImageSize(file.Name);
                    if (unresizedFileName != null && fileMap.ContainsKey(unresizedFileName))
                    {
                        fileMap[unresizedFileName].Add(file);

                        if (ImageSizes.GetSizeName(file.Name) == "icon")
                        {
                            file.IsIcon = true;
                        }
                    }
                    else
                    {
                        files.Add(file);
                        fileMap[file.Name] = file;
                    }
                }
                files.Sort(new TitleComparer <File>());
                return(files);
            }
            catch (DirectoryNotFoundException ex)
            {
                Engine.Logger.Warn(ex);
                return(new List <File>());
            }
        }
Ejemplo n.º 2
0
        private void WriteSearch(HttpContext context)
        {
            var query = context.Request["query"];

            if (string.IsNullOrWhiteSpace(query))
            {
                context.Response.WriteJson(new { Status = "Error", Total = 0, Message = "Please provide a search term." });
                return;
            }
            query = query.TrimStart().TrimEnd();

            var host     = Engine.Resolve <IHost>();
            var rootItem = Engine.Persister.Get(host.DefaultSite.RootItemID);
            var root     = new HierarchyNode <ContentItem>(rootItem);

            FS = Engine.Resolve <IFileSystem>();
            var selectionTrail    = Find.EnumerateParents(Selection.SelectedItem, null, true).ToList().Where(a => a is AbstractNode).Reverse().ToList();
            var uploadDirectories = MediaBrowserUtils.GetAvailableUploadFoldersForAllSites(context, root, selectionTrail, Engine, FS);

            if (uploadDirectories.Count == 0)
            {
                context.Response.WriteJson(new { Status = "Error", Total = 0, Message = "No available directories in this site." });
                return;
            }

            //Do the search using the IFileSystem
            var resultsFileData = FS.SearchFiles(query, uploadDirectories);

            if (!resultsFileData.Any())
            {
                context.Response.WriteJson(new { Status = "Error", Total = 0, Message = "0 files found." });
                return;
            }

            var files                = new List <File>();
            var fileMap              = new Dictionary <string, File>(StringComparer.OrdinalIgnoreCase);
            var lastParent           = string.Empty;
            AbstractDirectory parent = null;

            foreach (var fd in resultsFileData.OrderBy(s => s.VirtualPath))
            {
                var parentDirectory = fd.VirtualPath.Substring(0, fd.VirtualPath.LastIndexOf('/'));
                if (lastParent != parentDirectory)
                {
                    parent     = new Directory(DirectoryData.Virtual(parentDirectory), null);
                    lastParent = parentDirectory;
                }

                var file = new File(fd, parent);
                file.Set(FS);
                file.Set(ImageSizes);

                var unresizedFileName = ImageSizes.RemoveImageSize(file.Name);
                if (unresizedFileName != null && fileMap.ContainsKey(unresizedFileName))
                {
                    fileMap[unresizedFileName].Add(file);

                    if (ImageSizes.GetSizeName(file.Name) == "icon")
                    {
                        file.IsIcon = true;
                    }
                }
                else
                {
                    if (unresizedFileName == null)
                    {
                        files.Add(file);
                        fileMap[file.Name] = file;
                    }
                }
            }
            files.Sort(new TitleComparer <File>());

            var directory  = FS.GetDirectory("/");
            var fsRootPath = directory != null && !string.IsNullOrWhiteSpace(directory.RootPath) ? directory.RootPath : "";

            var selectableExtensions = context.Request["exts"];

            context.Response.WriteJson(new
            {
                Path  = "",
                Total = files.Count,
                Files = GetFileReducedList(files, ImageSizes, selectableExtensions, fsRootPath)
            });
        }
Ejemplo n.º 3
0
        private void WriteSearch(HttpContext context)
        {
            var query = context.Request["query"];

            if (string.IsNullOrWhiteSpace(query))
            {
                context.Response.WriteJson(new { Total = 0, Message = "Please provide a search term" });
                return;
            }
            query = query.TrimStart().TrimEnd();

            var host     = Engine.Resolve <IHost>();
            var rootItem = Engine.Persister.Get(host.DefaultSite.RootItemID);
            var root     = new HierarchyNode <ContentItem>(rootItem);

            FS = Engine.Resolve <IFileSystem>();
            var selectionTrail    = Find.EnumerateParents(Selection.SelectedItem, null, true).ToList().Where(a => a is AbstractNode).Reverse().ToList();
            var uploadDirectories = MediaBrowserUtils.GetAvailableUploadFoldersForAllSites(context, root, selectionTrail, Engine, FS);

            if (uploadDirectories.Count == 0)
            {
                context.Response.WriteJson(new { Total = 0, Message = "No available directories" });
                return;
            }

            if (query.IndexOf('*') < 0)
            {
                query = "*" + query + "*";
            }

            var resultFilenames = new List <string>();

            foreach (var dir in uploadDirectories)
            {
                //Search, returns Absolute Paths
                resultFilenames.AddRange(
                    System.IO.Directory.GetFiles(
                        System.Web.Hosting.HostingEnvironment.MapPath("~" + dir.Current.Url),
                        query,
                        System.IO.SearchOption.AllDirectories
                        )
                    );
            }

            if (resultFilenames.Count == 0)
            {
                context.Response.WriteJson(new { Total = 0, Message = "0 files found" });
                return;
            }

            List <File>       files      = new List <File>();
            var               fileMap    = new Dictionary <string, File>(StringComparer.OrdinalIgnoreCase);
            string            lastParent = null;
            AbstractDirectory parent     = null;

            foreach (var nm in resultFilenames.OrderBy(s => s))
            {
                var fd = FS.GetFile(AbsolutePathToVirtual(nm));
                var parentDirectory = fd.VirtualPath.Substring(0, fd.VirtualPath.LastIndexOf('/'));
                if (lastParent != parentDirectory)
                {
                    parent     = new Directory(DirectoryData.Virtual(parentDirectory), null);
                    lastParent = parentDirectory;
                }

                var file = new File(fd, parent);
                file.Set(FS);
                file.Set(ImageSizes);

                var unresizedFileName = ImageSizes.RemoveImageSize(file.Name);
                if (unresizedFileName != null && fileMap.ContainsKey(unresizedFileName))
                {
                    fileMap[unresizedFileName].Add(file);

                    if (ImageSizes.GetSizeName(file.Name) == "icon")
                    {
                        file.IsIcon = true;
                    }
                }
                else
                {
                    if (unresizedFileName == null)
                    {
                        files.Add(file);
                        fileMap[file.Name] = file;
                    }
                }
            }
            files.Sort(new TitleComparer <File>());

            var selectableExtensions = context.Request["exts"];

            context.Response.WriteJson(new
            {
                Path  = "",
                Total = files.Count,
                Files = GetFileReducedList(files, ImageSizes, selectableExtensions)
            });
        }