Browse Source

use file-scoped namespacing for virtualFileExplorer module

pull/10696/head
Ahmet Çotur 5 years ago
parent
commit
73fadc0e02
  1. 63
      modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/AbpVirtualFileExplorerDemoAppModule.cs
  2. 21
      modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Branding/AbpVirtualFileExplorerDemoAppBrandingProvider.cs
  3. 23
      modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Pages/Index.cshtml.cs
  4. 61
      modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Program.cs
  5. 19
      modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Startup.cs
  6. 23
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/AbpVirtualFileExplorerInstallerModule.cs
  7. 15
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/VirtualFileExplorerInstallerPipelineBuilder.cs
  8. 15
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/AbpVirtualFileExplorerOptions.cs
  9. 77
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/AbpVirtualFileExplorerWebModule.cs
  10. 13
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Bundling/PrismjsScriptBundleContributorDocsExtension.cs
  11. 11
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Bundling/PrismjsStyleBundleContributorDocsExtension.cs
  12. 9
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/VirtualFileExplorerResource.cs
  13. 21
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Models/FileInfoViewModel.cs
  14. 21
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Navigation/VirtualFileExplorerMenuContributor.cs
  15. 11
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Navigation/VirtualFileExplorerMenuNames.cs
  16. 41
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/FileContentModal.cshtml.cs
  17. 143
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/Index.cshtml.cs
  18. 13
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/VirtualFileExplorerPageModel.cs
  19. 27
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Properties/launchSettings.json
  20. 9
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/VirtualFileExplorerConsts.cs

63
modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/AbpVirtualFileExplorerDemoAppModule.cs

@ -5,42 +5,41 @@ using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileExplorer.Web;
namespace Volo.Abp.VirtualFileExplorer.DemoApp
namespace Volo.Abp.VirtualFileExplorer.DemoApp;
[DependsOn(
typeof(AbpAutofacModule),
typeof(AbpAspNetCoreMvcUiBasicThemeModule),
typeof(AbpVirtualFileExplorerWebModule)
)]
public class AbpVirtualFileExplorerDemoAppModule : AbpModule
{
[DependsOn(
typeof(AbpAutofacModule),
typeof(AbpAspNetCoreMvcUiBasicThemeModule),
typeof(AbpVirtualFileExplorerWebModule)
)]
public class AbpVirtualFileExplorerDemoAppModule : AbpModule
public override void ConfigureServices(ServiceConfigurationContext context)
{
public override void ConfigureServices(ServiceConfigurationContext context)
Configure<AbpLocalizationOptions>(options =>
{
Configure<AbpLocalizationOptions>(options =>
{
options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
options.Languages.Add(new LanguageInfo("en", "en", "English"));
options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish"));
options.Languages.Add(new LanguageInfo("fr", "fr", "Français"));
options.Languages.Add(new LanguageInfo("hi", "hi", "Hindi", "in"));
options.Languages.Add(new LanguageInfo("is", "is", "Icelandic", "is"));
options.Languages.Add(new LanguageInfo("it", "it", "Italiano", "it"));
options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar"));
options.Languages.Add(new LanguageInfo("ro-RO", "ro-RO", "Română"));
options.Languages.Add(new LanguageInfo("sk", "sk", "Slovak"));
options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
});
}
options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
options.Languages.Add(new LanguageInfo("en", "en", "English"));
options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish"));
options.Languages.Add(new LanguageInfo("fr", "fr", "Français"));
options.Languages.Add(new LanguageInfo("hi", "hi", "Hindi", "in"));
options.Languages.Add(new LanguageInfo("is", "is", "Icelandic", "is"));
options.Languages.Add(new LanguageInfo("it", "it", "Italiano", "it"));
options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar"));
options.Languages.Add(new LanguageInfo("ro-RO", "ro-RO", "Română"));
options.Languages.Add(new LanguageInfo("sk", "sk", "Slovak"));
options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
});
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
app.UseStaticFiles();
app.UseRouting();
app.UseAbpRequestLocalization();
app.UseConfiguredEndpoints();
}
app.UseStaticFiles();
app.UseRouting();
app.UseAbpRequestLocalization();
app.UseConfiguredEndpoints();
}
}

