fix #5708 - resolve issue saving settings
This commit is contained in:
@@ -434,11 +434,26 @@ namespace Oqtane.Services
|
||||
foreach (KeyValuePair<string, string> kvp in settings)
|
||||
{
|
||||
var setting = new Setting();
|
||||
setting.SettingId = 0;
|
||||
setting.EntityName = entityName;
|
||||
setting.EntityId = entityId;
|
||||
setting.SettingName = kvp.Key;
|
||||
setting.SettingValue = kvp.Value;
|
||||
setting.IsPrivate = true;
|
||||
|
||||
// manage settings modified with SetSetting method
|
||||
if (setting.SettingValue.StartsWith("[Private]"))
|
||||
{
|
||||
setting.SettingValue = setting.SettingValue.Substring(9);
|
||||
setting.IsPrivate = true;
|
||||
setting.SettingId = -1; // indicates IsPrivate was explicitly set
|
||||
}
|
||||
if (setting.SettingValue.StartsWith("[Public]"))
|
||||
{
|
||||
setting.SettingValue = setting.SettingValue.Substring(8);
|
||||
setting.IsPrivate = false;
|
||||
setting.SettingId = -1; // indicates IsPrivate was explicitly set
|
||||
}
|
||||
|
||||
settingsList.Add(setting);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,6 @@ using Microsoft.AspNetCore.Authentication.Cookies;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using Oqtane.Migrations.Tenant;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
using System;
|
||||
|
||||
namespace Oqtane.Controllers
|
||||
@@ -220,39 +218,24 @@ namespace Oqtane.Controllers
|
||||
var existingSettings = _settings.GetSettings(entityName, entityId).ToList();
|
||||
foreach (Setting setting in settings)
|
||||
{
|
||||
bool modified = false;
|
||||
|
||||
// manage settings modified with SetSetting method
|
||||
if (setting.SettingValue.StartsWith("[Private]"))
|
||||
Setting existing = existingSettings.FirstOrDefault(item => item.SettingName.Equals(setting.SettingName, StringComparison.OrdinalIgnoreCase));
|
||||
if (existing == null)
|
||||
{
|
||||
modified = true;
|
||||
setting.IsPrivate = true;
|
||||
setting.SettingValue = setting.SettingValue.Substring(9);
|
||||
}
|
||||
if (setting.SettingValue.StartsWith("[Public]"))
|
||||
{
|
||||
modified = true;
|
||||
setting.IsPrivate = false;
|
||||
setting.SettingValue = setting.SettingValue.Substring(8);
|
||||
}
|
||||
|
||||
Setting existingSetting = existingSettings.FirstOrDefault(item => item.SettingName.Equals(setting.SettingName, StringComparison.OrdinalIgnoreCase));
|
||||
if (existingSetting == null)
|
||||
{
|
||||
_settings.AddSetting(setting);
|
||||
AddSyncEvent(setting.EntityName, setting.EntityId, setting.SettingId, SyncEventActions.Create);
|
||||
_logger.Log(LogLevel.Information, this, LogFunction.Update, "Setting Created {Setting}", setting);
|
||||
existing = _settings.AddSetting(setting);
|
||||
AddSyncEvent(existing.EntityName, existing.EntityId, existing.SettingId, SyncEventActions.Create);
|
||||
_logger.Log(LogLevel.Information, this, LogFunction.Update, "Setting Created {Setting}", existing);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (existingSetting.SettingValue != setting.SettingValue || (modified && existingSetting.IsPrivate != setting.IsPrivate))
|
||||
// note that SettingId will pnly be 0 if the Settings were converted from a Dictionary in the SettingService
|
||||
if (existing.SettingValue != setting.SettingValue || (existing.IsPrivate != setting.IsPrivate && setting.SettingId != 0))
|
||||
{
|
||||
existingSetting.SettingValue = setting.SettingValue;
|
||||
existingSetting.IsPrivate = setting.IsPrivate;
|
||||
_settings.UpdateSetting(existingSetting);
|
||||
AddSyncEvent(setting.EntityName, setting.EntityId, setting.SettingId, SyncEventActions.Update);
|
||||
_logger.Log(LogLevel.Information, this, LogFunction.Update, "Setting Updated {Setting}", setting);
|
||||
existing.SettingValue = setting.SettingValue;
|
||||
existing.IsPrivate = setting.IsPrivate;
|
||||
existing = _settings.UpdateSetting(existing);
|
||||
AddSyncEvent(existing.EntityName, existing.EntityId, existing.SettingId, SyncEventActions.Update);
|
||||
_logger.Log(LogLevel.Information, this, LogFunction.Update, "Setting Updated {Setting}", existing);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user