private static void AddDirectoriesRecursively(Dictionary <string, IFileInfo> files, string directoryPath, DateTimeOffset lastModificationTime) { if (files.ContainsKey(directoryPath)) { return; } files[directoryPath] = new VirtualDirectoryFileInfo( directoryPath, CalculateFileName(directoryPath), lastModificationTime ); if (directoryPath.Contains("/")) { AddDirectoriesRecursively(files, directoryPath.Substring(0, directoryPath.LastIndexOf('/')), lastModificationTime); } }
protected virtual async Task <ILocalizedTemplateContentReader> CreateInternalAsync( TemplateDefinition templateDefinition) { var virtualPath = templateDefinition.GetVirtualFilePathOrNull(); if (virtualPath == null) { return(NullLocalizedTemplateContentReader.Instance); } var fileInfo = VirtualFileProvider.GetFileInfo(virtualPath); if (!fileInfo.Exists) { var directoryContents = VirtualFileProvider.GetDirectoryContents(virtualPath); if (!directoryContents.Exists) { throw new AbpException("Could not find a file/folder at the location: " + virtualPath); } fileInfo = new VirtualDirectoryFileInfo(virtualPath, virtualPath, DateTimeOffset.UtcNow); } if (fileInfo.IsDirectory) { //TODO: Configure file extensions. var folderReader = new VirtualFolderLocalizedTemplateContentReader(new[] { ".tpl", ".cshtml" }); await folderReader.ReadContentsAsync(VirtualFileProvider, virtualPath); return(folderReader); } else //File { var singleFileReader = new FileInfoLocalizedTemplateContentReader(); await singleFileReader.ReadContentsAsync(fileInfo); return(singleFileReader); } }