21
modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Branding/AbpVirtualFileExplorerDemoAppBrandingProvider.cs

@ -1,20 +1,19 @@
using Volo.Abp.Ui.Branding;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.VirtualFileExplorer.DemoApp.Branding
namespace Volo.Abp.VirtualFileExplorer.DemoApp.Branding;
[Dependency(ReplaceServices = true)]
public class AbpVirtualFileExplorerDemoAppBrandingProvider : DefaultBrandingProvider
{
[Dependency(ReplaceServices = true)]
public class AbpVirtualFileExplorerDemoAppBrandingProvider : DefaultBrandingProvider
public AbpVirtualFileExplorerDemoAppBrandingProvider()
{
public AbpVirtualFileExplorerDemoAppBrandingProvider()
{
AppName = "Virtual file explorer demo app";
}
AppName = "Virtual file explorer demo app";
public override string AppName { get; }
public override string LogoUrl { get; }
}
public override string AppName { get; }
public override string LogoUrl { get; }
}

23
modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Pages/Index.cshtml.cs

@ -6,19 +6,18 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;
namespace Volo.Abp.VirtualFileExplorer.DemoApp.Pages
namespace Volo.Abp.VirtualFileExplorer.DemoApp.Pages;
public class IndexModel : PageModel
{
public class IndexModel : PageModel
{
private readonly ILogger<IndexModel> _logger;
private readonly ILogger<IndexModel> _logger;
public IndexModel(ILogger<IndexModel> logger)
{
_logger = logger;
}
public IndexModel(ILogger<IndexModel> logger)
{
_logger = logger;
}
public void OnGet()
{
}
public void OnGet()
{
}
}
}

61
modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Program.cs

@ -4,40 +4,39 @@ using Microsoft.Extensions.Hosting;
using Serilog;
using Serilog.Events;
namespace Volo.Abp.VirtualFileExplorer.DemoApp
namespace Volo.Abp.VirtualFileExplorer.DemoApp;
public class Program
{
public class Program
public static int Main(string[] args)
{
public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.File("Logs/logs.txt")
.CreateLogger();
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.File("Logs/logs.txt")
.CreateLogger();
try
{
Log.Information("Starting web host.");
CreateHostBuilder(args).Build().Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly!");
return 1;
}
finally
{
Log.CloseAndFlush();
}
try
{
Log.Information("Starting web host.");
CreateHostBuilder(args).Build().Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly!");
return 1;
}
finally
{
Log.CloseAndFlush();
}
internal static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); })
.UseAutofac()
.UseSerilog();
}
internal static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); })
.UseAutofac()
.UseSerilog();
}

19
modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Startup.cs

@ -3,18 +3,17 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Volo.Abp.VirtualFileExplorer.DemoApp
namespace Volo.Abp.VirtualFileExplorer.DemoApp;
public class Startup
{
public class Startup
public void ConfigureServices(IServiceCollection services)
{
public void ConfigureServices(IServiceCollection services)
{
services.AddApplication<AbpVirtualFileExplorerDemoAppModule>();
}
services.AddApplication<AbpVirtualFileExplorerDemoAppModule>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
app.InitializeApplication();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
app.InitializeApplication();
}
}

23
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/AbpVirtualFileExplorerInstallerModule.cs

@ -2,20 +2,19 @@
using Volo.Abp.Studio;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.VirtualFileExplorer
namespace Volo.Abp.VirtualFileExplorer;
[DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule)
)]
public class AbpVirtualFileExplorerInstallerModule : AbpModule
{
[DependsOn(
typeof(AbpStudioModuleInstallerModule),
typeof(AbpVirtualFileSystemModule)
)]
public class AbpVirtualFileExplorerInstallerModule : AbpModule
public override void ConfigureServices(ServiceConfigurationContext context)
{
public override void ConfigureServices(ServiceConfigurationContext context)
Configure<AbpVirtualFileSystemOptions>(options =>
{
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<AbpVirtualFileExplorerInstallerModule>();
});
}
options.FileSets.AddEmbedded<AbpVirtualFileExplorerInstallerModule>();
});
}
}

