diff --git a/Oqtane.Server/Infrastructure/EventSubscribers/CacheInvalidationEventSubscriber.cs b/Oqtane.Server/Infrastructure/EventSubscribers/CacheInvalidationEventSubscriber.cs index e608546d..41dab17d 100644 --- a/Oqtane.Server/Infrastructure/EventSubscribers/CacheInvalidationEventSubscriber.cs +++ b/Oqtane.Server/Infrastructure/EventSubscribers/CacheInvalidationEventSubscriber.cs @@ -15,7 +15,7 @@ namespace Oqtane.Infrastructure.EventSubscribers public void EntityChanged(SyncEvent syncEvent) { - if (syncEvent.EntityName == "Site" && syncEvent.Action == SyncEventActions.Refresh) + if (syncEvent.EntityName == EntityNames.Site && syncEvent.Action == SyncEventActions.Refresh) { _cache.Remove($"site:{syncEvent.TenantId}:{syncEvent.EntityId}"); } diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs index e06d4731..92916fe9 100644 --- a/Oqtane.Server/Repository/SiteRepository.cs +++ b/Oqtane.Server/Repository/SiteRepository.cs @@ -319,14 +319,14 @@ namespace Oqtane.Repository { pages = _pageRepository.GetPages(site.SiteId).ToList(); } - var page = pages.FirstOrDefault(item => item.Path == pageTemplate.Path); + var page = pages.FirstOrDefault(item => item.Path.ToLower() == pageTemplate.Path.ToLower()); if (page == null) { page = new Page(); page.SiteId = site.SiteId; page.Path = pageTemplate.Path.ToLower(); } - page.Name = (string.IsNullOrEmpty(pageTemplate.Name)) ? page.Path : pageTemplate.Name; + page.Name = (!string.IsNullOrEmpty(pageTemplate.Name)) ? pageTemplate.Name : page.Path; page.Name = (page.Name.Contains("/")) ? page.Name.Substring(page.Name.LastIndexOf("/") + 1) : page.Name; int? parentid = null; if (!string.IsNullOrEmpty(pageTemplate.Parent)) @@ -392,7 +392,7 @@ namespace Oqtane.Repository var moduleDefinition = moduleDefinitions.Where(item => item.ModuleDefinitionName == pageTemplateModule.ModuleDefinitionName).FirstOrDefault(); if (moduleDefinition != null) { - var pageModule = pageModules.FirstOrDefault(item => item.PageId == page.PageId && item.Module.ModuleDefinitionName == pageTemplateModule.ModuleDefinitionName && item.Title == pageTemplateModule.Title); + var pageModule = pageModules.FirstOrDefault(item => item.PageId == page.PageId && item.Module.ModuleDefinitionName == pageTemplateModule.ModuleDefinitionName && item.Title.ToLower() == pageTemplateModule.Title.ToLower()); if (pageModule == null) { pageModule = new PageModule(); @@ -403,6 +403,7 @@ namespace Oqtane.Repository } pageModule.Title = pageTemplateModule.Title; pageModule.Pane = pageTemplateModule.Pane; + pageModule.Order = pageTemplateModule.Order; pageModule.ContainerType = pageTemplateModule.ContainerType; pageModule.IsDeleted = pageTemplateModule.IsDeleted; pageModule.Module.PermissionList = pageTemplateModule.PermissionList; @@ -416,18 +417,20 @@ namespace Oqtane.Repository _pageModuleRepository.UpdatePageModule(pageModule); if (alias != null) { - _logger.Log(LogLevel.Information, "Site Template", LogFunction.Update, "Page Mopdule Updated {PageModule}", pageModule); + _logger.Log(LogLevel.Information, "Site Template", LogFunction.Update, "Page Module Updated {PageModule}", pageModule); } } else { - pageModule.Module = _moduleRepository.AddModule(pageModule.Module); - pageModule.ModuleId = pageModule.Module.ModuleId; + var module = _moduleRepository.AddModule(pageModule.Module); + pageModule.ModuleId = module.ModuleId; pageModule.Module = null; // remove tracking _pageModuleRepository.AddPageModule(pageModule); + pageModule.Module = module; + pageModules.Add(pageModule); if (alias != null) { - _logger.Log(LogLevel.Information, "Site Template", LogFunction.Create, "Page Mopdule Added {PageModule}", pageModule); + _logger.Log(LogLevel.Information, "Site Template", LogFunction.Create, "Page Module Added {PageModule}", pageModule); } } diff --git a/README.md b/README.md index c66059ba..af1f1b65 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,6 @@ This project is open source, and therefore is a work in progress... Backlog (TBD) - [ ] Azure Autoscale support (ie. web farm) -- [ ] Routable Modules (ie. declarative configuration) - [ ] Folder Providers - [ ] Generative AI Integration @@ -58,6 +57,9 @@ Backlog (TBD) - [x] Migration to .NET 7 - [x] Improved JavaScript, CSS, and Meta support - [x] Optimized Client Assembly Loading +- [x] Routable Modules (ie. declarative configuration) +- [x] Site Template improvements +- [x] IEventSubscriber interface [3.4.3](https://github.com/oqtane/oqtane.framework/releases/tag/v3.4.3) ( May 3, 2023 ) - [x] Stabilization improvements