Browse Source

Refactoring

pull/8294/head
EngincanV 6 years ago
parent
commit
fde0e5a01d
  1. 2
      modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/IDocumentAppService.cs
  2. 45
      modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs
  3. 4
      modules/docs/src/Volo.Docs.HttpApi/Volo/Docs/Documents/DocsDocumentController.cs

2
modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/IDocumentAppService.cs

@ -20,6 +20,6 @@ namespace Volo.Docs.Documents
Task<bool> FullSearchEnabledAsync(); Task<bool> FullSearchEnabledAsync();
Task<List<string>> GetLinksAsync(); Task<List<string>> GetUrlsAsync(string prefix);
} }
} }

45
modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs

@ -194,13 +194,18 @@ namespace Volo.Docs.Documents
return await Task.FromResult(_docsElasticSearchOptions.Enable); return await Task.FromResult(_docsElasticSearchOptions.Enable);
} }
public async Task<List<string>> GetLinksAsync() public async Task<List<string>> GetUrlsAsync(string prefix)
{ {
var documentLinks = new List<string>(); var documentUrls = new List<string>();
var projects = await _projectRepository.GetListAsync(); var projects = await _projectRepository.GetListAsync();
foreach (var project in projects) foreach (var project in projects)
{ {
if (project.ShortName == "ABP Commercial" || project.Name == "ABP Commercial")
{
continue;
}
var documents = await _documentRepository.GetListByProjectId(project.Id); var documents = await _documentRepository.GetListByProjectId(project.Id);
foreach (var document in documents) foreach (var document in documents)
@ -214,53 +219,51 @@ namespace Volo.Docs.Documents
navigationNode.Items?.ForEach(node => navigationNode.Items?.ForEach(node =>
{ {
documentLinks.AddIfNotContains( documentUrls.AddIfNotContains(
GetDocumentLinks(node, documentLinks, document.LanguageCode, GetDocumentLinks(node, documentUrls, prefix, project.ShortName, document)
project.ShortName, document.Version, document.Format)
); );
}); });
} }
} }
return documentLinks; return documentUrls;
} }
private List<string> GetDocumentLinks(NavigationNode node, List<string> documentLinks, string languageName, private List<string> GetDocumentLinks(NavigationNode node, List<string> documentUrls, string prefix,
string shortName, string version, string format) string shortName, Document document)
{ {
if (!IsExternalLink(node.Path)) if (!IsExternalLink(node.Path))
{ {
documentLinks.AddIfNotContains(NormalizePath(node.Path, languageName, shortName, version, format)); documentUrls.AddIfNotContains(
NormalizePath(prefix, node.Path, shortName, document)
);
} }
node.Items?.ForEach(childNode => node.Items?.ForEach(childNode =>
{ {
GetDocumentLinks(childNode, documentLinks, languageName, shortName, version, format); GetDocumentLinks(childNode, documentUrls, prefix, shortName, document);
}); });
return documentLinks; return documentUrls;
} }
private string NormalizePath(string path, string languageCode, string projectName, string version, private string NormalizePath(string prefix, string path, string shortName, Document document)
string projectFormat)
{ {
var pathWithoutFileExtension = RemoveFileExtensionFromPath(path, projectFormat); var pathWithoutFileExtension = RemoveFileExtensionFromPath(path, document.Format);
var normalizedPath = prefix + document.LanguageCode + "/" + shortName + "/" + document.Version + "/" + pathWithoutFileExtension;
//TODO: get prefix from DocsUiOptions?
var prefix = "/";
return prefix + languageCode + "/" + projectName + "/" + version + "/" + pathWithoutFileExtension; return normalizedPath;
} }
private string RemoveFileExtensionFromPath(string path, string projectFormat) private string RemoveFileExtensionFromPath(string path, string format)
{ {
if (path == null) if (path == null)
{ {
return null; return null;
} }
return path.EndsWith("." + projectFormat) return path.EndsWith("." + format)
? path.Left(path.Length - projectFormat.Length - 1) ? path.Left(path.Length - format.Length - 1)
: path; : path;
} }

4
modules/docs/src/Volo.Docs.HttpApi/Volo/Docs/Documents/DocsDocumentController.cs

@ -63,9 +63,9 @@ namespace Volo.Docs.Documents
[HttpGet] [HttpGet]
[Route("links")] [Route("links")]
public Task<List<string>> GetLinksAsync() public Task<List<string>> GetUrlsAsync(string prefix)
{ {
return DocumentAppService.GetLinksAsync(); return DocumentAppService.GetUrlsAsync(prefix);
} }
[HttpGet] [HttpGet]

Loading…
Cancel
Save