15
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/VirtualFileExplorerInstallerPipelineBuilder.cs

@ -3,15 +3,14 @@ using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.ModuleInstalling;
namespace Volo.Abp.VirtualFileExplorer
namespace Volo.Abp.VirtualFileExplorer;
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class VirtualFileExplorerInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
{
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
public class VirtualFileExplorerInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
public async Task<ModuleInstallingPipeline> BuildAsync(ModuleInstallingContext context)
{
return GetBasePipeline(context);
}
return GetBasePipeline(context);
}
}

15
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/AbpVirtualFileExplorerOptions.cs

@ -1,10 +1,9 @@
namespace Volo.Abp.VirtualFileExplorer.Web
namespace Volo.Abp.VirtualFileExplorer.Web;
public class AbpVirtualFileExplorerOptions
{
public class AbpVirtualFileExplorerOptions
{
/// <summary>
/// Default: true.
/// </summary>
public bool IsEnabled { get; set; } = true;
}
/// <summary>
/// Default: true.
/// </summary>
public bool IsEnabled { get; set; } = true;
}

77
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/AbpVirtualFileExplorerWebModule.cs

@ -13,55 +13,54 @@ using Volo.Abp.VirtualFileExplorer.Web.Localization;
using Volo.Abp.VirtualFileExplorer.Web.Navigation;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.VirtualFileExplorer.Web
namespace Volo.Abp.VirtualFileExplorer.Web;
[DependsOn(typeof(AbpAspNetCoreMvcUiBootstrapModule))]
[DependsOn(typeof(AbpAspNetCoreMvcUiThemeSharedModule))]
public class AbpVirtualFileExplorerWebModule : AbpModule
{
[DependsOn(typeof(AbpAspNetCoreMvcUiBootstrapModule))]
[DependsOn(typeof(AbpAspNetCoreMvcUiThemeSharedModule))]
public class AbpVirtualFileExplorerWebModule : AbpModule
public override void PreConfigureServices(ServiceConfigurationContext context)
{
public override void PreConfigureServices(ServiceConfigurationContext context)
PreConfigure<IMvcBuilder>(mvcBuilder =>
{
PreConfigure<IMvcBuilder>(mvcBuilder =>
{
mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpVirtualFileExplorerWebModule).Assembly);
});
}
mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpVirtualFileExplorerWebModule).Assembly);
});
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
var virtualFileExplorerOptions = context.Services.ExecutePreConfiguredActions<AbpVirtualFileExplorerOptions>();
public override void ConfigureServices(ServiceConfigurationContext context)
{
var virtualFileExplorerOptions = context.Services.ExecutePreConfiguredActions<AbpVirtualFileExplorerOptions>();
if (virtualFileExplorerOptions.IsEnabled)
if (virtualFileExplorerOptions.IsEnabled)
{
Configure<AbpNavigationOptions>(options =>
{
Configure<AbpNavigationOptions>(options =>
{
options.MenuContributors.Add(new VirtualFileExplorerMenuContributor());
});
options.MenuContributors.Add(new VirtualFileExplorerMenuContributor());
});
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<AbpVirtualFileExplorerWebModule>("Volo.Abp.VirtualFileExplorer.Web");
});
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<AbpVirtualFileExplorerWebModule>("Volo.Abp.VirtualFileExplorer.Web");
});
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Add<VirtualFileExplorerResource>("en")
.AddBaseTypes(typeof(AbpValidationResource))
.AddVirtualJson("/Localization/Resources");
});
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Add<VirtualFileExplorerResource>("en")
.AddBaseTypes(typeof(AbpValidationResource))
.AddVirtualJson("/Localization/Resources");
});
Configure<AbpBundleContributorOptions>(options =>
{
options
.Extensions<PrismjsStyleBundleContributor>()
.Add<PrismjsStyleBundleContributorDocsExtension>();
Configure<AbpBundleContributorOptions>(options =>
{
options
.Extensions<PrismjsStyleBundleContributor>()
.Add<PrismjsStyleBundleContributorDocsExtension>();
options
.Extensions<PrismjsScriptBundleContributor>()
.Add<PrismjsScriptBundleContributorDocsExtension>();
});
}
options
.Extensions<PrismjsScriptBundleContributor>()
.Add<PrismjsScriptBundleContributorDocsExtension>();
});
}
}
}

