diff --git a/Oqtane.Server/Infrastructure/UpgradeManager.cs b/Oqtane.Server/Infrastructure/UpgradeManager.cs index 532bc3d0..f77edd50 100644 --- a/Oqtane.Server/Infrastructure/UpgradeManager.cs +++ b/Oqtane.Server/Infrastructure/UpgradeManager.cs @@ -7,15 +7,11 @@ using Oqtane.Infrastructure.SiteTemplates; using Oqtane.Models; using Oqtane.Repository; using Oqtane.Shared; -using Oqtane.UI; -using Org.BouncyCastle.Pqc.Crypto.Lms; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; -using System.Reflection.Metadata; -using System.Runtime.Serialization; namespace Oqtane.Infrastructure { diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs index bd84354e..fe840c5e 100644 --- a/Oqtane.Server/Repository/SiteRepository.cs +++ b/Oqtane.Server/Repository/SiteRepository.cs @@ -168,7 +168,7 @@ namespace Oqtane.Repository var attribute = (SiteMigrationAttribute)Attribute.GetCustomAttribute(type, typeof(SiteMigrationAttribute)); if (attribute.AliasName == "*" || attribute.AliasName == alias.Name) { - if (string.IsNullOrEmpty(site.Version) || Version.Parse(attribute.Version) > Version.Parse(site.Version)) + if (string.IsNullOrEmpty(site.Version) || attribute.Version == "*" || Version.Parse(attribute.Version) > Version.Parse(site.Version)) { try { @@ -176,14 +176,14 @@ namespace Oqtane.Repository if (obj != null) { obj.Up(site, alias); - _logger.Log(LogLevel.Information, "Site Migration", LogFunction.Other, "Site Migrated Successfully To Version {version} For {Alias}", version, alias.Name); + _logger.Log(LogLevel.Information, "Site Migration", LogFunction.Other, "Site Migrated Successfully For {Alias} And Version {version}", alias.Name, attribute.Version); } } catch (Exception ex) { - _logger.Log(LogLevel.Error, "Site Migration", LogFunction.Other, ex, "An Error Occurred Executing Site Migration {Type} For {Alias} And Version {Version}", type, alias.Name, version); + _logger.Log(LogLevel.Error, "Site Migration", LogFunction.Other, ex, "An Error Occurred Executing Site Migration {Type} For {Alias} And Version {Version}", type, alias.Name, attribute.Version); } - if (string.IsNullOrEmpty(version) || Version.Parse(attribute.Version) > Version.Parse(version)) + if (attribute.Version != "*" && (string.IsNullOrEmpty(version) || Version.Parse(attribute.Version) > Version.Parse(version))) { version = attribute.Version; } @@ -490,7 +490,27 @@ namespace Oqtane.Repository } else { - var module = _moduleRepository.AddModule(pageModule.Module); + Module module = null; + if (pageTemplateModule.FromPagePath != "") + { + // used for modules shared across pages + var pagePath = pageTemplateModule.FromPagePath; + pagePath = (pagePath.ToLower() == "home") ? "" : pagePath; + pagePath = (pagePath == "/") ? "" : pagePath; + if (pages.Any(item => item.Path.ToLower() == pagePath.ToLower())) + { + var pageId = pages.First(item => item.Path.ToLower() == pagePath.ToLower()).PageId; + if (pageModules.Any(item => item.PageId == pageId && item.Module.ModuleDefinitionName == pageTemplateModule.ModuleDefinitionName && item.Title.ToLower() == pageTemplateModule.Title.ToLower())) + { + module = pageModules.FirstOrDefault(item => item.PageId == pageId && item.Module.ModuleDefinitionName == pageTemplateModule.ModuleDefinitionName && item.Title.ToLower() == pageTemplateModule.Title.ToLower()).Module; + } + } + } + if (module == null) + { + module = _moduleRepository.AddModule(pageModule.Module); + } + pageModule.ModuleId = module.ModuleId; pageModule.Module = null; // remove tracking _pageModuleRepository.AddPageModule(pageModule); diff --git a/Oqtane.Shared/Models/SiteTemplate.cs b/Oqtane.Shared/Models/SiteTemplate.cs index 42cbffee..9cbade09 100644 --- a/Oqtane.Shared/Models/SiteTemplate.cs +++ b/Oqtane.Shared/Models/SiteTemplate.cs @@ -105,6 +105,7 @@ namespace Oqtane.Models }; Settings = new List(); Content = ""; + FromPagePath = ""; } public string ModuleDefinitionName { get; set; } @@ -118,6 +119,7 @@ namespace Oqtane.Models public List PermissionList { get; set; } public List Settings { get; set; } public string Content { get; set; } + public string FromPagePath { get; set; } // for modules shared across pages [Obsolete("The ModulePermissions property is deprecated. Use PermissionList instead", false)] public string ModulePermissions