Merge pull request #5732 from sbwalker/dev
fix #5671 - copy page and module settings from parent
This commit is contained in:
@@ -216,6 +216,13 @@ namespace Oqtane.Controllers
|
|||||||
page.UserId = int.Parse(userid);
|
page.UserId = int.Parse(userid);
|
||||||
page = _pages.AddPage(page);
|
page = _pages.AddPage(page);
|
||||||
|
|
||||||
|
// copy parent page settings
|
||||||
|
var settings = _settings.GetSettings(EntityNames.Page, parent.PageId);
|
||||||
|
foreach (var setting in settings)
|
||||||
|
{
|
||||||
|
_settings.AddSetting(new Setting { EntityName = EntityNames.Page, EntityId = page.PageId, SettingName = setting.SettingName, SettingValue = setting.SettingValue, IsPrivate = setting.IsPrivate });
|
||||||
|
}
|
||||||
|
|
||||||
// copy modules
|
// copy modules
|
||||||
List<PageModule> pagemodules = _pageModules.GetPageModules(page.SiteId).ToList();
|
List<PageModule> pagemodules = _pageModules.GetPageModules(page.SiteId).ToList();
|
||||||
foreach (PageModule pm in pagemodules.Where(item => item.PageId == parent.PageId && !item.IsDeleted))
|
foreach (PageModule pm in pagemodules.Where(item => item.PageId == parent.PageId && !item.IsDeleted))
|
||||||
@@ -258,8 +265,7 @@ namespace Oqtane.Controllers
|
|||||||
_syncManager.AddSyncEvent(_alias, EntityNames.Site, page.SiteId, SyncEventActions.Refresh);
|
_syncManager.AddSyncEvent(_alias, EntityNames.Site, page.SiteId, SyncEventActions.Refresh);
|
||||||
|
|
||||||
// set user personalized page path
|
// set user personalized page path
|
||||||
var setting = new Setting { EntityName = EntityNames.User, EntityId = page.UserId.Value, SettingName = $"PersonalizedPagePath:{page.SiteId}:{parent.PageId}", SettingValue = path, IsPrivate = false };
|
_settings.AddSetting(new Setting { EntityName = EntityNames.User, EntityId = page.UserId.Value, SettingName = $"PersonalizedPagePath:{page.SiteId}:{parent.PageId}", SettingValue = path, IsPrivate = false });
|
||||||
_settings.AddSetting(setting);
|
|
||||||
_syncManager.AddSyncEvent(_alias, EntityNames.User, user.UserId, SyncEventActions.Update);
|
_syncManager.AddSyncEvent(_alias, EntityNames.User, user.UserId, SyncEventActions.Update);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,9 +110,12 @@ namespace Oqtane.Repository
|
|||||||
ModuleDefinition moduledefinition = moduledefinitions.FirstOrDefault(item => item.ModuleDefinitionName == module.ModuleDefinitionName);
|
ModuleDefinition moduledefinition = moduledefinitions.FirstOrDefault(item => item.ModuleDefinitionName == module.ModuleDefinitionName);
|
||||||
if (moduledefinition != null)
|
if (moduledefinition != null)
|
||||||
{
|
{
|
||||||
|
var settings = _settings.GetSettings(EntityNames.Module, moduleId);
|
||||||
|
|
||||||
ModuleContent modulecontent = new ModuleContent();
|
ModuleContent modulecontent = new ModuleContent();
|
||||||
modulecontent.ModuleDefinitionName = moduledefinition.ModuleDefinitionName;
|
modulecontent.ModuleDefinitionName = moduledefinition.ModuleDefinitionName;
|
||||||
modulecontent.Version = moduledefinition.Version;
|
modulecontent.Version = moduledefinition.Version;
|
||||||
|
modulecontent.Settings = settings.Where(item => !item.IsPrivate).ToDictionary(x => x.SettingName, x => x.SettingValue);
|
||||||
modulecontent.Content = "";
|
modulecontent.Content = "";
|
||||||
|
|
||||||
if (moduledefinition.ServerManagerType != "")
|
if (moduledefinition.ServerManagerType != "")
|
||||||
@@ -122,7 +125,7 @@ namespace Oqtane.Repository
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
module.Settings = _settings.GetSettings(EntityNames.Module, moduleId).ToDictionary(x => x.SettingName, x => x.SettingValue);
|
module.Settings = settings.ToDictionary(x => x.SettingName, x => x.SettingValue);
|
||||||
var moduleobject = ActivatorUtilities.CreateInstance(_serviceProvider, moduletype);
|
var moduleobject = ActivatorUtilities.CreateInstance(_serviceProvider, moduletype);
|
||||||
modulecontent.Content = ((IPortable)moduleobject).ExportModule(module);
|
modulecontent.Content = ((IPortable)moduleobject).ExportModule(module);
|
||||||
}
|
}
|
||||||
@@ -160,6 +163,29 @@ namespace Oqtane.Repository
|
|||||||
ModuleContent modulecontent = JsonSerializer.Deserialize<ModuleContent>(content.Replace("\n", ""));
|
ModuleContent modulecontent = JsonSerializer.Deserialize<ModuleContent>(content.Replace("\n", ""));
|
||||||
if (modulecontent.ModuleDefinitionName == moduledefinition.ModuleDefinitionName)
|
if (modulecontent.ModuleDefinitionName == moduledefinition.ModuleDefinitionName)
|
||||||
{
|
{
|
||||||
|
var settings = _settings.GetSettings(EntityNames.Module, moduleId);
|
||||||
|
|
||||||
|
if (modulecontent.Settings != null)
|
||||||
|
{
|
||||||
|
foreach (var kvp in modulecontent.Settings)
|
||||||
|
{
|
||||||
|
var setting = settings.FirstOrDefault(item => item.SettingName == kvp.Key);
|
||||||
|
if (setting == null)
|
||||||
|
{
|
||||||
|
setting = new Setting { EntityName = EntityNames.Module, EntityId = moduleId, SettingName = kvp.Key, SettingValue = kvp.Value, IsPrivate = false };
|
||||||
|
_settings.AddSetting(setting);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (setting.SettingValue != kvp.Value)
|
||||||
|
{
|
||||||
|
setting.SettingValue = kvp.Value;
|
||||||
|
_settings.UpdateSetting(setting);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (moduledefinition.ServerManagerType != "")
|
if (moduledefinition.ServerManagerType != "")
|
||||||
{
|
{
|
||||||
Type moduletype = Type.GetType(moduledefinition.ServerManagerType);
|
Type moduletype = Type.GetType(moduledefinition.ServerManagerType);
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Oqtane.Models
|
namespace Oqtane.Models
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -15,6 +17,11 @@ namespace Oqtane.Models
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string Version { get; set; }
|
public string Version { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Serialized Settings of the module for import/export.
|
||||||
|
/// </summary>
|
||||||
|
public Dictionary<string, string> Settings { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Serialized Content of the module for import/export.
|
/// Serialized Content of the module for import/export.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user