13
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Bundling/PrismjsScriptBundleContributorDocsExtension.cs

@ -1,14 +1,13 @@
using System.Collections.Generic;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
namespace Volo.Abp.VirtualFileExplorer.Web.Bundling
namespace Volo.Abp.VirtualFileExplorer.Web.Bundling;
public class PrismjsScriptBundleContributorDocsExtension : BundleContributor
{
public class PrismjsScriptBundleContributorDocsExtension : BundleContributor
public override void ConfigureBundle(BundleConfigurationContext context)
{
public override void ConfigureBundle(BundleConfigurationContext context)
{
context.Files.AddIfNotContains("/libs/prismjs/plugins/toolbar/prism-toolbar.js");
context.Files.AddIfNotContains("/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js");
}
context.Files.AddIfNotContains("/libs/prismjs/plugins/toolbar/prism-toolbar.js");
context.Files.AddIfNotContains("/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js");
}
}

11
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Bundling/PrismjsStyleBundleContributorDocsExtension.cs

@ -1,13 +1,12 @@
using System.Collections.Generic;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
namespace Volo.Abp.VirtualFileExplorer.Web.Bundling
namespace Volo.Abp.VirtualFileExplorer.Web.Bundling;
public class PrismjsStyleBundleContributorDocsExtension : BundleContributor
{
public class PrismjsStyleBundleContributorDocsExtension : BundleContributor
public override void ConfigureBundle(BundleConfigurationContext context)
{
public override void ConfigureBundle(BundleConfigurationContext context)
{
context.Files.AddIfNotContains("/libs/prismjs/plugins/toolbar/prism-toolbar.css");
}
context.Files.AddIfNotContains("/libs/prismjs/plugins/toolbar/prism-toolbar.css");
}
}

9
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/VirtualFileExplorerResource.cs

@ -1,10 +1,9 @@
using Volo.Abp.Localization;
namespace Volo.Abp.VirtualFileExplorer.Web.Localization
namespace Volo.Abp.VirtualFileExplorer.Web.Localization;
[LocalizationResourceName("AbpVirtualFileExplorer")]
public class VirtualFileExplorerResource
{
[LocalizationResourceName("AbpVirtualFileExplorer")]
public class VirtualFileExplorerResource
{
}
}

21
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Models/FileInfoViewModel.cs

@ -1,21 +1,20 @@
using System;
namespace Volo.Abp.VirtualFileExplorer.Web.Models
namespace Volo.Abp.VirtualFileExplorer.Web.Models;
public class FileInfoViewModel
{
public class FileInfoViewModel
{
public string FilePath { get; set; }
public string FilePath { get; set; }
public string Icon { get; set; }
public string Icon { get; set; }
public string FileType { get; set; }
public string FileType { get; set; }
public string Length { get; set; }
public string Length { get; set; }
public string FileName { get; set; }
public string FileName { get; set; }
public DateTime LastUpdateTime { get; set; }
public DateTime LastUpdateTime { get; set; }
public bool IsDirectory { get; set; }
}
public bool IsDirectory { get; set; }
}

21
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Navigation/VirtualFileExplorerMenuContributor.cs

