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(options => { options.AddAssemblyResource( typeof(CmsKitResource), typeof(CmsKitPublicWebModule).Assembly, typeof(CmsKitPublicApplicationContractsModule).Assembly, typeof(CmsKitCommonApplicationContractsModule).Assembly ); }); PreConfigure(mvcBuilder => { mvcBuilder.AddApplicationPartIfNotExists(typeof(CmsKitPublicWebModule).Assembly); }); } public override void ConfigureServices(ServiceConfigurationContext context) { Configure(options => { options.MenuContributors.Add(new CmsKitPublicMenuContributor()); options.MainMenuNames.Add(CmsKitMenus.Public); }); Configure(options => { options.FileSets.AddEmbedded("Volo.CmsKit.Public.Web"); }); context.Services.AddAutoMapperObjectMapper(); Configure(options => { options.AddMaps(validate: true); }); context.Services .AddSingleton(_ => new MarkdownPipelineBuilder() .UseAutoLinks() .UseBootstrap() .UseGridTables() .UsePipeTables() .Build()); Configure(options => { options.DisableModule(CmsKitPublicRemoteServiceConsts.ModuleName); }); Configure(options => { options.KeyPrefix = "CmsKit:"; }); } public override void PostConfigureServices(ServiceConfigurationContext context) { if (GlobalFeatureManager.Instance.IsEnabled()) { Configure(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()) { Configure(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(); if (GlobalFeatureManager.Instance.IsEnabled()) { app.UseHomePageDefaultMiddleware(); } } }