From 4b447e0e16f1e000487bfc819cbf9fbf35b5f09a Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Thu, 1 Nov 2018 16:07:47 +0300 Subject: [PATCH] Refactored docs --- .../Docs/Documents/ContentWithDetailsDto.cs | 75 ------------------- .../Docs/Documents/IDocumentAppService.cs | 21 +++++- .../Volo/Docs/Documents/NavigationNode.cs | 53 +++++++++++++ .../Documents/NavigationWithDetailsDto.cs | 30 ++++++++ .../Volo/Docs/Projects/IProjectAppService.cs | 2 +- .../Volo/Docs/Projects/ProjectDto.cs | 5 -- .../Volo/Docs/Documents/DocumentAppService.cs | 6 +- .../Volo/Docs/Projects/ProjectAppService.cs | 8 +- .../Volo/Docs/Projects/IProjectRepository.cs | 2 +- .../Docs/Projects/EfCoreProjectRepository.cs | 12 ++- .../Pages/Documents/Project/Index.cshtml.cs | 2 +- 11 files changed, 118 insertions(+), 98 deletions(-) create mode 100644 modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/NavigationNode.cs create mode 100644 modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/NavigationWithDetailsDto.cs diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs index cfafa8d972..c64614e814 100644 --- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Newtonsoft.Json; using Volo.Docs.Projects; namespace Volo.Docs.Documents @@ -30,75 +26,4 @@ namespace Volo.Docs.Documents public bool SuccessfullyRetrieved { get; set; } } - - public class NavigationNode - { - [JsonProperty("text")] - public string Text { get; set; } - - [JsonProperty("path")] - public string Path { get; set; } - - [JsonProperty("items")] - public List Items { get; set; } - - public bool IsLeaf => !HasChildItems; - - public bool HasChildItems => Items != null && Items.Any(); - - public bool IsEmpty => Text == null && Path == null; - - public bool IsSelected(string documentName) - { - if (documentName == null) - { - return false; - } - - if (string.Equals(documentName, Path, StringComparison.OrdinalIgnoreCase)) - { - return true; - } - - if (Items == null) - { - return false; - } - - foreach (var childItem in Items) - { - if (childItem.IsSelected(documentName)) - { - return true; - } - } - - return false; - } - } - - public class NavigationWithDetailsDto : DocumentWithDetailsDto - { - [JsonProperty("items")] - public NavigationNode RootNode { get; set; } - - public void ConvertItems() - { - if (!SuccessfullyRetrieved || Content.IsNullOrEmpty()) - { - RootNode = new NavigationNode(); - return; - } - - try - { - RootNode = JsonConvert.DeserializeObject(Content); - } - catch (JsonException ex) - { - //todo: should log the exception? - RootNode = new NavigationNode(); - } - } - } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/IDocumentAppService.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/IDocumentAppService.cs index f99312f439..63dcaccbb0 100644 --- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/IDocumentAppService.cs +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/IDocumentAppService.cs @@ -7,14 +7,27 @@ namespace Volo.Docs.Documents { public interface IDocumentAppService : IApplicationService { - Task GetByNameAsync(string projectShortName, string documentName, string version, + Task GetByNameAsync( + string projectShortName, + string documentName, + string version, bool normalize); - Task GetNavigationDocumentAsync(string projectShortName, string version, + Task GetNavigationDocumentAsync( + string projectShortName, + string version, bool normalize); - Task> GetVersions(string projectShortName, string defaultDocumentName, string documentStoreType, string documentName); + Task> GetVersions( + string projectShortName, + string defaultDocumentName, + string documentStoreType, + string documentName); - Task GetDocument(ProjectDto projectDto, string documentName, string version, bool normalize); + Task GetDocument( + ProjectDto projectDto, + string documentName, + string version, + bool normalize); } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/NavigationNode.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/NavigationNode.cs new file mode 100644 index 0000000000..c8996a4837 --- /dev/null +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/NavigationNode.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json; + +namespace Volo.Docs.Documents +{ + public class NavigationNode + { + [JsonProperty("text")] + public string Text { get; set; } + + [JsonProperty("path")] + public string Path { get; set; } + + [JsonProperty("items")] + public List Items { get; set; } + + public bool IsLeaf => !HasChildItems; + + public bool HasChildItems => Items != null && Items.Any(); + + public bool IsEmpty => Text == null && Path == null; + + public bool IsSelected(string documentName) + { + if (documentName == null) + { + return false; + } + + if (string.Equals(documentName, Path, StringComparison.OrdinalIgnoreCase)) + { + return true; + } + + if (Items == null) + { + return false; + } + + foreach (var childItem in Items) + { + if (childItem.IsSelected(documentName)) + { + return true; + } + } + + return false; + } + } +} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/NavigationWithDetailsDto.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/NavigationWithDetailsDto.cs new file mode 100644 index 0000000000..4624a33bf8 --- /dev/null +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/NavigationWithDetailsDto.cs @@ -0,0 +1,30 @@ +using System; +using Newtonsoft.Json; + +namespace Volo.Docs.Documents +{ + public class NavigationWithDetailsDto : DocumentWithDetailsDto + { + [JsonProperty("items")] + public NavigationNode RootNode { get; set; } + + public void ConvertItems() + { + if (!SuccessfullyRetrieved || Content.IsNullOrEmpty()) + { + RootNode = new NavigationNode(); + return; + } + + try + { + RootNode = JsonConvert.DeserializeObject(Content); + } + catch (JsonException ex) + { + //todo: should log the exception? + RootNode = new NavigationNode(); + } + } + } +} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/IProjectAppService.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/IProjectAppService.cs index 92c2a49aeb..6884bdc90e 100644 --- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/IProjectAppService.cs +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/IProjectAppService.cs @@ -8,6 +8,6 @@ namespace Volo.Docs.Projects { Task> GetListAsync(); - Task FindByShortNameAsync(string shortName); + Task GetByShortNameAsync(string shortName); } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/ProjectDto.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/ProjectDto.cs index b07138e9ac..2f12ecc2e6 100644 --- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/ProjectDto.cs +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/ProjectDto.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using Volo.Abp.Application.Dtos; namespace Volo.Docs.Projects @@ -12,10 +11,6 @@ namespace Volo.Docs.Projects public string DefaultDocumentName { get; set; } - public string NavigationDocumentName { get; set; } - - public string GoogleCustomSearchId { get; set; } - public string MainWebsiteUrl { get; set; } public virtual string DocumentStoreType { get; protected set; } diff --git a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs index d70b742650..d5d624cfe2 100644 --- a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs +++ b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs @@ -27,14 +27,14 @@ namespace Volo.Docs.Documents public async Task GetByNameAsync(string projectShortName, string documentName, string version, bool normalize) { - var project = await _projectRepository.FindByShortNameAsync(projectShortName); + var project = await _projectRepository.GetByShortNameAsync(projectShortName); return await GetDocument(ObjectMapper.Map(project), documentName, version, normalize); } public async Task GetNavigationDocumentAsync(string projectShortName, string version, bool normalize) { - var project = await _projectRepository.FindByShortNameAsync(projectShortName); + var project = await _projectRepository.GetByShortNameAsync(projectShortName); return ObjectMapper.Map( await GetDocument(ObjectMapper.Map(project), project.NavigationDocumentName, @@ -69,7 +69,7 @@ namespace Volo.Docs.Documents public async Task> GetVersions(string projectShortName, string defaultDocumentName, string documentStoreType, string documentName) { - var project = await _projectRepository.FindByShortNameAsync(projectShortName); + var project = await _projectRepository.GetByShortNameAsync(projectShortName); if (string.IsNullOrWhiteSpace(documentName)) { diff --git a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Projects/ProjectAppService.cs b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Projects/ProjectAppService.cs index 1af6da31c6..494064d925 100644 --- a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Projects/ProjectAppService.cs +++ b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Projects/ProjectAppService.cs @@ -24,13 +24,9 @@ namespace Volo.Docs.Projects ); } - public async Task FindByShortNameAsync(string shortName) + public async Task GetByShortNameAsync(string shortName) { - var project = await _projectRepository.FindByShortNameAsync(shortName); - if (project == null) - { - throw new EntityNotFoundException($"Project with the name {shortName} not found!"); - } + var project = await _projectRepository.GetByShortNameAsync(shortName); return ObjectMapper.Map(project); } diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/IProjectRepository.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/IProjectRepository.cs index 9c19877ffb..fdfe785df4 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/IProjectRepository.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/IProjectRepository.cs @@ -6,6 +6,6 @@ namespace Volo.Docs.Projects { public interface IProjectRepository : IBasicRepository { - Task FindByShortNameAsync(string shortName); + Task GetByShortNameAsync(string shortName); } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs index 7dbb69d1ce..e06fea3aba 100644 --- a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs +++ b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs @@ -1,6 +1,7 @@ using System; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; using Volo.Docs.EntityFrameworkCore; @@ -15,9 +16,16 @@ namespace Volo.Docs.Projects } - public async Task FindByShortNameAsync(string shortName) + public async Task GetByShortNameAsync(string shortName) { - return await DbSet.FirstOrDefaultAsync(p => p.ShortName == shortName); + var project = await DbSet.FirstOrDefaultAsync(p => p.ShortName == shortName); + + if (project == null) + { + throw new EntityNotFoundException($"Project with the name {shortName} not found!"); + } + + return project; } } } diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index f6159add10..5f8c30f4a1 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -55,7 +55,7 @@ namespace Volo.Docs.Pages.Documents.Project public async Task OnGet() { - var project = await _projectAppService.FindByShortNameAsync(ProjectName); + var project = await _projectAppService.GetByShortNameAsync(ProjectName); SetPageParams(project);