161 lines
6.9 KiB
Plaintext
161 lines
6.9 KiB
Plaintext
@namespace Oqtane.Themes.OqtaneTheme
|
|
@inherits ModuleBase
|
|
@implements Oqtane.Interfaces.ISettingsControl
|
|
@inject ISettingService SettingService
|
|
@inject IStringLocalizer<ThemeSettings> Localizer
|
|
@inject IStringLocalizer<SharedResources> SharedLocalizer
|
|
@attribute [OqtaneIgnore]
|
|
|
|
<div class="container">
|
|
<div class="row mb-1 align-items-center">
|
|
<Label Class="col-sm-3" For="scope" ResourceKey="Scope" ResourceType="@resourceType" HelpText="Specify if the settings are applicable to this page or the entire site.">Setting Scope:</Label>
|
|
<div class="col-sm-9">
|
|
<select id="scope" class="form-select" value="@_scope" @onchange="(e => ScopeChanged(e))">
|
|
@if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin))
|
|
{
|
|
<option value="site">@Localizer["Site"]</option>
|
|
}
|
|
<option value="page">@Localizer["Page"]</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1 align-items-center">
|
|
<Label Class="col-sm-3" For="login" ResourceKey="Login" ResourceType="@resourceType" HelpText="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.">Show Login?</Label>
|
|
<div class="col-sm-9">
|
|
<select id="login" class="form-select" @bind="@_login">
|
|
<option value="-"><@SharedLocalizer["Not Specified"]></option>
|
|
<option value="true">@SharedLocalizer["Yes"]</option>
|
|
<option value="false">@SharedLocalizer["No"]</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1 align-items-center">
|
|
<Label Class="col-sm-3" For="register" ResourceKey="Register" ResourceType="@resourceType" HelpText="Specify if a Register option should be displayed. Note that this option is also dependent on the Allow Registration option in Site Settings.">Show Register?</Label>
|
|
<div class="col-sm-9">
|
|
<select id="register" class="form-select" @bind="@_register">
|
|
<option value="-"><@SharedLocalizer["Not Specified"]></option>
|
|
<option value="true">@SharedLocalizer["Yes"]</option>
|
|
<option value="false">@SharedLocalizer["No"]</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-1 align-items-center">
|
|
<Label Class="col-sm-3" For="footer" ResourceKey="Footer" ResourceType="@resourceType" HelpText="Specify if a Footer pane should always be displayed in a fixed location at the bottom of the page">Display Fixed Footer?</Label>
|
|
<div class="col-sm-9">
|
|
<select id="footer" class="form-select" @bind="@_footer">
|
|
<option value="-"><@SharedLocalizer["Not Specified"]></option>
|
|
<option value="true">@SharedLocalizer["Yes"]</option>
|
|
<option value="false">@SharedLocalizer["No"]</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@code {
|
|
private int pageId = -1;
|
|
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()
|
|
{
|
|
if (PageState.QueryString.ContainsKey("id"))
|
|
{
|
|
pageId = int.Parse(PageState.QueryString["id"]);
|
|
}
|
|
|
|
try
|
|
{
|
|
await LoadSettings();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
await logger.LogError(ex, "Error Loading Settings {Error}", ex.Message);
|
|
AddModuleMessage("Error Loading Settings", MessageType.Error);
|
|
}
|
|
}
|
|
|
|
private async Task LoadSettings()
|
|
{
|
|
if (_scope == "site")
|
|
{
|
|
var settings = PageState.Site.Settings;
|
|
_login = SettingService.GetSetting(settings, GetType().Namespace + ":Login", "true");
|
|
_register = SettingService.GetSetting(settings, GetType().Namespace + ":Register", "true");
|
|
_footer = SettingService.GetSetting(settings, GetType().Namespace + ":Footer", "false");
|
|
}
|
|
else
|
|
{
|
|
var settings = await SettingService.GetPageSettingsAsync(pageId);
|
|
settings = SettingService.MergeSettings(PageState.Site.Settings, settings);
|
|
_login = SettingService.GetSetting(settings, GetType().Namespace + ":Login", "-");
|
|
_register = SettingService.GetSetting(settings, GetType().Namespace + ":Register", "-");
|
|
_footer = SettingService.GetSetting(settings, GetType().Namespace + ":Footer", "-");
|
|
}
|
|
await Task.Yield();
|
|
}
|
|
|
|
private async Task ScopeChanged(ChangeEventArgs eventArgs)
|
|
{
|
|
try
|
|
{
|
|
_scope = (string)eventArgs.Value;
|
|
await LoadSettings();
|
|
StateHasChanged();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
await logger.LogError(ex, "Error Loading Settings {Error}", ex.Message);
|
|
AddModuleMessage("Error Loading Settings", MessageType.Error);
|
|
}
|
|
}
|
|
|
|
public async Task UpdateSettings()
|
|
{
|
|
try
|
|
{
|
|
if (_scope == "site")
|
|
{
|
|
var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId);
|
|
if (_login != "-")
|
|
{
|
|
settings = SettingService.SetSetting(settings, GetType().Namespace + ":Login", _login);
|
|
}
|
|
if (_register != "-")
|
|
{
|
|
settings = SettingService.SetSetting(settings, GetType().Namespace + ":Register", _register);
|
|
}
|
|
if (_footer != "-")
|
|
{
|
|
settings = SettingService.SetSetting(settings, GetType().Namespace + ":Footer", _footer);
|
|
}
|
|
await SettingService.UpdateSiteSettingsAsync(settings, PageState.Site.SiteId);
|
|
}
|
|
else
|
|
{
|
|
var settings = await SettingService.GetPageSettingsAsync(pageId);
|
|
if (_login != "-")
|
|
{
|
|
settings = SettingService.SetSetting(settings, GetType().Namespace + ":Login", _login);
|
|
}
|
|
if (_register != "-")
|
|
{
|
|
settings = SettingService.SetSetting(settings, GetType().Namespace + ":Register", _register);
|
|
}
|
|
if (_footer != "-")
|
|
{
|
|
settings = SettingService.SetSetting(settings, GetType().Namespace + ":Footer", _footer);
|
|
}
|
|
await SettingService.UpdatePageSettingsAsync(settings, pageId);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
await logger.LogError(ex, "Error Saving Settings {Error}", ex.Message);
|
|
AddModuleMessage("Error Saving Settings", MessageType.Error);
|
|
}
|
|
}
|
|
}
|