using System; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; using Volo.Abp.AspNetCore.Mvc.UI.Bundling; using Volo.Abp.Ui.LayoutHooks; using Volo.Abp.AspNetCore.Mvc.UI.Packages; using Volo.Abp.AspNetCore.Mvc.UI.Packages.Prismjs; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AutoMapper; using Volo.Abp.Http.ProxyScripting.Generators.JQuery; using Volo.Abp.Modularity; using Volo.Abp.VirtualFileSystem; using Volo.Docs.Bundling; using Volo.Docs.HtmlConverting; using Volo.Docs.Localization; using Volo.Docs.Markdown; using Volo.Docs.Pages.Shared.Components.Head; namespace Volo.Docs { [DependsOn( typeof(DocsApplicationContractsModule), typeof(AbpAutoMapperModule), typeof(AbpAspNetCoreMvcUiBootstrapModule), typeof(AbpAspNetCoreMvcUiThemeSharedModule), typeof(AbpAspNetCoreMvcUiPackagesModule), typeof(AbpAspNetCoreMvcUiBundlingModule) )] public class DocsWebModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { PreConfigure(options => { options.AddAssemblyResource(typeof(DocsResource), typeof(DocsWebModule).Assembly); }); PreConfigure(mvcBuilder => { mvcBuilder.AddApplicationPartIfNotExists(typeof(DocsWebModule).Assembly); }); } public override void ConfigureServices(ServiceConfigurationContext context) { Configure(options => { options.FileSets.AddEmbedded(); }); var configuration = context.Services.GetConfiguration(); Configure(options => { var docsOptions = context.Services .GetRequiredServiceLazy>() .Value.Value; var routePrefix = docsOptions.RoutePrefix; options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{projectName}"); options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}/{projectName}"); options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}/{projectName}/{version}/{*documentName}"); options.Conventions.AddPageRoute("/Documents/Search", routePrefix + "search/{languageCode}/{projectName}/{version}"); }); context.Services.AddAutoMapperObjectMapper(); Configure(options => { options.AddProfile(validate: true); }); Configure(options => { options.Converters[MarkdownDocumentToHtmlConverter.Type] = typeof(MarkdownDocumentToHtmlConverter); }); Configure(options => { options .Extensions() .Add(); options .Extensions() .Add(); }); Configure(options => { options.DisableModule(DocsRemoteServiceConsts.ModuleName); }); Configure(options => { options.Add(LayoutHooks.Head.Last, typeof(HeadViewComponent)); }); } } }