using Markdig; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AutoMapper; using Volo.Abp.GlobalFeatures; 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.Web; namespace Volo.CmsKit.Public.Web { [DependsOn( typeof(CmsKitPublicHttpApiModule), 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()); } 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)}"); }); } } } }