commit
8ee9aed817
|
@ -179,6 +179,17 @@ namespace Oqtane.Services
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task UpdateSettingsAsync(Dictionary<string, string> settings, string entityName, int entityId);
|
Task UpdateSettingsAsync(Dictionary<string, string> settings, string entityName, int entityId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Updates setting for a given entityName and Id
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entityName"></param>
|
||||||
|
/// <param name="entityId"></param>
|
||||||
|
/// <param name="settingName"></param>
|
||||||
|
/// <param name="settingValue"></param>
|
||||||
|
/// <param name="isPrivate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task AddOrUpdateSettingAsync(string entityName, int entityId, string settingName, string settingValue, bool isPrivate);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a specific setting
|
/// Returns a specific setting
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace Oqtane.Services
|
||||||
[PrivateApi("Don't show in the documentation, as everything should use the Interface")]
|
[PrivateApi("Don't show in the documentation, as everything should use the Interface")]
|
||||||
public class SettingService : ServiceBase, ISettingService
|
public class SettingService : ServiceBase, ISettingService
|
||||||
{
|
{
|
||||||
public SettingService(HttpClient http, SiteState siteState) : base(http, siteState) { }
|
public SettingService(HttpClient http, SiteState siteState) : base(http, siteState) {}
|
||||||
|
|
||||||
private string Apiurl => CreateApiUrl("Setting");
|
private string Apiurl => CreateApiUrl("Setting");
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ namespace Oqtane.Services
|
||||||
public async Task<Dictionary<string, string>> GetSettingsAsync(string entityName, int entityId)
|
public async Task<Dictionary<string, string>> GetSettingsAsync(string entityName, int entityId)
|
||||||
{
|
{
|
||||||
var dictionary = new Dictionary<string, string>();
|
var dictionary = new Dictionary<string, string>();
|
||||||
var settings = await GetJsonAsync<List<Setting>>($"{Apiurl}?entityname={entityName}&entityid={entityId}");
|
var settings = await GetSettingsAsync(entityName, entityId, "");
|
||||||
if (settings != null)
|
if (settings != null)
|
||||||
{
|
{
|
||||||
foreach (Setting setting in settings.OrderBy(item => item.SettingName).ToList())
|
foreach (Setting setting in settings.OrderBy(item => item.SettingName).ToList())
|
||||||
|
@ -147,7 +147,7 @@ namespace Oqtane.Services
|
||||||
|
|
||||||
public async Task UpdateSettingsAsync(Dictionary<string, string> settings, string entityName, int entityId)
|
public async Task UpdateSettingsAsync(Dictionary<string, string> settings, string entityName, int entityId)
|
||||||
{
|
{
|
||||||
var settingsList = await GetJsonAsync<List<Setting>>($"{Apiurl}?entityname={entityName}&entityid={entityId}");
|
var settingsList = await GetSettingsAsync(entityName, entityId, "");
|
||||||
|
|
||||||
foreach (KeyValuePair<string, string> kvp in settings)
|
foreach (KeyValuePair<string, string> kvp in settings)
|
||||||
{
|
{
|
||||||
|
@ -192,14 +192,14 @@ namespace Oqtane.Services
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task AddOrUpdateSettingAsync(string entityName, int entityId, string settingName, string settingValue, bool isPrivate)
|
||||||
|
{
|
||||||
|
await PutJsonAsync<object>($"{Apiurl}/{entityName}/{entityId}/{settingName}/{settingValue}/{isPrivate}", null);
|
||||||
|
}
|
||||||
|
|
||||||
public async Task DeleteSettingAsync(string entityName, int entityId, string settingName)
|
public async Task DeleteSettingAsync(string entityName, int entityId, string settingName)
|
||||||
{
|
{
|
||||||
var settings = await GetJsonAsync<List<Setting>>($"{Apiurl}?entityname={entityName}&entityid={entityId}");
|
await DeleteAsync($"{Apiurl}/{entityName}/{entityId}/{settingName}");
|
||||||
var setting = settings.FirstOrDefault(item => item.SettingName == settingName);
|
|
||||||
if (setting != null)
|
|
||||||
{
|
|
||||||
await DeleteAsync($"{Apiurl}/{setting.SettingId}/{entityName}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<List<Setting>> GetSettingsAsync(string entityName, int entityId, string settingName)
|
public async Task<List<Setting>> GetSettingsAsync(string entityName, int entityId, string settingName)
|
||||||
|
|
|
@ -134,8 +134,7 @@
|
||||||
if (PageState.User != null)
|
if (PageState.User != null)
|
||||||
{
|
{
|
||||||
// preserve edit mode for authenticated users
|
// preserve edit mode for authenticated users
|
||||||
var userSettings = new Dictionary<string, string> { { "CP-editmode", (PageState.EditMode) ? PageState.Page.PageId.ToString() : "-1" } };
|
await SettingService.AddOrUpdateSettingAsync(EntityNames.User, PageState.User.UserId, "CP-editmode", (PageState.EditMode) ? PageState.Page.PageId.ToString() : "-1", false);
|
||||||
await SettingService.UpdateUserSettingsAsync(userSettings, PageState.User.UserId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// preserve other querystring parameters
|
// preserve other querystring parameters
|
||||||
|
|
|
@ -270,9 +270,8 @@
|
||||||
{
|
{
|
||||||
if (editpageid != -1)
|
if (editpageid != -1)
|
||||||
{
|
{
|
||||||
// reset edit page
|
// reset edit mode page
|
||||||
var userSettings = new Dictionary<string, string> { { "CP-editmode", "-1" } };
|
await SettingService.AddOrUpdateSettingAsync(EntityNames.User, user.UserId, "CP-editmode", "-1", false);
|
||||||
await SettingService.UpdateUserSettingsAsync(userSettings, user.UserId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,14 +146,52 @@ namespace Oqtane.Controllers
|
||||||
return setting;
|
return setting;
|
||||||
}
|
}
|
||||||
|
|
||||||
// DELETE api/<controller>/5/xxx
|
// PUT api/<controller>/site/1/settingname/x/false
|
||||||
[HttpDelete("{id}/{entityName}")]
|
[HttpPut("{entityName}/{entityId}/{settingName}/{settingValue}/{isPrivate}")]
|
||||||
public void Delete(string entityName, int id)
|
public void Put(string entityName, int entityId, string settingName, string settingValue, bool isPrivate)
|
||||||
{
|
{
|
||||||
Setting setting = _settings.GetSetting(entityName, id);
|
if (IsAuthorized(entityName, entityId, PermissionNames.Edit))
|
||||||
|
{
|
||||||
|
Setting setting = _settings.GetSetting(entityName, entityId, settingName);
|
||||||
|
if (setting == null)
|
||||||
|
{
|
||||||
|
setting = new Setting();
|
||||||
|
setting.EntityName = entityName;
|
||||||
|
setting.EntityId = entityId;
|
||||||
|
setting.SettingName = settingName;
|
||||||
|
setting.SettingValue = settingValue;
|
||||||
|
setting.IsPrivate = isPrivate;
|
||||||
|
setting = _settings.AddSetting(setting);
|
||||||
|
AddSyncEvent(setting.EntityName, setting.EntityId, setting.SettingId, SyncEventActions.Create);
|
||||||
|
_logger.Log(LogLevel.Information, this, LogFunction.Update, "Setting Created {Setting}", setting);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (setting.SettingValue != settingValue || setting.IsPrivate != isPrivate)
|
||||||
|
{
|
||||||
|
setting.SettingValue = settingValue;
|
||||||
|
setting.IsPrivate = isPrivate;
|
||||||
|
setting = _settings.UpdateSetting(setting);
|
||||||
|
AddSyncEvent(setting.EntityName, setting.EntityId, setting.SettingId, SyncEventActions.Update);
|
||||||
|
_logger.Log(LogLevel.Information, this, LogFunction.Update, "Setting Updated {Setting}", setting);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.Log(LogLevel.Error, this, LogFunction.Update, "User Not Authorized To Add Or Update Setting {EntityName} {EntityId} {SettingName}", entityName, entityId, settingName);
|
||||||
|
HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DELETE api/<controller>/site/1/settingname
|
||||||
|
[HttpDelete("{entityName}/{entityId}/{settingName}")]
|
||||||
|
public void Delete(string entityName, int entityId, string settingName)
|
||||||
|
{
|
||||||
|
Setting setting = _settings.GetSetting(entityName, entityId, settingName);
|
||||||
if (IsAuthorized(setting.EntityName, setting.EntityId, PermissionNames.Edit))
|
if (IsAuthorized(setting.EntityName, setting.EntityId, PermissionNames.Edit))
|
||||||
{
|
{
|
||||||
_settings.DeleteSetting(setting.EntityName, id);
|
_settings.DeleteSetting(setting.EntityName, setting.SettingId);
|
||||||
AddSyncEvent(setting.EntityName, setting.EntityId, setting.SettingId, SyncEventActions.Delete);
|
AddSyncEvent(setting.EntityName, setting.EntityId, setting.SettingId, SyncEventActions.Delete);
|
||||||
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "Setting Deleted {Setting}", setting);
|
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "Setting Deleted {Setting}", setting);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user