From f09b21295a0655f5da7293d1876befcdee450553 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Fri, 6 Mar 2026 11:18:50 -0500 Subject: [PATCH] fix #6111 - regression issue caused by #6106 Related Work Items: #6 --- Oqtane.Server/Controllers/ModuleController.cs | 6 ++++-- Oqtane.Server/Controllers/PageController.cs | 7 +++++-- Oqtane.Server/Repository/ModuleRepository.cs | 19 ++++++++++++++----- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/Oqtane.Server/Controllers/ModuleController.cs b/Oqtane.Server/Controllers/ModuleController.cs index 61f69f33..4c70228b 100644 --- a/Oqtane.Server/Controllers/ModuleController.cs +++ b/Oqtane.Server/Controllers/ModuleController.cs @@ -264,7 +264,8 @@ namespace Oqtane.Controllers _userPermissions.IsAuthorized(User, module.SiteId, EntityNames.Folder, folderid, PermissionNames.Edit) && !string.IsNullOrEmpty(filename)) { // get content - var content = _modules.ExportModule(moduleid); + module.IPortableContext = "Export Module"; + var content = _modules.ExportModule(module); // get folder var folder = _folders.GetFolder(folderid, false); @@ -317,7 +318,8 @@ namespace Oqtane.Controllers var module = _modules.GetModule(moduleid); if (ModelState.IsValid && module != null && module.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User, module.SiteId, EntityNames.Page, pageid, PermissionNames.Edit)) { - success = _modules.ImportModule(moduleid, content); + module.IPortableContext = "Import Module"; + success = _modules.ImportModule(module, content); if (success) { _logger.Log(LogLevel.Information, this, LogFunction.Update, "Module Content Imported {ModuleId}", moduleid); diff --git a/Oqtane.Server/Controllers/PageController.cs b/Oqtane.Server/Controllers/PageController.cs index 8e16c2ee..a9110da9 100644 --- a/Oqtane.Server/Controllers/PageController.cs +++ b/Oqtane.Server/Controllers/PageController.cs @@ -238,10 +238,13 @@ namespace Oqtane.Controllers }; module = _modules.AddModule(module); - string content = _modules.ExportModule(pm.ModuleId); + // deep copy module content (includes settings) + pm.Module.IPortableContext = "Copy Page"; + string content = _modules.ExportModule(pm.Module); if (content != "") { - _modules.ImportModule(module.ModuleId, content); + module.IPortableContext = "Copy Page"; + _modules.ImportModule(module, content); } PageModule pagemodule = new PageModule(); diff --git a/Oqtane.Server/Repository/ModuleRepository.cs b/Oqtane.Server/Repository/ModuleRepository.cs index ac9c7aa4..fa77d4d7 100644 --- a/Oqtane.Server/Repository/ModuleRepository.cs +++ b/Oqtane.Server/Repository/ModuleRepository.cs @@ -132,7 +132,6 @@ namespace Oqtane.Repository { try { - module.IPortableContext = "Export Module"; module.Settings = settings.ToDictionary(x => x.SettingName, x => x.SettingValue); var moduleobject = ActivatorUtilities.CreateInstance(_serviceProvider, moduletype); modulecontent.Content = ((IPortable)moduleobject).ExportModule(module); @@ -173,13 +172,24 @@ namespace Oqtane.Repository ModuleDefinition moduledefinition = moduledefinitions.Where(item => item.ModuleDefinitionName == module.ModuleDefinitionName).FirstOrDefault(); if (moduledefinition != null) { - ModuleContent modulecontent = JsonSerializer.Deserialize(content.Replace("\n", "")); + var modulecontent = new ModuleContent(); + if (content.StartsWith("{") && content.EndsWith("}")) + { + // content was exported as a serialized ModuleContent object + modulecontent = JsonSerializer.Deserialize(content.Replace("\n", "")); + } + else + { + // raw content + modulecontent.ModuleDefinitionName = moduledefinition.ModuleDefinitionName; + modulecontent.Version = moduledefinition.Version; + modulecontent.Content = content; + } if (modulecontent.ModuleDefinitionName == moduledefinition.ModuleDefinitionName) { - var settings = _settings.GetSettings(EntityNames.Module, module.ModuleId); - if (modulecontent.Settings != null) { + var settings = _settings.GetSettings(EntityNames.Module, module.ModuleId); foreach (var kvp in modulecontent.Settings) { var setting = settings.FirstOrDefault(item => item.SettingName == kvp.Key); @@ -206,7 +216,6 @@ namespace Oqtane.Repository { try { - module.IPortableContext = "Import Module"; module.Settings = _settings.GetSettings(EntityNames.Module, module.ModuleId).ToDictionary(x => x.SettingName, x => x.SettingValue); var moduleobject = ActivatorUtilities.CreateInstance(_serviceProvider, moduletype); ((IPortable)moduleobject).ImportModule(module, modulecontent.Content, modulecontent.Version);