diff --git a/modules/docs/Volo.Docs.sln b/modules/docs/Volo.Docs.sln
index 8d58433a93..3fe7cc736f 100644
--- a/modules/docs/Volo.Docs.sln
+++ b/modules/docs/Volo.Docs.sln
@@ -33,6 +33,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "admin-app", "admin-app", "{
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "public-app", "public-app", "{8B0CDFC9-E313-4323-9390-59CFFAAC60B5}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Docs.Admin.Application.Contracts", "src\Volo.Docs.Admin.Application.Contracts\Volo.Docs.Admin.Application.Contracts.csproj", "{37D483C8-400B-4127-A6D0-2EE4E80CB696}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Docs.Admin.Application", "src\Volo.Docs.Admin.Application\Volo.Docs.Admin.Application.csproj", "{823C51A7-40AB-45D8-8FB8-F212AF7E45F2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Docs.Admin.HttpApi", "src\Volo.Docs.Admin.HttpApi\Volo.Docs.Admin.HttpApi.csproj", "{262F38DB-62AF-427F-96E2-C6385C5AB695}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Docs.Admin.HttpApi.Client", "src\Volo.Docs.Admin.HttpApi.Client\Volo.Docs.Admin.HttpApi.Client.csproj", "{81EE378A-0DE1-47BA-86D9-08EF6317BB95}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Docs.Admin.Web", "src\Volo.Docs.Admin.Web\Volo.Docs.Admin.Web.csproj", "{116A6145-9D66-4867-B3EF-A464FAC47946}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -79,6 +89,26 @@ Global
{A5F88BCB-6B22-4E2D-AE89-AEF1E3DC727A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A5F88BCB-6B22-4E2D-AE89-AEF1E3DC727A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5F88BCB-6B22-4E2D-AE89-AEF1E3DC727A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {37D483C8-400B-4127-A6D0-2EE4E80CB696}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {37D483C8-400B-4127-A6D0-2EE4E80CB696}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {37D483C8-400B-4127-A6D0-2EE4E80CB696}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {37D483C8-400B-4127-A6D0-2EE4E80CB696}.Release|Any CPU.Build.0 = Release|Any CPU
+ {823C51A7-40AB-45D8-8FB8-F212AF7E45F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {823C51A7-40AB-45D8-8FB8-F212AF7E45F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {823C51A7-40AB-45D8-8FB8-F212AF7E45F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {823C51A7-40AB-45D8-8FB8-F212AF7E45F2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {262F38DB-62AF-427F-96E2-C6385C5AB695}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {262F38DB-62AF-427F-96E2-C6385C5AB695}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {262F38DB-62AF-427F-96E2-C6385C5AB695}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {262F38DB-62AF-427F-96E2-C6385C5AB695}.Release|Any CPU.Build.0 = Release|Any CPU
+ {81EE378A-0DE1-47BA-86D9-08EF6317BB95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {81EE378A-0DE1-47BA-86D9-08EF6317BB95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {81EE378A-0DE1-47BA-86D9-08EF6317BB95}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {81EE378A-0DE1-47BA-86D9-08EF6317BB95}.Release|Any CPU.Build.0 = Release|Any CPU
+ {116A6145-9D66-4867-B3EF-A464FAC47946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {116A6145-9D66-4867-B3EF-A464FAC47946}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {116A6145-9D66-4867-B3EF-A464FAC47946}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {116A6145-9D66-4867-B3EF-A464FAC47946}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -97,6 +127,11 @@ Global
{A982A58E-1E92-4764-9F56-39E7AABB8556} = {42416152-5BAB-4706-93A6-57A19E71FE14}
{BCA19441-17E9-43E6-AED1-15344D18F967} = {42416152-5BAB-4706-93A6-57A19E71FE14}
{8B0CDFC9-E313-4323-9390-59CFFAAC60B5} = {42416152-5BAB-4706-93A6-57A19E71FE14}
+ {37D483C8-400B-4127-A6D0-2EE4E80CB696} = {BCA19441-17E9-43E6-AED1-15344D18F967}
+ {823C51A7-40AB-45D8-8FB8-F212AF7E45F2} = {BCA19441-17E9-43E6-AED1-15344D18F967}
+ {262F38DB-62AF-427F-96E2-C6385C5AB695} = {BCA19441-17E9-43E6-AED1-15344D18F967}
+ {81EE378A-0DE1-47BA-86D9-08EF6317BB95} = {BCA19441-17E9-43E6-AED1-15344D18F967}
+ {116A6145-9D66-4867-B3EF-A464FAC47946} = {BCA19441-17E9-43E6-AED1-15344D18F967}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {13691265-2547-4FFF-B757-E8FACB05679D}
diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj
new file mode 100644
index 0000000000..0835730d57
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj
@@ -0,0 +1,17 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Docs.Admin.Application.Contracts
+ Volo.Docs.Admin.Application.Contracts
+
+
+
+
+
+
+
+
+
diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminApplicationContractsModule.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminApplicationContractsModule.cs
new file mode 100644
index 0000000000..547fb6bf71
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminApplicationContractsModule.cs
@@ -0,0 +1,14 @@
+using Volo.Abp.Application;
+using Volo.Abp.Modularity;
+
+namespace Volo.Docs.Admin
+{
+ [DependsOn(
+ typeof(DocsDomainSharedModule),
+ typeof(AbpDddApplicationModule)
+ )]
+ public class DocsAdminApplicationContractsModule : AbpModule
+ {
+
+ }
+}
diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/CreateProjectDto.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/CreateProjectDto.cs
similarity index 94%
rename from modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/CreateProjectDto.cs
rename to modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/CreateProjectDto.cs
index cb02c579a3..2427d2d51f 100644
--- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/CreateProjectDto.cs
+++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/CreateProjectDto.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
-namespace Volo.Docs.Projects
+namespace Volo.Docs.Admin.Projects
{
public class CreateProjectDto
{
diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/IProjectAdminAppService.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/IProjectAdminAppService.cs
new file mode 100644
index 0000000000..34b607689c
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/IProjectAdminAppService.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Application.Services;
+
+namespace Volo.Docs.Admin.Projects
+{
+ public interface IProjectAdminAppService : IApplicationService
+ {
+ Task> GetListAsync(PagedAndSortedResultRequestDto input);
+
+ Task GetAsync(Guid id);
+
+ Task CreateAsync(CreateProjectDto input);
+
+ Task UpdateAsync(Guid id, UpdateProjectDto input);
+
+ Task DeleteAsync(Guid id);
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/ProjectDto.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/ProjectDto.cs
new file mode 100644
index 0000000000..c5a3bd6eb2
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/ProjectDto.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using Volo.Abp.Application.Dtos;
+
+namespace Volo.Docs.Admin.Projects
+{
+ [Serializable]
+ public class ProjectDto : EntityDto
+ {
+ public string Name { get; set; }
+
+ public string ShortName { get; set; }
+
+ public string Format { get; set; }
+
+ public string DefaultDocumentName { get; set; }
+
+ public string NavigationDocumentName { get; set; }
+
+ public string MinimumVersion { get; set; }
+
+ public string MainWebsiteUrl { get; set; }
+
+ public string LatestVersionBranchName { get; set; }
+
+ public string DocumentStoreType { get; set; }
+
+ public Dictionary ExtraProperties { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/UpdateProjectDto.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/UpdateProjectDto.cs
similarity index 87%
rename from modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/UpdateProjectDto.cs
rename to modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/UpdateProjectDto.cs
index b16f1916e4..b2ac8472ae 100644
--- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/UpdateProjectDto.cs
+++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/UpdateProjectDto.cs
@@ -1,8 +1,6 @@
-using System;
using System.Collections.Generic;
-using Volo.Abp.Application.Dtos;
-namespace Volo.Docs.Projects
+namespace Volo.Docs.Admin.Projects
{
public class UpdateProjectDto
{
diff --git a/modules/docs/src/Volo.Docs.Admin.Application/Volo.Docs.Admin.Application.csproj b/modules/docs/src/Volo.Docs.Admin.Application/Volo.Docs.Admin.Application.csproj
new file mode 100644
index 0000000000..73d2afc26b
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Application/Volo.Docs.Admin.Application.csproj
@@ -0,0 +1,19 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Docs.Admin.Application
+ Volo.Docs.Admin.Application
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/DocsAdminApplicationAutoMapperProfile.cs b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/DocsAdminApplicationAutoMapperProfile.cs
new file mode 100644
index 0000000000..e51cce664b
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/DocsAdminApplicationAutoMapperProfile.cs
@@ -0,0 +1,14 @@
+using AutoMapper;
+using Volo.Docs.Admin.Projects;
+using Volo.Docs.Projects;
+
+namespace Volo.Docs.Admin
+{
+ public class DocsAdminApplicationAutoMapperProfile : Profile
+ {
+ public DocsAdminApplicationAutoMapperProfile()
+ {
+ CreateMap();
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/DocsAdminApplicationModule.cs b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/DocsAdminApplicationModule.cs
new file mode 100644
index 0000000000..1771b00cdb
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/DocsAdminApplicationModule.cs
@@ -0,0 +1,22 @@
+using Volo.Abp.AutoMapper;
+using Volo.Abp.Caching;
+using Volo.Abp.Modularity;
+
+namespace Volo.Docs.Admin
+{
+ [DependsOn(
+ typeof(DocsDomainModule),
+ typeof(DocsAdminApplicationContractsModule),
+ typeof(AbpCachingModule),
+ typeof(AbpAutoMapperModule))]
+ public class DocsAdminApplicationModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.AddProfile(validate: true);
+ });
+ }
+ }
+}
diff --git a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs
new file mode 100644
index 0000000000..25e9754140
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Application.Services;
+using Volo.Abp.Guids;
+using Volo.Docs.Projects;
+
+namespace Volo.Docs.Admin.Projects
+{
+ public class ProjectAdminAppService : ApplicationService, IProjectAdminAppService
+ {
+ private readonly IProjectRepository _projectRepository;
+ private readonly IGuidGenerator _guidGenerator;
+
+ public ProjectAdminAppService(
+ IProjectRepository projectRepository, IGuidGenerator guidGenerator)
+ {
+ _projectRepository = projectRepository;
+ _guidGenerator = guidGenerator;
+ }
+
+ public async Task> GetListAsync(PagedAndSortedResultRequestDto input)
+ {
+ var blogs = await _projectRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount);
+
+ var totalCount = await _projectRepository.GetTotalProjectCount();
+
+ var dtos = ObjectMapper.Map, List>(blogs);
+
+ return new PagedResultDto(totalCount, dtos);
+ }
+
+ public async Task GetAsync(Guid id)
+ {
+ var project = await _projectRepository.GetAsync(id);
+
+ return ObjectMapper.Map(project);
+ }
+
+ public async Task CreateAsync(CreateProjectDto input)
+ {
+ var project = new Project(_guidGenerator.Create(),
+ input.Name,
+ input.ShortName,
+ input.DocumentStoreType,
+ input.Format,
+ input.DefaultDocumentName,
+ input.NavigationDocumentName
+ )
+ {
+ MinimumVersion = input.MinimumVersion,
+ MainWebsiteUrl = input.MainWebsiteUrl,
+ LatestVersionBranchName = input.LatestVersionBranchName
+ };
+
+ foreach (var extraProperty in input.ExtraProperties)
+ {
+ project.ExtraProperties.Add(extraProperty.Key,extraProperty.Value);
+ }
+
+ project = await _projectRepository.InsertAsync(project);
+
+ return ObjectMapper.Map(project);
+ }
+
+ public async Task UpdateAsync(Guid id, UpdateProjectDto input)
+ {
+ var project = await _projectRepository.GetAsync(id);
+
+ project.SetName(input.Name);
+ project.SetFormat(input.Format);
+ project.SetNavigationDocumentName(input.NavigationDocumentName);
+ project.SetDefaultDocumentName(input.DefaultDocumentName);
+
+ project.MinimumVersion = input.MinimumVersion;
+ project.MainWebsiteUrl = input.MainWebsiteUrl;
+ project.LatestVersionBranchName = input.LatestVersionBranchName;
+
+ foreach (var extraProperty in input.ExtraProperties)
+ {
+ project.ExtraProperties[extraProperty.Key] = extraProperty.Value;
+ }
+
+ project = await _projectRepository.UpdateAsync(project);
+
+ return ObjectMapper.Map(project);
+ }
+
+ public async Task DeleteAsync(Guid id)
+ {
+ await _projectRepository.DeleteAsync(id);
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/Volo.Docs.Admin.HttpApi.Client.csproj b/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/Volo.Docs.Admin.HttpApi.Client.csproj
new file mode 100644
index 0000000000..c76ce2895c
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/Volo.Docs.Admin.HttpApi.Client.csproj
@@ -0,0 +1,16 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Docs.Admin.HttpApi.Client
+ Volo.Docs.Admin.HttpApi.Client
+
+
+
+
+
+
+
+
diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/Volo/Docs/Admin/DocsHttpApiClientModule.cs b/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/Volo/Docs/Admin/DocsHttpApiClientModule.cs
new file mode 100644
index 0000000000..5a2e66e5ca
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/Volo/Docs/Admin/DocsHttpApiClientModule.cs
@@ -0,0 +1,11 @@
+using Volo.Abp.Modularity;
+
+namespace Volo.Docs.Admin
+{
+ [DependsOn(
+ typeof(DocsAdminApplicationContractsModule))]
+ public class DocsAdminHttpApiClientModule : AbpModule
+ {
+
+ }
+}
diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo.Docs.Admin.HttpApi.csproj b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo.Docs.Admin.HttpApi.csproj
new file mode 100644
index 0000000000..cea70211b2
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo.Docs.Admin.HttpApi.csproj
@@ -0,0 +1,17 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Docs.Admin.HttpApi
+ Volo.Docs.Admin.HttpApi
+
+
+
+
+
+
+
+
+
diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocsAdminHttpApiModule.cs b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocsAdminHttpApiModule.cs
new file mode 100644
index 0000000000..46321bbcfc
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocsAdminHttpApiModule.cs
@@ -0,0 +1,14 @@
+using Volo.Abp.AspNetCore.Mvc;
+using Volo.Abp.Modularity;
+
+namespace Volo.Docs.Admin
+{
+ [DependsOn(
+ typeof(DocsAdminApplicationContractsModule),
+ typeof(AbpAspNetCoreMvcModule)
+ )]
+ public class DocsAdminHttpApiModule : AbpModule
+ {
+
+ }
+}
diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/Projects/DocsAdminProjectController.cs b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/Projects/DocsAdminProjectController.cs
new file mode 100644
index 0000000000..58f3f23758
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/Projects/DocsAdminProjectController.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.AspNetCore.Mvc;
+
+namespace Volo.Docs.Admin.Projects
+{
+ [RemoteService]
+ [Area("docs")]
+ [ControllerName("Project")]
+ [Route("api/docs/admin/projects")]
+ public class DocsAdminProjectController : AbpController, IProjectAdminAppService
+ {
+ protected IProjectAdminAppService ProjectAppService { get; }
+
+ public DocsAdminProjectController(IProjectAdminAppService projectAppService)
+ {
+ ProjectAppService = projectAppService;
+ }
+
+ public Task> GetListAsync(PagedAndSortedResultRequestDto input)
+ {
+ return ProjectAppService.GetListAsync(input);
+ }
+
+ [HttpGet]
+ [Route("{id}")]
+ public Task GetAsync(Guid id)
+ {
+ return ProjectAppService.GetAsync(id);
+ }
+
+ public Task CreateAsync(CreateProjectDto input)
+ {
+ return ProjectAppService.CreateAsync(input);
+ }
+
+ public Task UpdateAsync(Guid id, UpdateProjectDto input)
+ {
+ return ProjectAppService.UpdateAsync(id, input);
+ }
+
+ public Task DeleteAsync(Guid id)
+ {
+ return ProjectAppService.DeleteAsync(id);
+ }
+ }
+}
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebAutoMapperProfile.cs b/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebAutoMapperProfile.cs
new file mode 100644
index 0000000000..0b9d5ebd3b
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebAutoMapperProfile.cs
@@ -0,0 +1,13 @@
+using AutoMapper;
+using Volo.Abp.AutoMapper;
+
+namespace Volo.Docs.Admin
+{
+ public class DocsAdminWebAutoMapperProfile : Profile
+ {
+ public DocsAdminWebAutoMapperProfile()
+ {
+
+ }
+ }
+}
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs b/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs
new file mode 100644
index 0000000000..a443865676
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs
@@ -0,0 +1,37 @@
+using Volo.Abp.AspNetCore.Mvc.Localization;
+using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap;
+using Volo.Abp.AutoMapper;
+using Volo.Abp.Modularity;
+using Volo.Abp.VirtualFileSystem;
+using Volo.Docs.Localization;
+
+namespace Volo.Docs.Admin
+{
+ [DependsOn(
+ typeof(DocsAdminHttpApiModule),
+ typeof(AbpAspNetCoreMvcUiBootstrapModule)
+ )]
+ public class DocsAdminWebModule : AbpModule
+ {
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ PreConfigure(options =>
+ {
+ options.AddAssemblyResource(typeof(DocsResource), typeof(DocsAdminWebModule).Assembly);
+ });
+ }
+
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded("Volo.Docs.Admin");
+ });
+
+ Configure(options =>
+ {
+ options.AddProfile(validate: true);
+ });
+ }
+ }
+}
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Properties/launchSettings.json b/modules/docs/src/Volo.Docs.Admin.Web/Properties/launchSettings.json
new file mode 100644
index 0000000000..b0ed7371d0
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Properties/launchSettings.json
@@ -0,0 +1,27 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:51397",
+ "sslPort": 44346
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "Volo.Docs.Admin.Web": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "applicationUrl": "https://localhost:5001;http://localhost:5000",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj
new file mode 100644
index 0000000000..b5b4569789
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj
@@ -0,0 +1,55 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Docs.Admin.Web
+ Volo.Docs.Admin.Web
+ Library
+ true
+ Volo.Docs.Admin
+ 2.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 8dba5fa3e1..f06c676079 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
@@ -10,12 +10,6 @@ namespace Volo.Docs.Projects
Task> GetListAsync();
Task GetAsync(string shortName);
-
- Task CreateAsync(CreateProjectDto input);
-
- Task UpdateAsync(Guid id, UpdateProjectDto input);
-
- Task DeleteAsync(Guid id);
Task> GetVersionsAsync(string shortName);
}
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 6a7e8132fc..20970ade0d 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
@@ -45,60 +45,6 @@ namespace Volo.Docs.Projects
return ObjectMapper.Map(project);
}
- public async Task CreateAsync(CreateProjectDto input)
- {
- var project = new Project(_guidGenerator.Create(),
- input.Name,
- input.ShortName,
- input.DocumentStoreType,
- input.Format,
- input.DefaultDocumentName,
- input.NavigationDocumentName
- )
- {
- MinimumVersion = input.MinimumVersion,
- MainWebsiteUrl = input.MainWebsiteUrl,
- LatestVersionBranchName = input.LatestVersionBranchName
- };
-
- foreach (var extraProperty in input.ExtraProperties)
- {
- project.ExtraProperties.Add(extraProperty.Key,extraProperty.Value);
- }
-
- project = await _projectRepository.InsertAsync(project);
-
- return ObjectMapper.Map(project);
- }
-
- public async Task UpdateAsync(Guid id, UpdateProjectDto input)
- {
- var project = await _projectRepository.GetAsync(id);
-
- project.SetName(input.Name);
- project.SetFormat(input.Format);
- project.SetNavigationDocumentName(input.NavigationDocumentName);
- project.SetDefaultDocumentName(input.DefaultDocumentName);
-
- project.MinimumVersion = input.MinimumVersion;
- project.MainWebsiteUrl = input.MainWebsiteUrl;
- project.LatestVersionBranchName = input.LatestVersionBranchName;
-
- foreach (var extraProperty in input.ExtraProperties)
- {
- project.ExtraProperties[extraProperty.Key] = extraProperty.Value;
- }
-
- project = await _projectRepository.UpdateAsync(project);
-
- return ObjectMapper.Map(project);
- }
-
- public async Task DeleteAsync(Guid id)
- {
- await _projectRepository.DeleteAsync(id);
- }
-
public async Task> GetVersionsAsync(string shortName)
{
var project = await _projectRepository.GetByShortNameAsync(shortName);
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 fdfe785df4..1872d33cd8 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
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
@@ -6,6 +7,10 @@ namespace Volo.Docs.Projects
{
public interface IProjectRepository : IBasicRepository
{
+ Task> GetListAsync(string sorting, int maxResultCount, int skipCount);
+
+ Task GetTotalProjectCount();
+
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 e06fea3aba..f9e6ab4fa7 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,4 +1,7 @@
using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Dynamic.Core;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Entities;
@@ -16,6 +19,20 @@ namespace Volo.Docs.Projects
}
+ public async Task> GetListAsync(string sorting, int maxResultCount, int skipCount)
+ {
+ var projects = await DbSet.OrderBy(sorting ?? "creationTime desc")
+ .PageBy(skipCount, maxResultCount)
+ .ToListAsync();
+
+ return projects;
+ }
+
+ public async Task GetTotalProjectCount()
+ {
+ return await DbSet.CountAsync();
+ }
+
public async Task GetByShortNameAsync(string shortName)
{
var project = await DbSet.FirstOrDefaultAsync(p => p.ShortName == shortName);
diff --git a/modules/docs/src/Volo.Docs.HttpApi/Volo/Docs/Projects/DocsProjectController.cs b/modules/docs/src/Volo.Docs.HttpApi/Volo/Docs/Projects/DocsProjectController.cs
index 180cec622f..e22df620f9 100644
--- a/modules/docs/src/Volo.Docs.HttpApi/Volo/Docs/Projects/DocsProjectController.cs
+++ b/modules/docs/src/Volo.Docs.HttpApi/Volo/Docs/Projects/DocsProjectController.cs
@@ -34,21 +34,6 @@ namespace Volo.Docs.Projects
return ProjectAppService.GetAsync(shortName);
}
- public Task CreateAsync(CreateProjectDto input)
- {
- return ProjectAppService.CreateAsync(input);
- }
-
- public Task UpdateAsync(Guid id, UpdateProjectDto input)
- {
- return ProjectAppService.UpdateAsync(id, input);
- }
-
- public Task DeleteAsync(Guid id)
- {
- return ProjectAppService.DeleteAsync(id);
- }
-
[HttpGet]
[Route("{shortName}/versions")]
public virtual Task> GetVersionsAsync(string shortName)