Browse Source

#1185 Created DocsUrlOptions

pull/1192/head
Halil ibrahim Kalkan 7 years ago
parent
commit
b42a64d851
  1. 10
      modules/docs/app/VoloDocs.Web/Pages/Index.cshtml.cs
  2. 5
      modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs
  3. 3
      modules/docs/src/Volo.Docs.HttpApi/Volo/Docs/Projects/DocsProjectController.cs
  4. 13
      modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs
  5. 10
      modules/docs/src/Volo.Docs.Web/DocsUrlOptions.cs
  6. 15
      modules/docs/src/Volo.Docs.Web/DocsWebModule.cs
  7. 15
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml.cs
  8. 13
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

10
modules/docs/app/VoloDocs.Web/Pages/Index.cshtml.cs

@ -1,22 +1,22 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Options;
using Volo.Docs;
using Volo.Docs.Projects;
namespace VoloDocs.Web.Pages
{
public class IndexModel : PageModel
{
private readonly DocsUrlOptions _urlOptions;
public IndexModel()
public IndexModel(IOptions<DocsUrlOptions> urlOptions)
{
_urlOptions = urlOptions.Value;
}
public IActionResult OnGet()
{
//TODO: Create HomeController & Index instead of Page. Otherwise, we have an empty Index.cshtml file.
return Redirect("./documents");
}
}

5
modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs

@ -62,6 +62,11 @@ namespace VoloDocs.Web
var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration();
Configure<DocsUrlOptions>(options =>
{
options.RoutePrefix = null;
});
Configure<DbConnectionOptions>(options =>
{
options.ConnectionStrings.Default = configuration["ConnectionString"];

3
modules/docs/src/Volo.Docs.HttpApi/Volo/Docs/Projects/DocsProjectController.cs

@ -1,5 +1,4 @@
using System;
using System.Threading.Tasks;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;

13
modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs

@ -2,8 +2,7 @@
using System.Linq;
using System.Text;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Microsoft.Extensions.Configuration;
using Volo.Abp.Configuration;
using Microsoft.Extensions.Options;
using Volo.Docs.Documents;
using Volo.Docs.Utils;
@ -14,7 +13,7 @@ namespace Volo.Docs.Areas.Documents.TagHelpers
[HtmlTargetElement("ul", Attributes = "root-node")]
public class TreeTagHelper : TagHelper
{
private readonly IConfigurationRoot _configuration;
private readonly DocsUrlOptions _urlOptions;
private const string LiItemTemplateWithLink = @"<li class='{0}'><span class='plus-icon'><i class='fa fa-{1}'></i></span>{2}{3}</li>";
@ -42,9 +41,9 @@ namespace Volo.Docs.Areas.Documents.TagHelpers
[HtmlAttributeName("language")]
public string LanguageCode { get; set; }
public TreeTagHelper(IConfigurationAccessor configurationAccessor)
public TreeTagHelper(IOptions<DocsUrlOptions> urlOptions)
{
_configuration = configurationAccessor.Configuration;
_urlOptions = urlOptions.Value;
}
public override void Process(TagHelperContext context, TagHelperOutput output)
@ -143,7 +142,9 @@ namespace Volo.Docs.Areas.Documents.TagHelpers
return "javascript:;";
}
var prefix = Convert.ToBoolean(_configuration["IncludeDocumentPrefixInUrl"]) ? "documents/" : "";
var prefix = _urlOptions.RoutePrefix.IsNullOrEmpty()
? ""
: _urlOptions.RoutePrefix.EnsureEndsWith('/');
return "/" + prefix + LanguageCode + "/" + ProjectName + "/" + Version + "/" + pathWithoutFileExtension;
}

10
modules/docs/src/Volo.Docs.Web/DocsUrlOptions.cs

@ -0,0 +1,10 @@
namespace Volo.Docs
{
public class DocsUrlOptions
{
/// <summary>
/// Default value: "documents";
/// </summary>
public string RoutePrefix { get; set; } = "documents";
}
}

15
modules/docs/src/Volo.Docs.Web/DocsWebModule.cs

@ -1,6 +1,7 @@
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;
@ -40,11 +41,17 @@ namespace Volo.Docs
Configure<RazorPagesOptions>(options =>
{
var prefix = Convert.ToBoolean(configuration["IncludeDocumentPrefixInUrl"]) ? "documents/" : "";
var urlOptions = context.Services
.GetRequiredServiceLazy<IOptions<DocsUrlOptions>>()
.Value;
options.Conventions.AddPageRoute("/Documents/Project/Index", prefix + "{projectName}");
options.Conventions.AddPageRoute("/Documents/Project/Index", prefix + "{languageCode}/{projectName}");
options.Conventions.AddPageRoute("/Documents/Project/Index", prefix + "{languageCode}/{projectName}/{version}/{*documentName}");
var routePrefix = urlOptions.Value.RoutePrefix.IsNullOrEmpty()
? ""
: urlOptions.Value.RoutePrefix.EnsureEndsWith('/');
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}");
});
Configure<AbpAutoMapperOptions>(options =>

15
modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml.cs

@ -3,8 +3,7 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Configuration;
using Volo.Abp.Configuration;
using Microsoft.Extensions.Options;
using Volo.Docs.Projects;
namespace Volo.Docs.Pages.Documents
@ -16,17 +15,21 @@ namespace Volo.Docs.Pages.Documents
public IReadOnlyList<ProjectDto> Projects { get; set; }
private readonly IProjectAppService _projectAppService;
private readonly IConfigurationRoot _configuration;
private readonly DocsUrlOptions _urlOptions;
public IndexModel(IProjectAppService projectAppService, IConfigurationAccessor configurationAccessor)
public IndexModel(
IProjectAppService projectAppService,
IOptions<DocsUrlOptions> urlOptions)
{
_configuration = configurationAccessor.Configuration;
_projectAppService = projectAppService;
_urlOptions = urlOptions.Value;
}
public async Task<IActionResult> OnGetAsync()
{
DocumentsUrlPrefix = Convert.ToBoolean(_configuration["IncludeDocumentPrefixInUrl"]) ? "documents/" : "";
DocumentsUrlPrefix = _urlOptions.RoutePrefix.IsNullOrEmpty()
? ""
: _urlOptions.RoutePrefix.EnsureEndsWith('/');
var listResult = await _projectAppService.GetListAsync();

13
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

@ -5,9 +5,9 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
using Volo.Abp.Configuration;
using Volo.Abp.Localization;
using Volo.Docs.Documents;
using Volo.Docs.HtmlConverting;
using Volo.Docs.Models;
@ -57,22 +57,27 @@ namespace Volo.Docs.Pages.Documents.Project
private readonly IDocumentToHtmlConverterFactory _documentToHtmlConverterFactory;
private readonly IProjectAppService _projectAppService;
private readonly IConfigurationRoot _configuration;
private readonly DocsUrlOptions _options;
public IndexModel(
IDocumentAppService documentAppService,
IDocumentToHtmlConverterFactory documentToHtmlConverterFactory,
IProjectAppService projectAppService,
IConfigurationAccessor configurationAccessor)
IConfigurationAccessor configurationAccessor,
IOptions<DocsUrlOptions> options)
{
_documentAppService = documentAppService;
_documentToHtmlConverterFactory = documentToHtmlConverterFactory;
_projectAppService = projectAppService;
_configuration = configurationAccessor.Configuration;
_options = options.Value;
}
public async Task<IActionResult> OnGetAsync()
{
DocumentsUrlPrefix = Convert.ToBoolean(_configuration["IncludeDocumentPrefixInUrl"]) ? "documents/" : "";
DocumentsUrlPrefix = _options.RoutePrefix.IsNullOrEmpty()
? ""
: _options.RoutePrefix.EnsureEndsWith('/');
await SetProjectAsync();
await SetProjectsAsync();
@ -234,7 +239,7 @@ namespace Volo.Docs.Pages.Documents.Project
version = DocsAppConsts.Latest;
}
var link = "/documents/" + LanguageCode + "/" + ProjectName + "/" + version;
var link = DocumentsUrlPrefix.EnsureStartsWith('/') + LanguageCode + "/" + ProjectName + "/" + version;
if (documentName != null)
{

Loading…
Cancel
Save