Browse Source

Added a demo embedded view and refactored.

pull/81/head
Halil İbrahim Kalkan 10 years ago
parent
commit
9d2154ce74
  1. 5
      src/AbpDesk/AbpDesk.Web.Mvc/AbpDeskWebMvcModule.cs
  2. 4
      src/AbpDesk/AbpDesk.Web.Mvc/project.json
  3. 10
      src/Volo.Abp.AspNetCore.EmbeddedFiles/Microsoft/AspNetCore/Builder/EmbeddedFilesApplicationBuilderExtensions.cs
  4. 1
      src/Volo.Abp.AspNetCore.EmbeddedFiles/Volo/Abp/AspNetCore/EmbeddedFiles/AbpAspNetCoreEmbeddedFilesModule.cs
  5. 33
      src/Volo.Abp.AspNetCore.Mvc.UI/AbpAspNetCoreMvcUiModule.cs
  6. 12
      src/Volo.Abp.AspNetCore.Mvc.UI/Controllers/AbpEmbeddedDemoController.cs
  7. 23
      src/Volo.Abp.AspNetCore.Mvc.UI/EmbeddedDemoMainMenuContributor.cs
  8. 3
      src/Volo.Abp.AspNetCore.Mvc.UI/Views/AbpEmbeddedDemo/Index.cshtml
  9. 26
      src/Volo.Abp.AspNetCore.Mvc.UI/Views/Shared/Components/Menu/MenuViewComponent.cs
  10. 8
      src/Volo.Abp.AspNetCore.Mvc.UI/project.json
  11. 26
      src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcModule.cs
  12. 0
      src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/EmbeddedFiles/AspNetCoreEmbeddedFileOptions.cs
  13. 11
      src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/EmbeddedFiles/EmbeddedResourceFileProvider.cs
  14. 0
      src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/EmbeddedFiles/EmbeddedResourceItemFileInfo.cs
  15. 3
      src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/EmbeddedFiles/EmbeddedResourceViewFileProvider.cs
  16. 11
      src/Volo.Abp/Volo/Abp/AbpKernelModule.cs

5
src/AbpDesk/AbpDesk.Web.Mvc/AbpDeskWebMvcModule.cs

@ -6,6 +6,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Volo.Abp;
using Volo.Abp.AspNetCore.EmbeddedFiles;
using Volo.Abp.AspNetCore.Modularity;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Modularity;
@ -14,7 +15,8 @@ using Volo.Abp.UI.Navigation;
namespace AbpDesk.Web.Mvc
{
[DependsOn(
typeof(AbpAspNetCoreMvcModule),
typeof(AbpAspNetCoreEmbeddedFilesModule),
typeof(AbpAspNetCoreMvcUiModule),
typeof(AbpDeskApplicationModule),
typeof(AbpDeskEntityFrameworkCoreModule))]
public class AbpDeskWebMvcModule : AbpModule
@ -47,6 +49,7 @@ namespace AbpDesk.Web.Mvc
}
app.UseStaticFiles();
app.UseEmbeddedFiles();
app.UseMvc(routes =>
{

4
src/AbpDesk/AbpDesk.Web.Mvc/project.json

@ -22,7 +22,9 @@
},
"Volo.Abp.AspNetCore.Mvc": "1.0.0-*",
"AbpDesk.EntityFrameworkCore": "1.0.0-*",
"AbpDesk.Application": "1.0.0-*"
"AbpDesk.Application": "1.0.0-*",
"Volo.Abp.AspNetCore.Mvc.UI": "1.0.0-*",
"Volo.Abp.AspNetCore.EmbeddedFiles": "1.0.0-*"
},
"tools": {

10
src/Volo.Abp.AspNetCore.EmbeddedFiles/Microsoft/AspNetCore/Builder/EmbeddedFilesApplicationBuilderExtensions.cs

@ -1,11 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Volo.Abp.AspNetCore.EmbeddedFiles;
using Volo.Abp.AspNetCore.EmbeddedFiles;
namespace Volo.Abp.AspNetCore.Microsoft.AspNetCore.Builder
namespace Microsoft.AspNetCore.Builder
{
public static class EmbeddedFilesApplicationBuilderExtensions
{
@ -21,6 +16,5 @@ namespace Volo.Abp.AspNetCore.Microsoft.AspNetCore.Builder
}
);
}
}
}

1
src/Volo.Abp.AspNetCore.EmbeddedFiles/Volo/Abp/AspNetCore/EmbeddedFiles/AbpAspNetCoreEmbeddedFilesModule.cs

