diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs index ec7cb919f9..e0d901bdd5 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs @@ -1,11 +1,10 @@ using System; using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; -using Volo.Abp.Content; namespace Volo.CmsKit.Admin.Pages; public interface IPageAdminAppService : ICrudAppService { + Task SetAsHomePageAsync(Guid id); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs index 68f0690555..67c6464e0c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs @@ -1,12 +1,10 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; -using AutoMapper; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Data; using Volo.Abp.GlobalFeatures; -using Volo.CmsKit.Admin.Menus; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.Pages; using Volo.CmsKit.Permissions; @@ -85,4 +83,13 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi { await PageRepository.DeleteAsync(id); } + + public virtual async Task SetAsHomePageAsync(Guid id) + { + await PageManager.SetHomePageAsFalseAsync(true); + + var page = await PageRepository.GetAsync(id); + page.IsHomePage = true; + await PageRepository.UpdateAsync(page); + } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs index 7936b206e6..8311c8ff58 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs @@ -5,7 +5,6 @@ using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.GlobalFeatures; -using Volo.CmsKit.Admin.Menus; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.Permissions; @@ -60,4 +59,11 @@ public class PageAdminController : CmsKitAdminController, IPageAdminAppService { return PageAdminAppService.DeleteAsync(id); } + + [HttpGet] + [Route("setashomepage/{id}")] + public virtual Task SetAsHomePageAsync(Guid id) + { + return PageAdminAppService.SetAsHomePageAsync(id); + } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js index 3a8612072c..f51532c63c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js @@ -46,6 +46,17 @@ $(function (){ abp.notify.success(l('SuccessfullyDeleted')); }); } + }, + { + text: l('SetAsHomePage'), + visible: abp.auth.isGranted('CmsKit.Pages.Delete'), + action: function (data) { + pagesService + .setAsHomePage(data.record.id) + .then(function () { + abp.notify.success(l('SetAsHomePage')); + }); + } } ] } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js index 94017ec7e2..320aa73b12 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js @@ -136,6 +136,14 @@ }, ajaxParams)); }; + volo.cmsKit.admin.pages.pageAdmin.setAsHomePage = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/cms-kit-admin/pages/setashomepage/' + id + '', + type: 'GET', + dataType: null + }, ajaxParams)); + }; + })(); // controller volo.cmsKit.admin.menus.menuItemAdmin diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/IPageRepository.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/IPageRepository.cs index 020622f080..20aab4ff8f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/IPageRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/IPageRepository.cs @@ -22,4 +22,6 @@ public interface IPageRepository : IBasicRepository Task FindBySlugAsync(string slug, CancellationToken cancellationToken = default); Task ExistsAsync(string slug, CancellationToken cancellationToken = default); + + Task FindByIsHomePageAsync(bool isHomePage, CancellationToken cancellationToken = default); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageManager.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageManager.cs index 4a4d15728b..8a85edfb25 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageManager.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageManager.cs @@ -45,6 +45,16 @@ public class PageManager : DomainService } } + public virtual async Task SetHomePageAsFalseAsync(bool isHomePage) + { + var page = await PageRepository.FindByIsHomePageAsync(isHomePage); + if (page is not null) + { + page.IsHomePage = false; + await PageRepository.UpdateAsync(page); + } + } + protected virtual async Task CheckPageSlugAsync(string slug) { if (await PageRepository.ExistsAsync(slug)) diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Pages/EfCorePageRepository.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Pages/EfCorePageRepository.cs index 125c1a97ff..e15689ace9 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Pages/EfCorePageRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Pages/EfCorePageRepository.cs @@ -63,4 +63,9 @@ public class EfCorePageRepository : EfCoreRepository x.Slug == slug, GetCancellationToken(cancellationToken)); } + + public virtual Task FindByIsHomePageAsync(bool isHomePage, CancellationToken cancellationToken = default) + { + return FindAsync(x => x.IsHomePage == isHomePage, cancellationToken: GetCancellationToken(cancellationToken)); + } } diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Pages/MongoPageRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Pages/MongoPageRepository.cs index 74c5d8cc3c..e5073fc374 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Pages/MongoPageRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Pages/MongoPageRepository.cs @@ -71,4 +71,9 @@ public class MongoPageRepository : MongoDbRepository x.Slug == slug, GetCancellationToken(cancellationToken)); } + + public virtual Task FindByIsHomePageAsync(bool isHomePage, CancellationToken cancellationToken = default) + { + return FindAsync(x => x.IsHomePage == isHomePage, cancellationToken: GetCancellationToken(cancellationToken)); + } }