@ -4,22 +4,21 @@ using Microsoft.Extensions.Localization;
using Volo.Abp.UI.Navigation;
using Volo.Abp.VirtualFileExplorer.Web.Localization;
namespace Volo.Abp.VirtualFileExplorer.Web.Navigation
namespace Volo.Abp.VirtualFileExplorer.Web.Navigation;
public class VirtualFileExplorerMenuContributor : IMenuContributor
{
public class VirtualFileExplorerMenuContributor : IMenuContributor
public virtual Task ConfigureMenuAsync(MenuConfigurationContext context)
{
public virtual Task ConfigureMenuAsync(MenuConfigurationContext context)
if (context.Menu.Name != StandardMenus.Main)
{
if (context.Menu.Name != StandardMenus.Main)
{
return Task.CompletedTask;
}
return Task.CompletedTask;
}
var l = context.GetLocalizer<VirtualFileExplorerResource>();
var l = context.GetLocalizer<VirtualFileExplorerResource>();
context.Menu.Items.Add(new ApplicationMenuItem(VirtualFileExplorerMenuNames.Index, l["Menu:VirtualFileExplorer"], icon: "fa fa-file", url: "~/VirtualFileExplorer"));
context.Menu.Items.Add(new ApplicationMenuItem(VirtualFileExplorerMenuNames.Index, l["Menu:VirtualFileExplorer"], icon: "fa fa-file", url: "~/VirtualFileExplorer"));
return Task.CompletedTask;
}
return Task.CompletedTask;
}
}

11
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Navigation/VirtualFileExplorerMenuNames.cs

@ -1,9 +1,8 @@
namespace Volo.Abp.VirtualFileExplorer.Web.Navigation
namespace Volo.Abp.VirtualFileExplorer.Web.Navigation;
public class VirtualFileExplorerMenuNames
{
public class VirtualFileExplorerMenuNames
{
public const string GroupName = "AbpVirualFileExplorer";
public const string GroupName = "AbpVirualFileExplorer";
public const string Index = GroupName + ".Index";
}
public const string Index = GroupName + ".Index";
}

41
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/FileContentModal.cshtml.cs

@ -6,34 +6,33 @@ using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.FileProviders;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.VirtualFileExplorer.Web.Pages.VirtualFileExplorer
namespace Volo.Abp.VirtualFileExplorer.Web.Pages.VirtualFileExplorer;
public class FileContentModal : PageModel
{
public class FileContentModal : PageModel
{
[Required]
[BindProperty(SupportsGet = true)]
public string FilePath { get; set; }
[Required]
[BindProperty(SupportsGet = true)]
public string FilePath { get; set; }
public string Content { get; set; }
public string Content { get; set; }
protected IVirtualFileProvider VirtualFileProvider { get; }
protected IVirtualFileProvider VirtualFileProvider { get; }
public FileContentModal(IVirtualFileProvider virtualFileProvider)
{
VirtualFileProvider = virtualFileProvider;
}
public FileContentModal(IVirtualFileProvider virtualFileProvider)
{
VirtualFileProvider = virtualFileProvider;
}
public virtual async Task<IActionResult> OnGetAsync()
public virtual async Task<IActionResult> OnGetAsync()
{
var fileInfo = VirtualFileProvider.GetFileInfo(FilePath);
if (fileInfo == null || fileInfo.IsDirectory)
{
var fileInfo = VirtualFileProvider.GetFileInfo(FilePath);
if (fileInfo == null || fileInfo.IsDirectory)
{
return NotFound();
}
return NotFound();
}
Content = await fileInfo.ReadAsStringAsync();
Content = await fileInfo.ReadAsStringAsync();
return Page();
}
return Page();
}
}

143
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/Index.cshtml.cs

@ -9,107 +9,106 @@ using Volo.Abp.VirtualFileExplorer.Web.Models;
using Volo.Abp.VirtualFileSystem;
using Volo.Abp.VirtualFileSystem.Embedded;
namespace Volo.Abp.VirtualFileExplorer.Web.Pages.VirtualFileExplorer
namespace Volo.Abp.VirtualFileExplorer.Web.Pages.VirtualFileExplorer;
public class IndexModel : VirtualFileExplorerPageModel
{
public class IndexModel : VirtualFileExplorerPageModel
{
[BindProperty(SupportsGet = true)]
public string Path { get; set; } = "/";
[BindProperty(SupportsGet = true)]
public string Path { get; set; } = "/";
[BindProperty(SupportsGet = true)]
public int CurrentPage { get; set; } = 1;
[BindProperty(SupportsGet = true)]
public int CurrentPage { get; set; } = 1;
[BindProperty(SupportsGet = true)]
public int PageSize { get; set; } = 10;
[BindProperty(SupportsGet = true)]
public int PageSize { get; set; } = 10;
public List<FileInfoViewModel> FileInfoList { get; set; }
public List<FileInfoViewModel> FileInfoList { get; set; }
public PagerModel PagerModel { get; set; }
public PagerModel PagerModel { get; set; }
public string PathNavigation { get; set; }
public string PathNavigation { get; set; }
protected IVirtualFileProvider VirtualFileProvider { get; }
protected IVirtualFileProvider VirtualFileProvider { get; }
public IndexModel(IVirtualFileProvider virtualFileProvider)
{
VirtualFileProvider = virtualFileProvider;
}
public IndexModel(IVirtualFileProvider virtualFileProvider)
{
VirtualFileProvider = virtualFileProvider;
}
public virtual IActionResult OnGet()
{
var query = VirtualFileProvider.GetDirectoryContents(Path)
.Where(d => VirtualFileExplorerConsts.AllowFileInfoTypes.Contains(d.GetType().Name))
.OrderByDescending(f => f.IsDirectory).ToList();
public virtual IActionResult OnGet()
{
var query = VirtualFileProvider.GetDirectoryContents(Path)
.Where(d => VirtualFileExplorerConsts.AllowFileInfoTypes.Contains(d.GetType().Name))
.OrderByDescending(f => f.IsDirectory).ToList();
PagerModel = new PagerModel(query.Count, PageSize, CurrentPage, PageSize, $"{Url.Content("~/")}VirtualFileExplorer?Path={Path}&PageSize={PageSize}");
PagerModel = new PagerModel(query.Count, PageSize, CurrentPage, PageSize, $"{Url.Content("~/")}VirtualFileExplorer?Path={Path}&PageSize={PageSize}");
SetViewModel(query.Skip((CurrentPage - 1) * PageSize).Take(PageSize));
SetPathNavigation();
SetViewModel(query.Skip((CurrentPage - 1) * PageSize).Take(PageSize));
SetPathNavigation();
return Page();
}
return Page();
}
private void SetViewModel(IEnumerable<IFileInfo> fileInfos)
{
FileInfoList = new List<FileInfoViewModel>();
private void SetViewModel(IEnumerable<IFileInfo> fileInfos)
{
FileInfoList = new List<FileInfoViewModel>();
foreach (var fileInfo in fileInfos)
foreach (var fileInfo in fileInfos)
{
var fileInfoViewModel = new FileInfoViewModel()
{
var fileInfoViewModel = new FileInfoViewModel()
{
IsDirectory = fileInfo.IsDirectory,
Icon = "fas fa-file",
FileType = "file",
Length = fileInfo.Length+" bytes",
FileName = fileInfo.Name,
LastUpdateTime = fileInfo.LastModified.LocalDateTime
};
IsDirectory = fileInfo.IsDirectory,
Icon = "fas fa-file",
FileType = "file",
Length = fileInfo.Length + " bytes",
FileName = fileInfo.Name,
LastUpdateTime = fileInfo.LastModified.LocalDateTime
};
var filePath = fileInfo.PhysicalPath ?? $"{Path.EnsureEndsWith('/')}{fileInfo.Name}";;
var filePath = fileInfo.PhysicalPath ?? $"{Path.EnsureEndsWith('/')}{fileInfo.Name}"; ;
if (fileInfo.IsDirectory)
if (fileInfo.IsDirectory)
{
fileInfoViewModel.Icon = "fas fa-folder";
fileInfoViewModel.FileType = "folder";
fileInfoViewModel.Length = "/";
fileInfoViewModel.FileName = $"<a href='{Url.Content("~/")}VirtualFileExplorer?path={filePath}'>{fileInfo.Name}</a>";
}
else
{
if (fileInfo is EmbeddedResourceFileInfo embeddedResourceFileInfo)
{
fileInfoViewModel.Icon = "fas fa-folder";
fileInfoViewModel.FileType = "folder";
fileInfoViewModel.Length = "/";
fileInfoViewModel.FileName =$"<a href='{Url.Content("~/")}VirtualFileExplorer?path={filePath}'>{fileInfo.Name}</a>";
fileInfoViewModel.FilePath = embeddedResourceFileInfo.VirtualPath;
}
else
{
if (fileInfo is EmbeddedResourceFileInfo embeddedResourceFileInfo)
{
fileInfoViewModel.FilePath = embeddedResourceFileInfo.VirtualPath;
}
else
{
fileInfoViewModel.FilePath = filePath;
}
fileInfoViewModel.FilePath = filePath;
}
FileInfoList.Add(fileInfoViewModel);
}
FileInfoList.Add(fileInfoViewModel);
}
}
private void SetPathNavigation()
{
var navigationBuild = new StringBuilder();
var pathArray = Path.Split('/').Where(p => !p.IsNullOrWhiteSpace());
var href = $"{Url.Content("~/")}VirtualFileExplorer?path=";
private void SetPathNavigation()
{
var navigationBuild = new StringBuilder();
var pathArray = Path.Split('/').Where(p => !p.IsNullOrWhiteSpace());
var href = $"{Url.Content("~/")}VirtualFileExplorer?path=";
navigationBuild.Append($"<nav aria-label='breadcrumb'>" +
$" <ol class='breadcrumb'>" +
$"<li class='breadcrumb-item'><a href='{href}/'>{L["BackToRoot"]}</a></li>");
navigationBuild.Append($"<nav aria-label='breadcrumb'>" +
$" <ol class='breadcrumb'>" +
$"<li class='breadcrumb-item'><a href='{href}/'>{L["BackToRoot"]}</a></li>");
foreach (var item in pathArray)
{
href += "/" + item;
navigationBuild.Append($"<li class='breadcrumb-item'><a href='{href}'>{item}</a></li>");
}
foreach (var item in pathArray)
{
href += "/" + item;
navigationBuild.Append($"<li class='breadcrumb-item'><a href='{href}'>{item}</a></li>");
}
navigationBuild.Append("</ol></nav>");
navigationBuild.Append("</ol></nav>");
PathNavigation = navigationBuild.ToString();
}
PathNavigation = navigationBuild.ToString();
}
}

13
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/VirtualFileExplorerPageModel.cs

@ -1,14 +1,13 @@
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
using Volo.Abp.VirtualFileExplorer.Web.Localization;
namespace Volo.Abp.VirtualFileExplorer.Web.Pages.VirtualFileExplorer
namespace Volo.Abp.VirtualFileExplorer.Web.Pages.VirtualFileExplorer;
public abstract class VirtualFileExplorerPageModel : AbpPageModel
{
public abstract class VirtualFileExplorerPageModel : AbpPageModel
protected VirtualFileExplorerPageModel()
{
protected VirtualFileExplorerPageModel()
{
LocalizationResourceType = typeof(VirtualFileExplorerResource);
ObjectMapperContext = typeof(AbpVirtualFileExplorerWebModule);
}
LocalizationResourceType = typeof(VirtualFileExplorerResource);
ObjectMapperContext = typeof(AbpVirtualFileExplorerWebModule);
}
}

27
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:51151/",
"sslPort": 44302
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Volo.Abp.VirtualFileExplorer.Web": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

9
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/VirtualFileExplorerConsts.cs

@ -1,7 +1,6 @@
namespace Volo.Abp.VirtualFileExplorer.Web
namespace Volo.Abp.VirtualFileExplorer.Web;
public static class VirtualFileExplorerConsts
{
public static class VirtualFileExplorerConsts
{
public static readonly string[] AllowFileInfoTypes = {"VirtualDirectoryFileInfo", "EmbeddedResourceFileInfo", "ManifestDirectoryInfo" , "ManifestFileInfo"};
}
public static readonly string[] AllowFileInfoTypes = { "VirtualDirectoryFileInfo", "EmbeddedResourceFileInfo", "ManifestDirectoryInfo", "ManifestFileInfo" };
}

Loading…
Cancel
Save