@ -3,6 +3,7 @@ using Volo.Abp.Modularity;
namespace Volo.Abp.AspNetCore.EmbeddedFiles
{
//TODO: Consider to remove this module and merge to Volo.Abp.AspNetCore. The only problem is this module depends on static files (can we remove dependency with a custom middleware?)
[DependsOn(typeof(AbpAspNetCoreModule))]
public class AbpAspNetCoreEmbeddedFilesModule : AbpModule
{

33
src/Volo.Abp.AspNetCore.Mvc.UI/AbpAspNetCoreMvcUiModule.cs

@ -0,0 +1,33 @@
using System.Reflection;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.EmbeddedFiles;
using Volo.Abp.Modularity;
using Volo.Abp.UI.Navigation;
namespace Volo.Abp.AspNetCore.Mvc
{
[DependsOn(typeof(AbpAspNetCoreMvcModule))]
public class AbpAspNetCoreMvcUiModule : AbpModule
{
public override void ConfigureServices(IServiceCollection services)
{
services.AddAssemblyOf<AbpAspNetCoreMvcUiModule>();
services.Configure<NavigationOptions>(options =>
{
options.MenuContributors.Add(new EmbeddedDemoMainMenuContributor());
});
services.Configure<EmbeddedFileOptions>(options =>
{
options.Sources.Add(
new EmbeddedFileSet(
"/Views/",
GetType().GetTypeInfo().Assembly,
"Volo.Abp.AspNetCore.Mvc.UI.Views"
)
);
});
}
}
}

12
src/Volo.Abp.AspNetCore.Mvc.UI/Controllers/AbpEmbeddedDemoController.cs

@ -0,0 +1,12 @@
using Microsoft.AspNetCore.Mvc;
namespace Volo.Abp.AspNetCore.Mvc.Controllers
{
public class AbpEmbeddedDemoController : AbpController
{
public ActionResult Index()
{
return View();
}
}
}

23
src/Volo.Abp.AspNetCore.Mvc.UI/EmbeddedDemoMainMenuContributor.cs

@ -0,0 +1,23 @@
using System.Threading.Tasks;
using Volo.Abp.UI.Navigation;
namespace Volo.Abp.AspNetCore.Mvc
{
public class EmbeddedDemoMainMenuContributor : IMenuContributor
{
public Task ConfigureMenuAsync(MenuConfigurationContext context)
{
if (context.Menu.Name != StandardMenus.Main)
{
return Task.CompletedTask;
}
context.Menu
.AddItem(
new ApplicationMenuItem("EmbeddedDemo", "EmbeddedDemo", url: "/AbpEmbeddedDemo")
);
return Task.CompletedTask;
}
}
}

3
src/Volo.Abp.AspNetCore.Mvc.UI/Views/AbpEmbeddedDemo/Index.cshtml

@ -0,0 +1,3 @@
<h2>ABP Embedded Demo Page</h2>
<p>This page's content is stored as an embedded file!</p>

26
src/Volo.Abp.AspNetCore.Mvc.UI/Views/Shared/Components/Menu/MenuViewComponent.cs

@ -4,19 +4,19 @@ using Volo.Abp.UI.Navigation;
namespace Volo.Abp.AspNetCore.Mvc.Views.Shared.Components.Menu
{
public class MenuViewComponent : ViewComponent
{
private readonly IMenuManager _menuManager;
//public class MenuViewComponent : ViewComponent
//{
// private readonly IMenuManager _menuManager;
public MenuViewComponent(IMenuManager menuManager)
{
_menuManager = menuManager;
}
// public MenuViewComponent(IMenuManager menuManager)
// {
// _menuManager = menuManager;
// }
public async Task<IViewComponentResult> InvokeAsync(string menuName = StandardMenus.Main, string viewName = "Default")
{
var menu = await _menuManager.GetAsync(StandardMenus.Main);
return View(viewName, menu);
}
}
// public async Task<IViewComponentResult> InvokeAsync(string menuName = StandardMenus.Main, string viewName = "Default")
// {
// var menu = await _menuManager.GetAsync(StandardMenus.Main);
// return View(viewName, menu);
// }
//}
}

8
src/Volo.Abp.AspNetCore.Mvc.UI/project.json

@ -10,5 +10,13 @@
"netstandard1.6": {
"imports": "dnxcore50"
}
},
"buildOptions": {
"embed": {
"include": [
"Views/AbpEmbeddedDemo/*.*"
]
}
}
}

26
src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcModule.cs

