private string GetOrderFile(Site site, string themeName) { while (site != null) { var orderFile = FileOrderHelper.GetOrderFile(new Theme(site, themeName).PhysicalPath); if (File.Exists(orderFile)) { return(orderFile); } site = site.Parent; } return(null); }
public virtual IEnumerable <FileEntry> GetFiles(Site site, string dirRelativePath) { IComparer <FileResource> comparer = null; Site recursiveSite = site; while (comparer == null && recursiveSite != null) { var dir = GetDirectory(recursiveSite, dirRelativePath); comparer = FileOrderHelper.GetComparer(FileOrderHelper.GetOrderFile(dir.PhysicalPath)); recursiveSite = recursiveSite.Parent; } ICollection <FileEntry> list; if (comparer == null) { list = new List <FileEntry>(); } else { list = new SortedSet <FileEntry>(comparer); } recursiveSite = site; while (recursiveSite != null) { var dir = GetDirectory(recursiveSite, dirRelativePath); if (dir.Exists()) { var files = EnumerateFiles(dir.PhysicalPath); var fileEntries = files.Select(it => new FileInfo(Path.Combine(dir.PhysicalPath, it))) .Where(it => !Path.GetFileName(it.FullName).Equals(FileOrderHelper.OrderFileName, StringComparison.OrdinalIgnoreCase)) .Select(it => new FileEntry(GetRootDir(recursiveSite), GetRelativePath(dirRelativePath, it.Name)) { FileSize = it.Length, Name = it.Name, FileExtension = it.Extension, FileName = Path.GetFileName(it.FullName), CreateDate = it.LastWriteTimeUtc }); foreach (var fileEntry in fileEntries) { if (!list.Contains(fileEntry, new FileEntry.FileNameEqualityComparer())) { list.Add(fileEntry); } } } recursiveSite = recursiveSite.Parent; } return(list); }
public virtual IEnumerable <FileEntry> GetFiles(Site site, string dirRelativePath) { var dir = GetDirectory(site, dirRelativePath); if (dir.Exists()) { var files = EnumerateFiles(dir.PhysicalPath); files = FileOrderHelper.OrderFiles(FileOrderHelper.GetOrderFile(dir.PhysicalPath), files); return(files.Select(it => new FileInfo(Path.Combine(dir.PhysicalPath, it))) .Select(it => new FileEntry(GetRootDir(site), GetRelativePath(dirRelativePath, it.Name)) { FileSize = it.Length, Name = it.Name, FileExtension = it.Extension, FileName = it.FullName, CreateDate = it.LastWriteTimeUtc })); } return(new FileEntry[0]); }