docs module: set latest stable version as latest when there is a prerelease

pull/4782/head
Yunus Emre Kalkan 5 years ago
parent 2c9f32b3bb
commit 3747b2b579

@ -53,7 +53,7 @@
<nav class="navbar navbar-logo"> <nav class="navbar navbar-logo">
@if (!Model.Project.Name.IsNullOrWhiteSpace()) @if (!Model.Project.Name.IsNullOrWhiteSpace())
{ {
<a class="navbar-brand w-100" href="@Model.CreateVersionLink(Model.LatestVersionInfo, Model.GetSpecificVersionOrLatest())"> <a class="navbar-brand w-100" href="@Model.CreateVersionLink(Model.LatestStableVersionInfo, Model.GetSpecificVersionOrLatest())">
<span id="ProjectName">@Model.Project.Name</span><br> <span id="ProjectName">@Model.Project.Name</span><br>
<strong class="display-block"> <strong class="display-block">
@L["Documents"] @L["Documents"]
@ -173,7 +173,7 @@
else else
{ {
<ul root-node="@Model.Navigation" <ul root-node="@Model.Navigation"
version="@(Model.LatestVersionInfo == null || Model.LatestVersionInfo.IsSelected ? DocsAppConsts.Latest : Model.Version)" version="@(Model.LatestStableVersionInfo == null || Model.LatestStableVersionInfo.IsSelected ? DocsAppConsts.Latest : Model.Version)"
project-name="@Model.ProjectName" project-name="@Model.ProjectName"
project-format="@Model.Project.Format" project-format="@Model.Project.Format"
selected-document-name="@Model.DocumentNameWithExtension" selected-document-name="@Model.DocumentNameWithExtension"
@ -242,8 +242,8 @@
} }
</div> </div>
</div> </div>
</div> </div>
@ -374,7 +374,7 @@ else
model = new ErrorPageModel model = new ErrorPageModel
{ {
RedirectUrl = Model.DocumentsUrlPrefix + Model.LanguageCode + "/" + Model.ProjectName + "/" RedirectUrl = Model.DocumentsUrlPrefix + Model.LanguageCode + "/" + Model.ProjectName + "/"
+ (Model.LatestVersionInfo.IsSelected ? DocsAppConsts.Latest : Model.Version), + (Model.LatestStableVersionInfo.IsSelected ? DocsAppConsts.Latest : Model.Version),
ErrorCode = "404", ErrorCode = "404",
ErrorMessage = L.GetString("DocumentNotFound"), ErrorMessage = L.GetString("DocumentNotFound"),
AutoRedirect = !Model.DocumentName.IsNullOrWhiteSpace() AutoRedirect = !Model.DocumentName.IsNullOrWhiteSpace()

@ -16,6 +16,7 @@ using Volo.Docs.Documents;
using Volo.Docs.HtmlConverting; using Volo.Docs.HtmlConverting;
using Volo.Docs.Models; using Volo.Docs.Models;
using Volo.Docs.Projects; using Volo.Docs.Projects;
using Volo.Docs.Utils;
namespace Volo.Docs.Pages.Documents.Project namespace Volo.Docs.Pages.Documents.Project
{ {
@ -57,7 +58,7 @@ namespace Volo.Docs.Pages.Documents.Project
public NavigationNode Navigation { get; private set; } public NavigationNode Navigation { get; private set; }
public VersionInfoViewModel LatestVersionInfo { get; private set; } public VersionInfoViewModel LatestStableVersionInfo { get; private set; }
public string DocumentsUrlPrefix { get; set; } public string DocumentsUrlPrefix { get; set; }
@ -201,7 +202,7 @@ namespace Volo.Docs.Pages.Documents.Project
private IActionResult ReloadPageWithCulture() private IActionResult ReloadPageWithCulture()
{ {
var returnUrl = DocumentsUrlPrefix + LanguageCode + "/" + ProjectName + "/" var returnUrl = DocumentsUrlPrefix + LanguageCode + "/" + ProjectName + "/"
+ (LatestVersionInfo.IsSelected ? DocsAppConsts.Latest : Version) + "/" + + (LatestStableVersionInfo.IsSelected ? DocsAppConsts.Latest : Version) + "/" +
DocumentName; DocumentName;
return Redirect("/Abp/Languages/Switch?culture=" + LanguageCode + "&uiCulture=" + LanguageCode + "&returnUrl=" + returnUrl); return Redirect("/Abp/Languages/Switch?culture=" + LanguageCode + "&uiCulture=" + LanguageCode + "&returnUrl=" + returnUrl);
@ -212,7 +213,7 @@ namespace Volo.Docs.Pages.Documents.Project
return RedirectToPage(new return RedirectToPage(new
{ {
projectName = ProjectName, projectName = ProjectName,
version = (LatestVersionInfo.IsSelected ? DocsAppConsts.Latest : Version), version = (LatestStableVersionInfo.IsSelected ? DocsAppConsts.Latest : Version),
languageCode = DefaultLanguageCode, languageCode = DefaultLanguageCode,
documentName = DocumentName documentName = DocumentName
}); });
@ -223,7 +224,7 @@ namespace Volo.Docs.Pages.Documents.Project
return RedirectToPage(new return RedirectToPage(new
{ {
projectName = ProjectName, projectName = ProjectName,
version = (LatestVersionInfo.IsSelected ? DocsAppConsts.Latest : Version), version = (LatestStableVersionInfo.IsSelected ? DocsAppConsts.Latest : Version),
documentName = "", documentName = "",
languageCode = DefaultLanguageCode languageCode = DefaultLanguageCode
}); });
@ -256,13 +257,14 @@ namespace Volo.Docs.Pages.Documents.Project
if (versions.Any()) if (versions.Any())
{ {
LatestVersionInfo = versions.First(); LatestStableVersionInfo = versions.FirstOrDefault(v => !VersionHelper.IsPreRelease(v.Version)) ?? versions.First();
LatestVersionInfo.DisplayText = $"{LatestVersionInfo.DisplayText} ({DocsAppConsts.Latest})";
LatestStableVersionInfo.DisplayText = $"{LatestStableVersionInfo.DisplayText} ({DocsAppConsts.Latest})";
if (string.Equals(Version, DocsAppConsts.Latest, StringComparison.OrdinalIgnoreCase)) if (string.Equals(Version, DocsAppConsts.Latest, StringComparison.OrdinalIgnoreCase))
{ {
LatestVersionInfo.IsSelected = true; LatestStableVersionInfo.IsSelected = true;
Version = LatestVersionInfo.Version; Version = LatestStableVersionInfo.Version;
} }
else else
{ {
@ -274,14 +276,14 @@ namespace Volo.Docs.Pages.Documents.Project
} }
else else
{ {
versions.First().IsSelected = true; LatestStableVersionInfo.IsSelected = true;
Version = versions.First().Version; Version = LatestStableVersionInfo.Version;
} }
} }
} }
else else
{ {
LatestVersionInfo = new VersionInfoViewModel( LatestStableVersionInfo = new VersionInfoViewModel(
$"{DocsAppConsts.Latest}", $"{DocsAppConsts.Latest}",
DocsAppConsts.Latest, DocsAppConsts.Latest,
true); true);
@ -290,7 +292,7 @@ namespace Volo.Docs.Pages.Documents.Project
VersionSelectItems = versions.Select(v => new SelectListItem VersionSelectItems = versions.Select(v => new SelectListItem
{ {
Text = v.DisplayText, Text = v.DisplayText,
Value = CreateVersionLink(LatestVersionInfo, v.Version, DocumentName), Value = CreateVersionLink(LatestStableVersionInfo, v.Version, DocumentName),
Selected = v.IsSelected Selected = v.IsSelected
}).ToList(); }).ToList();
} }
@ -338,7 +340,7 @@ namespace Volo.Docs.Pages.Documents.Project
return DocsAppConsts.Latest; return DocsAppConsts.Latest;
} }
return Document.Version == LatestVersionInfo.Version ? return Document.Version == LatestStableVersionInfo.Version ?
DocsAppConsts.Latest : DocsAppConsts.Latest :
Document.Version; Document.Version;
} }
@ -377,7 +379,7 @@ namespace Volo.Docs.Pages.Documents.Project
LanguageSelectListItems.Add( LanguageSelectListItems.Add(
new SelectListItem( new SelectListItem(
language.DisplayName, language.DisplayName,
DocumentsUrlPrefix + language.Code + "/" + Project.ShortName + "/" + (LatestVersionInfo.IsSelected ? DocsAppConsts.Latest : Version) + "/" + DocumentName, DocumentsUrlPrefix + language.Code + "/" + Project.ShortName + "/" + (LatestStableVersionInfo.IsSelected ? DocsAppConsts.Latest : Version) + "/" + DocumentName,
language.Code == LanguageCode language.Code == LanguageCode
) )
); );
@ -546,7 +548,7 @@ namespace Volo.Docs.Pages.Documents.Project
} }
} }
public async Task SetDocumentPreferencesAsync() private async Task SetDocumentPreferencesAsync()
{ {
var projectParameters = await _documentAppService.GetParametersAsync( var projectParameters = await _documentAppService.GetParametersAsync(
new GetParametersDocumentInput new GetParametersDocumentInput

@ -10,6 +10,7 @@ using Volo.Docs.Documents;
using Volo.Docs.HtmlConverting; using Volo.Docs.HtmlConverting;
using Volo.Docs.Models; using Volo.Docs.Models;
using Volo.Docs.Projects; using Volo.Docs.Projects;
using Volo.Docs.Utils;
namespace Volo.Docs.Pages.Documents namespace Volo.Docs.Pages.Documents
{ {
@ -61,7 +62,7 @@ namespace Volo.Docs.Pages.Documents
if (versions.Any() && string.Equals(Version, DocsAppConsts.Latest, StringComparison.OrdinalIgnoreCase)) if (versions.Any() && string.Equals(Version, DocsAppConsts.Latest, StringComparison.OrdinalIgnoreCase))
{ {
Version = versions.First().Name; Version = (versions.FirstOrDefault(v=> !VersionHelper.IsPreRelease(v.Name)) ?? versions.First()).Name;
} }
SearchOutputs = await _documentAppService.SearchAsync(new DocumentSearchInput SearchOutputs = await _documentAppService.SearchAsync(new DocumentSearchInput

@ -0,0 +1,11 @@
namespace Volo.Docs.Utils
{
public static class VersionHelper
{
public static bool IsPreRelease(string version)
{
return (version?.Split("-").Length ?? 0) > 1;
}
}
}
Loading…
Cancel
Save