@ -1,14 +1,36 @@
using Microsoft.Extensions.DependencyInjection;
using System;
using Microsoft.AspNetCore.Mvc.Razor;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.EmbeddedFiles;
using Volo.Abp.Modularity;
using Volo.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc
{
[DependsOn(typeof(AbpAspNetCoreModule))]
[DependsOn(
typeof(AbpAspNetCoreModule)
)]
public class AbpAspNetCoreMvcModule : IAbpModule
{
public void ConfigureServices(IServiceCollection services)
{
services.AddAssemblyOf<AbpAspNetCoreMvcModule>();
//Configure Razor
services.Insert(0,
ServiceDescriptor.Singleton<IConfigureOptions<RazorViewEngineOptions>>(
new ConfigureOptions<RazorViewEngineOptions>(options =>
{
options.FileProviders.Add(
new EmbeddedResourceViewFileProvider(
services.GetSingletonInstance<IObjectAccessor<IServiceProvider>>()
)
);
}
)
)
);
}
}
}

0
src/Volo.Abp.AspNetCore.EmbeddedFiles/Volo/Abp/AspNetCore/EmbeddedFiles/AspNetCoreEmbeddedFileOptions.cs → src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/EmbeddedFiles/AspNetCoreEmbeddedFileOptions.cs

11
src/Volo.Abp.AspNetCore.EmbeddedFiles/Volo/Abp/AspNetCore/EmbeddedFiles/EmbeddedResourceFileProvider.cs → src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/EmbeddedFiles/EmbeddedResourceFileProvider.cs

@ -4,6 +4,7 @@ using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using Volo.Abp.EmbeddedFiles;
using Volo.DependencyInjection;
namespace Volo.Abp.AspNetCore.EmbeddedFiles
{
@ -13,14 +14,20 @@ namespace Volo.Abp.AspNetCore.EmbeddedFiles
private readonly Lazy<AspNetCoreEmbeddedFileOptions> _options;
public EmbeddedResourceFileProvider(IServiceProvider serviceProvider)
: this(new ObjectAccessor<IServiceProvider>(serviceProvider))
{
}
public EmbeddedResourceFileProvider(IObjectAccessor<IServiceProvider> serviceProvider)
{
_embeddedResourceManager = new Lazy<IEmbeddedFileManager>(
() => serviceProvider.GetRequiredService<IEmbeddedFileManager>(),
() => serviceProvider.Value.GetRequiredService<IEmbeddedFileManager>(),
true
);
_options = new Lazy<AspNetCoreEmbeddedFileOptions>(
() => serviceProvider.GetRequiredService<IOptions<AspNetCoreEmbeddedFileOptions>>().Value,
() => serviceProvider.Value.GetRequiredService<IOptions<AspNetCoreEmbeddedFileOptions>>().Value,
true
);
}

0
src/Volo.Abp.AspNetCore.EmbeddedFiles/Volo/Abp/AspNetCore/EmbeddedFiles/EmbeddedResourceItemFileInfo.cs → src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/EmbeddedFiles/EmbeddedResourceItemFileInfo.cs

3
src/Volo.Abp.AspNetCore.EmbeddedFiles/Volo/Abp/AspNetCore/EmbeddedFiles/EmbeddedResourceViewFileProvider.cs → src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/EmbeddedFiles/EmbeddedResourceViewFileProvider.cs

@ -1,11 +1,12 @@
using System;
using Volo.Abp.EmbeddedFiles;
using Volo.DependencyInjection;
namespace Volo.Abp.AspNetCore.EmbeddedFiles
{
public class EmbeddedResourceViewFileProvider : EmbeddedResourceFileProvider
{
public EmbeddedResourceViewFileProvider(IServiceProvider serviceProvider)
public EmbeddedResourceViewFileProvider(IObjectAccessor<IServiceProvider> serviceProvider)
: base(serviceProvider)
{
}

11
src/Volo.Abp/Volo/Abp/AbpKernelModule.cs

@ -1,5 +1,7 @@
using Microsoft.Extensions.DependencyInjection;
using System;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity;
using Volo.DependencyInjection;
namespace Volo.Abp
{
@ -11,6 +13,13 @@ namespace Volo.Abp
services.AddLogging();
services.AddAssemblyOf<AbpKernelModule>();
services.TryAddObjectAccessor<IServiceProvider>();
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
context.ServiceProvider.GetRequiredService<ObjectAccessor<IServiceProvider>>().Value = context.ServiceProvider;
}
}
}

Loading…
Cancel
Save