From a9d871e9afcc5ad69a3ec22596eba690b45b54c5 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Fri, 9 Jun 2023 12:33:07 -0400 Subject: [PATCH] improvements to page template processing in cases where a page parent and name is specified without a path --- Oqtane.Server/Repository/SiteRepository.cs | 24 +++++++++++++++------- Oqtane.Shared/Models/SiteTemplate.cs | 1 + 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs index 948992a6..3fa2dc03 100644 --- a/Oqtane.Server/Repository/SiteRepository.cs +++ b/Oqtane.Server/Repository/SiteRepository.cs @@ -319,6 +319,15 @@ namespace Oqtane.Repository { pages = _pageRepository.GetPages(site.SiteId).ToList(); } + Page parent = null; + if (string.IsNullOrEmpty(pageTemplate.Path)) + { + if (!string.IsNullOrEmpty(pageTemplate.Parent)) + { + parent = pages.FirstOrDefault(item => item.Path.ToLower() == pageTemplate.Parent.ToLower()); + } + pageTemplate.Path = (parent != null) ? parent.Path + "/" + pageTemplate.Name : pageTemplate.Name; + } var page = pages.FirstOrDefault(item => item.Path.ToLower() == pageTemplate.Path.ToLower()); if (page == null) { @@ -326,17 +335,18 @@ namespace Oqtane.Repository page.SiteId = site.SiteId; page.Path = pageTemplate.Path.ToLower(); } - 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)) + if (string.IsNullOrEmpty(pageTemplate.Parent)) { - if (pages.Any(item => item.Path.ToLower() == pageTemplate.Parent.ToLower())) + if (pageTemplate.Path.Contains("/")) { - parentid = pages.FirstOrDefault(item => item.Path.ToLower() == pageTemplate.Parent.ToLower()).PageId; + parent = pages.FirstOrDefault(item => item.Path.ToLower() == pageTemplate.Path.Substring(0, pageTemplate.Path.LastIndexOf("/"))); } } - page.ParentId = parentid; + page.ParentId = (parent != null) ? parent.PageId : null; + if (string.IsNullOrEmpty(pageTemplate.Name)) + { + page.Name = (pageTemplate.Path.Contains("/")) ? pageTemplate.Path.Substring(pageTemplate.Name.LastIndexOf("/") + 1) : pageTemplate.Path; + } page.Title = pageTemplate.Title; page.Order = pageTemplate.Order; page.Url = pageTemplate.Url; diff --git a/Oqtane.Shared/Models/SiteTemplate.cs b/Oqtane.Shared/Models/SiteTemplate.cs index 9bc19c4c..5e449a9b 100644 --- a/Oqtane.Shared/Models/SiteTemplate.cs +++ b/Oqtane.Shared/Models/SiteTemplate.cs @@ -44,6 +44,7 @@ namespace Oqtane.Models } public string Path { get; set; } + // note that Parent actually means Parent Path public string Parent { get; set; } public string Name { get; set; } public string Title { get; set; }