diff --git a/Oqtane.Client/Modules/Admin/Dashboard/Index.razor b/Oqtane.Client/Modules/Admin/Dashboard/Index.razor
index 6c665ba2..3e3eb82c 100644
--- a/Oqtane.Client/Modules/Admin/Dashboard/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Dashboard/Index.razor
@@ -27,6 +27,6 @@
protected override void OnInitialized()
{
var admin = PageState.Pages.FirstOrDefault(item => item.Path == "admin");
- _pages = PageState.Pages.Where(item => item.ParentId == admin?.PageId).ToList();
+ _pages = PageState.Pages.Where(item => item.ParentId == admin?.PageId && !item.IsDeleted).ToList();
}
}
diff --git a/Oqtane.Client/Modules/Admin/Logs/Index.razor b/Oqtane.Client/Modules/Admin/Logs/Index.razor
index 7a30893d..853409cb 100644
--- a/Oqtane.Client/Modules/Admin/Logs/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Logs/Index.razor
@@ -195,8 +195,8 @@ else
{
try
{
- var settings = PageState.Site.Settings;
- settings = SettingService.SetSetting(settings, "LogRetention", _retention);
+ var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId);
+ settings = SettingService.SetSetting(settings, "LogRetention", _retention, true);
await SettingService.UpdateSiteSettingsAsync(settings, PageState.Site.SiteId);
AddModuleMessage(Localizer["Success.SaveSiteSettings"], MessageType.Success);
diff --git a/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor b/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor
index 27f32ea7..d81480b5 100644
--- a/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor
+++ b/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor
@@ -128,7 +128,7 @@ else
var moduleDefinition = new ModuleDefinition { Owner = _owner, Name = _module, Description = _description, Template = _template, Version = _reference };
moduleDefinition = await ModuleDefinitionService.CreateModuleDefinitionAsync(moduleDefinition);
- var settings = ModuleState.Settings;
+ var settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId);
SettingService.SetSetting(settings, "ModuleDefinitionName", moduleDefinition.ModuleDefinitionName);
await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId);
diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor
index 63ce2afc..63f22032 100644
--- a/Oqtane.Client/Modules/Admin/Site/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Site/Index.razor
@@ -479,12 +479,12 @@
site = await SiteService.UpdateSiteAsync(site);
var settings = await SettingService.GetSiteSettingsAsync(site.SiteId);
- SettingService.SetSetting(settings, "SMTPHost", _smtphost, false);
- SettingService.SetSetting(settings, "SMTPPort", _smtpport, false);
- SettingService.SetSetting(settings, "SMTPSSL", _smtpssl, false);
- SettingService.SetSetting(settings, "SMTPUsername", _smtpusername, false);
- SettingService.SetSetting(settings, "SMTPPassword", _smtppassword, false);
- SettingService.SetSetting(settings, "SMTPSender", _smtpsender, false);
+ SettingService.SetSetting(settings, "SMTPHost", _smtphost, true);
+ SettingService.SetSetting(settings, "SMTPPort", _smtpport, true);
+ SettingService.SetSetting(settings, "SMTPSSL", _smtpssl, true);
+ SettingService.SetSetting(settings, "SMTPUsername", _smtpusername, true);
+ SettingService.SetSetting(settings, "SMTPPassword", _smtppassword, true);
+ SettingService.SetSetting(settings, "SMTPSender", _smtpsender, true);
await SettingService.UpdateSiteSettingsAsync(settings, site.SiteId);
if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host))
@@ -596,12 +596,12 @@
try
{
var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId);
- SettingService.SetSetting(settings, "SMTPHost", _smtphost);
- SettingService.SetSetting(settings, "SMTPPort", _smtpport);
- SettingService.SetSetting(settings, "SMTPSSL", _smtpssl);
- SettingService.SetSetting(settings, "SMTPUsername", _smtpusername);
- SettingService.SetSetting(settings, "SMTPPassword", _smtppassword);
- SettingService.SetSetting(settings, "SMTPSender", _smtpsender);
+ SettingService.SetSetting(settings, "SMTPHost", _smtphost, true);
+ SettingService.SetSetting(settings, "SMTPPort", _smtpport, true);
+ SettingService.SetSetting(settings, "SMTPSSL", _smtpssl, true);
+ SettingService.SetSetting(settings, "SMTPUsername", _smtpusername, true);
+ SettingService.SetSetting(settings, "SMTPPassword", _smtppassword, true);
+ SettingService.SetSetting(settings, "SMTPSender", _smtpsender, true);
await SettingService.UpdateSiteSettingsAsync(settings, PageState.Site.SiteId);
await logger.LogInformation("Site SMTP Settings Saved");
diff --git a/Oqtane.Client/Modules/Admin/Sql/Index.razor b/Oqtane.Client/Modules/Admin/Sql/Index.razor
index b22d279e..db41daaa 100644
--- a/Oqtane.Client/Modules/Admin/Sql/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Sql/Index.razor
@@ -57,22 +57,20 @@ else
{
@if (_results.Count > 0)
{
-
-
-
- @foreach (KeyValuePair kvp in _results.First())
- {
- @kvp.Key |
- }
-
-
- @foreach (KeyValuePair kvp in context)
- {
- @kvp.Value |
- }
-
-
-
+
+
+ @foreach (KeyValuePair kvp in _results.First())
+ {
+ @kvp.Key |
+ }
+
+
+ @foreach (KeyValuePair kvp in context)
+ {
+ @kvp.Value |
+ }
+
+
}
else
{
diff --git a/Oqtane.Client/Modules/Admin/Visitors/Index.razor b/Oqtane.Client/Modules/Admin/Visitors/Index.razor
index f0613839..a3f97ecd 100644
--- a/Oqtane.Client/Modules/Admin/Visitors/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Visitors/Index.razor
@@ -151,9 +151,9 @@ else
site.VisitorTracking = bool.Parse(_tracking);
await SiteService.UpdateSiteAsync(site);
- var settings = PageState.Site.Settings;
- settings = SettingService.SetSetting(settings, "VisitorFilter", _filter);
- settings = SettingService.SetSetting(settings, "VisitorRetention", _retention);
+ var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId);
+ settings = SettingService.SetSetting(settings, "VisitorFilter", _filter, true);
+ settings = SettingService.SetSetting(settings, "VisitorRetention", _retention, true);
await SettingService.UpdateSiteSettingsAsync(settings, PageState.Site.SiteId);
AddModuleMessage(Localizer["Success.SaveSiteSettings"], MessageType.Success);
diff --git a/Oqtane.Client/Modules/Controls/LocalizableComponent.cs b/Oqtane.Client/Modules/Controls/LocalizableComponent.cs
index 773df857..711504c6 100644
--- a/Oqtane.Client/Modules/Controls/LocalizableComponent.cs
+++ b/Oqtane.Client/Modules/Controls/LocalizableComponent.cs
@@ -13,6 +13,9 @@ namespace Oqtane.Modules.Controls
[Parameter]
public string ResourceKey { get; set; }
+ [Parameter]
+ public string ResourceType { get; set; }
+
protected bool IsLocalizable { get; private set; }
protected string Localize(string name) => _localizer?[name] ?? name;
@@ -50,9 +53,14 @@ namespace Oqtane.Modules.Controls
{
IsLocalizable = false;
- if (!String.IsNullOrEmpty(ResourceKey) && ModuleState?.ModuleType != null)
+ if (string.IsNullOrEmpty(ResourceType))
{
- var moduleType = Type.GetType(ModuleState.ModuleType);
+ ResourceType = ModuleState?.ModuleType;
+ }
+
+ if (!String.IsNullOrEmpty(ResourceKey) && !string.IsNullOrEmpty(ResourceType))
+ {
+ var moduleType = Type.GetType(ResourceType);
if (moduleType != null)
{
using (var scope = ServiceActivator.GetScope())
diff --git a/Oqtane.Client/Modules/Controls/Pager.razor b/Oqtane.Client/Modules/Controls/Pager.razor
index bd491d1f..99dbc1ca 100644
--- a/Oqtane.Client/Modules/Controls/Pager.razor
+++ b/Oqtane.Client/Modules/Controls/Pager.razor
@@ -54,21 +54,23 @@
}
@if (Format == "Table" && Row != null)
{
-
-
- @Header
-
-
- @foreach (var item in ItemList)
- {
- @Row(item)
- @if (Detail != null)
- {
- @Detail(item)
- }
- }
-
-
+
+
+
+ @Header
+
+
+ @foreach (var item in ItemList)
+ {
+ @Row(item)
+ @if (Detail != null)
+ {
+ @Detail(item)
+ }
+ }
+
+
+
}
@if (Format == "Grid" && Row != null)
{
diff --git a/Oqtane.Client/Modules/HtmlText/Settings.razor b/Oqtane.Client/Modules/HtmlText/Settings.razor
index 8aab9c77..237049a6 100644
--- a/Oqtane.Client/Modules/HtmlText/Settings.razor
+++ b/Oqtane.Client/Modules/HtmlText/Settings.razor
@@ -5,44 +5,45 @@
@inject IStringLocalizer Localizer
@inject IStringLocalizer SharedLocalizer
-
-
-
-
-
-
+
+
+
+
+
+
- @code {
- private string _allowfilemanagement;
+@code {
+ private string resourceType = "Oqtane.Modules.HtmlText.Settings, Oqtane.Client"; // for localization
+ private string _allowfilemanagement;
- protected override void OnInitialized()
+ protected override void OnInitialized()
+ {
+ try
{
- try
- {
- _allowfilemanagement = SettingService.GetSetting(ModuleState.Settings, "AllowFileManagement", "true");
- }
- catch (Exception ex)
- {
- ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
- }
+ _allowfilemanagement = SettingService.GetSetting(ModuleState.Settings, "AllowFileManagement", "true");
}
-
- public async Task UpdateSettings()
+ catch (Exception ex)
{
- try
- {
- var settings = ModuleState.Settings;
- settings = SettingService.SetSetting(settings, "AllowFileManagement", _allowfilemanagement);
- await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId);
- }
- catch (Exception ex)
- {
- ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
- }
+ ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
}
}
+
+ public async Task UpdateSettings()
+ {
+ try
+ {
+ var settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId);
+ settings = SettingService.SetSetting(settings, "AllowFileManagement", _allowfilemanagement);
+ await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId);
+ }
+ catch (Exception ex)
+ {
+ ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
+ }
+ }
+}
diff --git a/Oqtane.Client/Resources/Themes/OqtaneTheme/Containers/ContainerSettings.resx b/Oqtane.Client/Resources/Themes/OqtaneTheme/ContainerSettings.resx
similarity index 51%
rename from Oqtane.Client/Resources/Themes/OqtaneTheme/Containers/ContainerSettings.resx
rename to Oqtane.Client/Resources/Themes/OqtaneTheme/ContainerSettings.resx
index 4c05a1fb..1e4a939f 100644
--- a/Oqtane.Client/Resources/Themes/OqtaneTheme/Containers/ContainerSettings.resx
+++ b/Oqtane.Client/Resources/Themes/OqtaneTheme/ContainerSettings.resx
@@ -1,65 +1,65 @@
-
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+
diff --git a/Oqtane.Client/Resources/Themes/OqtaneTheme/Themes/ThemeSettings.resx b/Oqtane.Client/Resources/Themes/OqtaneTheme/ThemeSettings.resx
similarity index 99%
rename from Oqtane.Client/Resources/Themes/OqtaneTheme/Themes/ThemeSettings.resx
rename to Oqtane.Client/Resources/Themes/OqtaneTheme/ThemeSettings.resx
index 7d8c7c4d..7200f2dd 100644
--- a/Oqtane.Client/Resources/Themes/OqtaneTheme/Themes/ThemeSettings.resx
+++ b/Oqtane.Client/Resources/Themes/OqtaneTheme/ThemeSettings.resx
@@ -121,7 +121,7 @@
Specify if a Footer pane should always be displayed in a fixed location at the bottom of the page.
- Display Footer?
+ Display Fixed Footer?
Specify if a Login option should be displayed, Note that this option does not prevent the login page from being accessible via a direct url.
diff --git a/Oqtane.Client/Services/Interfaces/ISettingService.cs b/Oqtane.Client/Services/Interfaces/ISettingService.cs
index e02261f8..60099fd5 100644
--- a/Oqtane.Client/Services/Interfaces/ISettingService.cs
+++ b/Oqtane.Client/Services/Interfaces/ISettingService.cs
@@ -206,7 +206,7 @@ namespace Oqtane.Services
///
Dictionary SetSetting(Dictionary settings, string settingName, string settingValue);
- Dictionary SetSetting(Dictionary settings, string settingName, string settingValue, bool isPublic);
+ Dictionary SetSetting(Dictionary settings, string settingName, string settingValue, bool isPrivate);
Dictionary MergeSettings(Dictionary settings1, Dictionary settings2);
diff --git a/Oqtane.Client/Services/SettingService.cs b/Oqtane.Client/Services/SettingService.cs
index f67d585d..8f25bbaf 100644
--- a/Oqtane.Client/Services/SettingService.cs
+++ b/Oqtane.Client/Services/SettingService.cs
@@ -131,12 +131,12 @@ namespace Oqtane.Services
foreach (KeyValuePair kvp in settings)
{
string value = kvp.Value;
- bool ispublic = true;
+ bool isprivate = false;
if (value.StartsWith("[Private]"))
{
value = value.Substring(9); // remove [Private]
- ispublic = false;
+ isprivate = true;
}
Setting setting = settingsList.FirstOrDefault(item => item.SettingName.Equals(kvp.Key, StringComparison.OrdinalIgnoreCase));
@@ -147,22 +147,21 @@ namespace Oqtane.Services
setting.EntityId = entityId;
setting.SettingName = kvp.Key;
setting.SettingValue = value;
- setting.IsPublic = ispublic;
+ setting.IsPrivate = isprivate;
setting = await AddSettingAsync(setting);
}
else
{
- if (setting.SettingValue != value || setting.IsPublic != ispublic)
+ if (setting.SettingValue != value)
{
setting.SettingValue = value;
- setting.IsPublic = ispublic;
+ setting.IsPrivate = isprivate;
setting = await UpdateSettingAsync(setting);
}
}
}
}
-
public async Task GetSettingAsync(string entityName, int settingId)
{
return await GetJsonAsync($"{Apiurl}/{settingId}/{entityName}");
@@ -196,16 +195,16 @@ namespace Oqtane.Services
public Dictionary SetSetting(Dictionary settings, string settingName, string settingValue)
{
- return SetSetting(settings, settingName, settingValue, true);
+ return SetSetting(settings, settingName, settingValue, false);
}
- public Dictionary SetSetting(Dictionary settings, string settingName, string settingValue, bool isPublic)
+ public Dictionary SetSetting(Dictionary settings, string settingName, string settingValue, bool isPrivate)
{
if (settings == null)
{
settings = new Dictionary();
}
- settingValue = (isPublic) ? settingValue : "[Private]" + settingValue;
+ settingValue = (isPrivate) ? "[Private]" + settingValue : settingValue;
if (settings.ContainsKey(settingName))
{
settings[settingName] = settingValue;
diff --git a/Oqtane.Client/Themes/OqtaneTheme/Containers/ContainerSettings.razor b/Oqtane.Client/Themes/OqtaneTheme/Containers/ContainerSettings.razor
index 44e41bbd..b0c7774f 100644
--- a/Oqtane.Client/Themes/OqtaneTheme/Containers/ContainerSettings.razor
+++ b/Oqtane.Client/Themes/OqtaneTheme/Containers/ContainerSettings.razor
@@ -6,7 +6,7 @@
-
+
-
+
-
+
-
+
- @code {
- private string _title = "true";
- private string _background = "";
- private string _text = "";
- private string _border = "";
+@code {
+ private string resourceType = "Oqtane.Themes.OqtaneTheme.ContainerSettings, Oqtane.Client"; // for localization
+ private string _title = "true";
+ private string _background = "";
+ private string _text = "";
+ private string _border = "";
- protected override void OnInitialized()
+ protected override void OnInitialized()
+ {
+ try
{
- try
- {
- _title = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Title", "true");
- _background = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Background", "");
- _text = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Text", "");
- _border = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Border", "");
- }
- catch (Exception ex)
- {
- ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
- }
+ _title = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Title", "true");
+ _background = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Background", "");
+ _text = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Text", "");
+ _border = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Border", "");
}
-
- public async Task UpdateSettings()
+ catch (Exception ex)
{
- try
- {
- var settings = ModuleState.Settings;
- settings = SettingService.SetSetting(settings, GetType().Namespace + ":Title", _title);
- settings = SettingService.SetSetting(settings, GetType().Namespace + ":Background", _background);
- settings = SettingService.SetSetting(settings, GetType().Namespace + ":Text", _text);
- settings = SettingService.SetSetting(settings, GetType().Namespace + ":Border", _border);
- await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId);
- }
- catch (Exception ex)
- {
- ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
- }
+ ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
}
}
+
+ public async Task UpdateSettings()
+ {
+ try
+ {
+ var settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId);
+ settings = SettingService.SetSetting(settings, GetType().Namespace + ":Title", _title);
+ settings = SettingService.SetSetting(settings, GetType().Namespace + ":Background", _background);
+ settings = SettingService.SetSetting(settings, GetType().Namespace + ":Text", _text);
+ settings = SettingService.SetSetting(settings, GetType().Namespace + ":Border", _border);
+ await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId);
+ }
+ catch (Exception ex)
+ {
+ ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
+ }
+ }
+}
diff --git a/Oqtane.Client/Themes/OqtaneTheme/Themes/ThemeSettings.razor b/Oqtane.Client/Themes/OqtaneTheme/Themes/ThemeSettings.razor
index ecebce19..25f03f45 100644
--- a/Oqtane.Client/Themes/OqtaneTheme/Themes/ThemeSettings.razor
+++ b/Oqtane.Client/Themes/OqtaneTheme/Themes/ThemeSettings.razor
@@ -8,7 +8,7 @@
-
+
-
+
-
+
-
+
@code {
- private string _scope = "page";
- private string _login = "-";
- private string _register = "-";
- private string _footer = "-";
+ private string resourceType = "Oqtane.Themes.OqtaneTheme.ThemeSettings, Oqtane.Client"; // for localization
+ private string _scope = "page";
+ private string _login = "-";
+ private string _register = "-";
+ private string _footer = "-";
- protected override async Task OnInitializedAsync()
- {
- try
- {
- await LoadSettings();
+ protected override async Task OnInitializedAsync()
+ {
+ try
+ {
+ await LoadSettings();
}
catch (Exception ex)
{
@@ -110,7 +111,7 @@
{
if (_scope == "site")
{
- var settings = PageState.Site.Settings;
+ var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId);
if (_login != "-")
{
settings = SettingService.SetSetting(settings, GetType().Namespace + ":Login", _login, true);
@@ -127,7 +128,7 @@
}
else
{
- var settings = PageState.Page.Settings;
+ var settings = await SettingService.GetPageSettingsAsync(PageState.Page.PageId);
if (_login != "-")
{
settings = SettingService.SetSetting(settings, GetType().Namespace + ":Login", _login);
diff --git a/Oqtane.Server/Controllers/ModuleController.cs b/Oqtane.Server/Controllers/ModuleController.cs
index cfcad970..100f30ad 100644
--- a/Oqtane.Server/Controllers/ModuleController.cs
+++ b/Oqtane.Server/Controllers/ModuleController.cs
@@ -75,7 +75,7 @@ namespace Oqtane.Controllers
module.ModuleDefinition = moduledefinitions.Find(item => item.ModuleDefinitionName == module.ModuleDefinitionName);
module.Settings = settings.Where(item => item.EntityId == pagemodule.ModuleId)
- .Where(item => item.IsPublic || _userPermissions.IsAuthorized(User, PermissionNames.Edit, pagemodule.Module.Permissions))
+ .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, pagemodule.Module.Permissions))
.ToDictionary(setting => setting.SettingName, setting => setting.SettingValue);
modules.Add(module);
@@ -102,7 +102,7 @@ namespace Oqtane.Controllers
List
moduledefinitions = _moduleDefinitions.GetModuleDefinitions(module.SiteId).ToList();
module.ModuleDefinition = moduledefinitions.Find(item => item.ModuleDefinitionName == module.ModuleDefinitionName);
module.Settings = _settings.GetSettings(EntityNames.Module, id)
- .Where(item => item.IsPublic || _userPermissions.IsAuthorized(User, PermissionNames.Edit, module.Permissions))
+ .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, module.Permissions))
.ToDictionary(setting => setting.SettingName, setting => setting.SettingValue);
return module;
}
diff --git a/Oqtane.Server/Controllers/PageController.cs b/Oqtane.Server/Controllers/PageController.cs
index a0bf6213..5112924f 100644
--- a/Oqtane.Server/Controllers/PageController.cs
+++ b/Oqtane.Server/Controllers/PageController.cs
@@ -57,7 +57,7 @@ namespace Oqtane.Controllers
if (_userPermissions.IsAuthorized(User, PermissionNames.View, page.Permissions))
{
page.Settings = settings.Where(item => item.EntityId == page.PageId)
- .Where(item => item.IsPublic || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions))
+ .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions))
.ToDictionary(setting => setting.SettingName, setting => setting.SettingValue);
pages.Add(page);
}
@@ -89,7 +89,7 @@ namespace Oqtane.Controllers
if (page != null && page.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User,PermissionNames.View, page.Permissions))
{
page.Settings = _settings.GetSettings(EntityNames.Page, page.PageId)
- .Where(item => item.IsPublic || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions))
+ .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions))
.ToDictionary(setting => setting.SettingName, setting => setting.SettingValue);
return page;
}
@@ -109,7 +109,7 @@ namespace Oqtane.Controllers
if (page != null && page.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User, PermissionNames.View, page.Permissions))
{
page.Settings = _settings.GetSettings(EntityNames.Page, page.PageId)
- .Where(item => item.IsPublic || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions))
+ .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions))
.ToDictionary(setting => setting.SettingName, setting => setting.SettingValue);
return page;
}
diff --git a/Oqtane.Server/Controllers/SettingController.cs b/Oqtane.Server/Controllers/SettingController.cs
index 248342ab..6165a07e 100644
--- a/Oqtane.Server/Controllers/SettingController.cs
+++ b/Oqtane.Server/Controllers/SettingController.cs
@@ -41,9 +41,9 @@ namespace Oqtane.Controllers
if (IsAuthorized(entityName, entityId, PermissionNames.View))
{
settings = _settings.GetSettings(entityName, entityId).ToList();
- if (FilterPublic(entityName, entityId))
+ if (FilterPrivate(entityName, entityId))
{
- settings = settings.Where(item => item.IsPublic).ToList();
+ settings = settings.Where(item => !item.IsPrivate).ToList();
}
}
else
@@ -61,7 +61,7 @@ namespace Oqtane.Controllers
Setting setting = _settings.GetSetting(entityName, id);
if (IsAuthorized(setting.EntityName, setting.EntityId, PermissionNames.View))
{
- if (FilterPublic(entityName, id) && !setting.IsPublic)
+ if (FilterPrivate(entityName, id) && setting.IsPrivate)
{
setting = null;
}
@@ -199,7 +199,7 @@ namespace Oqtane.Controllers
return authorized;
}
- private bool FilterPublic(string entityName, int entityId)
+ private bool FilterPrivate(string entityName, int entityId)
{
bool filter = false;
switch (entityName)
diff --git a/Oqtane.Server/Controllers/SiteController.cs b/Oqtane.Server/Controllers/SiteController.cs
index 1ff066a8..9a50b91f 100644
--- a/Oqtane.Server/Controllers/SiteController.cs
+++ b/Oqtane.Server/Controllers/SiteController.cs
@@ -45,7 +45,7 @@ namespace Oqtane.Controllers
if (site.SiteId == _alias.SiteId)
{
site.Settings = _settings.GetSettings(EntityNames.Site, site.SiteId)
- .Where(item => item.IsPublic || User.IsInRole(RoleNames.Admin))
+ .Where(item => !item.IsPrivate || User.IsInRole(RoleNames.Admin))
.ToDictionary(setting => setting.SettingName, setting => setting.SettingValue);
return site;
}
diff --git a/Oqtane.Server/Migrations/Tenant/03000202_UpdateSettingIsPrivate.cs b/Oqtane.Server/Migrations/Tenant/03000202_UpdateSettingIsPrivate.cs
new file mode 100644
index 00000000..1d4f25c0
--- /dev/null
+++ b/Oqtane.Server/Migrations/Tenant/03000202_UpdateSettingIsPrivate.cs
@@ -0,0 +1,32 @@
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Oqtane.Databases.Interfaces;
+using Oqtane.Migrations.EntityBuilders;
+using Oqtane.Repository;
+using Oqtane.Shared;
+
+namespace Oqtane.Migrations.Tenant
+{
+ [DbContext(typeof(TenantDBContext))]
+ [Migration("Tenant.03.00.02.02")]
+ public class UpdateSettingIsPrivate : MultiDatabaseMigration
+ {
+ public UpdateSettingIsPrivate(IDatabase database) : base(database)
+ {
+ }
+
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ var settingEntityBuilder = new SettingEntityBuilder(migrationBuilder, ActiveDatabase);
+ settingEntityBuilder.AddBooleanColumn("IsPrivate", true);
+ settingEntityBuilder.UpdateColumn("IsPrivate", "0", "bool", "");
+ settingEntityBuilder.UpdateColumn("IsPrivate", "1", "bool", "EntityName = 'Site' AND SettingName LIKE 'SMTP%'");
+ settingEntityBuilder.DropColumn("IsPublic");
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ // not implemented
+ }
+ }
+}
diff --git a/Oqtane.Shared/Models/Setting.cs b/Oqtane.Shared/Models/Setting.cs
index 37d72dbe..4b3c66b0 100644
--- a/Oqtane.Shared/Models/Setting.cs
+++ b/Oqtane.Shared/Models/Setting.cs
@@ -33,9 +33,9 @@ namespace Oqtane.Models
public string SettingValue { get; set; }
///
- /// Indicates if this setting is publicly available - only applicable to Site Settings as other entities have more granular permissions
+ /// Indicates if this setting is private - indicating it should be maintained on the server and not sent to the client
///
- public bool IsPublic { get; set; }
+ public bool IsPrivate { get; set; }
#region IAuditable Properties
diff --git a/Oqtane.Shared/Shared/Utilities.cs b/Oqtane.Shared/Shared/Utilities.cs
index b1313a7a..89b33341 100644
--- a/Oqtane.Shared/Shared/Utilities.cs
+++ b/Oqtane.Shared/Shared/Utilities.cs
@@ -1,7 +1,6 @@
using Oqtane.Models;
using System;
using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.IO;
using System.Linq;
@@ -107,7 +106,7 @@ namespace Oqtane.Shared
public static string ContentUrl(Alias alias, int fileId, bool asAttachment)
{
var aliasUrl = (alias != null && !string.IsNullOrEmpty(alias.Path)) ? "/" + alias.Path : "";
- var method = asAttachment ? "/attach":"";
+ var method = asAttachment ? "/attach" : "";
return $"{aliasUrl}{Constants.ContentUrl}{fileId}{method}";
}
@@ -128,7 +127,7 @@ namespace Oqtane.Shared
public static string TenantUrl(Alias alias, string url)
{
- url = (!url.StartsWith("/")) ? "/" + url : url;
+ url = (!url.StartsWith("/")) ? "/" + url : url;
return (alias != null && !string.IsNullOrEmpty(alias.Path)) ? "/" + alias.Path + url : url;
}