Added a demo embedded view and refactored.

pull/81/head
Halil İbrahim Kalkan 9 years ago
parent f4fd048a56
commit 9d2154ce74

@ -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 =>
{

@ -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": {

@ -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
}
);
}
}
}

@ -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
{

@ -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"
)
);
});
}
}
}

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

@ -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;
}
}
}

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

@ -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);
// }
//}
}

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

@ -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>>()
)
);
}
)
)
);
}
}
}

@ -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
);
}

@ -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)
{
}

@ -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