mirror of https://github.com/abpframework/abp.git
3 changed files with 82 additions and 19 deletions
@ -1,19 +0,0 @@ |
|||
using Volo.Abp.AspNetCore.Mvc; |
|||
|
|||
namespace VoloDocs.Web.Controllers |
|||
{ |
|||
public class HomeController : AbpController |
|||
{ |
|||
public void Index() |
|||
{ |
|||
//if (!_urlUiOptions.RoutePrefix.IsNullOrWhiteSpace())
|
|||
//{
|
|||
// return Redirect("." + _urlUiOptions.RoutePrefix);
|
|||
//}
|
|||
|
|||
//return Page();
|
|||
|
|||
//return Redirect("/en/abp/latest");
|
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
@page |
|||
@model VoloDocs.Web.Pages.IndexModel |
|||
@{ |
|||
} |
|||
|
|||
@if (!Model.Projects.Any()) |
|||
{ |
|||
<abp-alert alert-type="Warning"> |
|||
<strong>No projects found!</strong><br /> |
|||
See <a href=" https://docs.abp.io/en/abp/latest/Modules/Docs">documentation</a> to see how you can create a new one. |
|||
</abp-alert> |
|||
} |
|||
else |
|||
{ |
|||
<h1>Projects</h1> |
|||
|
|||
<abp-list-group class="mt-5"> |
|||
@foreach (var project in Model.Projects) |
|||
{ |
|||
<abp-list-group-item href="@Model.GetUrlForProject(project)">@project.Name</abp-list-group-item> |
|||
} |
|||
</abp-list-group> |
|||
} |
|||
@ -0,0 +1,59 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
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 |
|||
{ |
|||
public IReadOnlyList<ProjectDto> Projects { get; set; } |
|||
|
|||
private readonly DocsUiOptions _urlUiOptions; |
|||
|
|||
private readonly IProjectAppService _projectAppService; |
|||
|
|||
public IndexModel(IOptions<DocsUiOptions> urlOptions, IProjectAppService projectAppService) |
|||
{ |
|||
_projectAppService = projectAppService; |
|||
_urlUiOptions = urlOptions.Value; |
|||
} |
|||
|
|||
public async Task<IActionResult> OnGetAsync() |
|||
{ |
|||
var projects = await _projectAppService.GetListAsync(); |
|||
|
|||
if (projects.Items.Count == 1) |
|||
{ |
|||
return await RedirectToProjectAsync(projects.Items.First()); |
|||
} |
|||
else if (projects.Items.Count > 1) |
|||
{ |
|||
Projects = projects.Items; |
|||
} |
|||
|
|||
return Page(); |
|||
} |
|||
|
|||
private async Task<IActionResult> RedirectToProjectAsync(ProjectDto project, string language = "en", string version = null) |
|||
{ |
|||
var path = GetUrlForProject(project, language, version); |
|||
return await Task.FromResult(Redirect(path)); |
|||
} |
|||
|
|||
//Eg: "/en/abp/latest"
|
|||
public string GetUrlForProject(ProjectDto project, string language = "en", string version = null) |
|||
{ |
|||
return "." + |
|||
_urlUiOptions.RoutePrefix.EnsureStartsWith('/').EnsureEndsWith('/') + |
|||
language.EnsureEndsWith('/') + |
|||
project.ShortName.EnsureEndsWith('/') + |
|||
(version ?? DocsAppConsts.Latest); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue