Open Source Web Application Framework for ASP.NET Core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

121 lines
4.0 KiB

using Markdig;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.Ui.LayoutHooks;
using Volo.Abp.AutoMapper;
using Volo.Abp.Caching;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.Http.ProxyScripting.Generators.JQuery;
using Volo.Abp.Modularity;
using Volo.Abp.UI.Navigation;
using Volo.Abp.VirtualFileSystem;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Localization;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Public.Web.Menus;
using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.GlobalResources.Script;
using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.GlobalResources.Style;
using Volo.CmsKit.Web;
namespace Volo.CmsKit.Public.Web;
[DependsOn(
typeof(CmsKitPublicApplicationContractsModule),
typeof(CmsKitCommonWebModule)
)]
public class CmsKitPublicWebModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
context.Services.PreConfigure<AbpMvcDataAnnotationsLocalizationOptions>(options =>
{
options.AddAssemblyResource(
typeof(CmsKitResource),
typeof(CmsKitPublicWebModule).Assembly,
typeof(CmsKitPublicApplicationContractsModule).Assembly,
typeof(CmsKitCommonApplicationContractsModule).Assembly
);
});
PreConfigure<IMvcBuilder>(mvcBuilder =>
{
mvcBuilder.AddApplicationPartIfNotExists(typeof(CmsKitPublicWebModule).Assembly);
});
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpNavigationOptions>(options =>
{
options.MenuContributors.Add(new CmsKitPublicMenuContributor());
options.MainMenuNames.Add(CmsKitMenus.Public);
});
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<CmsKitPublicWebModule>("Volo.CmsKit.Public.Web");
});
context.Services.AddAutoMapperObjectMapper<CmsKitPublicWebModule>();
Configure<AbpAutoMapperOptions>(options =>
{
options.AddMaps<CmsKitPublicWebModule>(validate: true);
});
context.Services
.AddSingleton(_ => new MarkdownPipelineBuilder()
.UseAutoLinks()
.UseBootstrap()
.UseGridTables()
.UsePipeTables()
.Build());
Configure<DynamicJavaScriptProxyOptions>(options =>
{
options.DisableModule(CmsKitPublicRemoteServiceConsts.ModuleName);
});
Configure<AbpDistributedCacheOptions>(options =>
{
options.KeyPrefix = "CmsKit:";
});
}
public override void PostConfigureServices(ServiceConfigurationContext context)
{
if (GlobalFeatureManager.Instance.IsEnabled<PagesFeature>())
{
Configure<RazorPagesOptions>(options =>
{
options.Conventions.AddPageRoute("/Public/CmsKit/Pages/Index", PageConsts.UrlPrefix + "{slug:minlength(1)}");
options.Conventions.AddPageRoute("/Public/CmsKit/Blogs/Index", @"/blogs/{blogSlug:minlength(1)}");
options.Conventions.AddPageRoute("/Public/CmsKit/Blogs/BlogPost", @"/blogs/{blogSlug}/{blogPostSlug:minlength(1)}");
});
}
if (GlobalFeatureManager.Instance.IsEnabled<GlobalResourcesFeature>())
{
Configure<AbpLayoutHookOptions>(options =>
{
options.Add(
LayoutHooks.Head.Last,
typeof(GlobalStyleViewComponent)
);
options.Add(
LayoutHooks.Body.Last,
typeof(GlobalScriptViewComponent)
);
});
}
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
app.UseHomePageDefaultMiddleware();
}
}