@namespace Oqtane.Modules.Controls @using System.IO @using Radzen @using Radzen.Blazor @inherits ModuleControlBase @inject DialogService DialogService @inject Radzen.ThemeService ThemeService @inject ISettingService SettingService @inject IRadzenEditorSettingService EditorSettingService @inject IStringLocalizer Localizer
@Localizer["Scope"]
@Localizer["Theme"]
@Localizer["Background"]
@Localizer["Toolbar"]
@code { private readonly IList _themes = new List { "default", "dark", "material", "material-dark", "standard", "standard-dark", "humanistic", "humanistic-dark", "software", "software-dark" }; private readonly IList _backgroundColors = new List { "Default", "Light", "Dark" }; private int _settingScope; private string _theme; private string _background; private IList _toolbarItems = new List(); private string _addToolbarItem; protected override async Task OnInitializedAsync() { _settingScope = await EditorSettingService.GetSettingScopeAsync(ModuleState.ModuleId); await LoadSettings(); } private async Task LoadSettingsFromModule() { return await EditorSettingService.LoadSettingsFromModuleAsync(ModuleState.ModuleId); } private async Task LoadSettingsFromSite() { return await EditorSettingService.LoadSettingsFromSiteAsync(PageState.Site.SiteId); } private async Task LoadSettings() { var editorSetting = _settingScope == 1 ? await LoadSettingsFromModule() : await LoadSettingsFromSite(); _theme = editorSetting.Theme; _background = editorSetting.Background; _toolbarItems = editorSetting.ToolbarItems.Split(',').Select((v, i) => { return new ToolbarItem { Key = i, Name = v }; }).ToList(); } private async Task OnScopeChanged() { await LoadSettings(); StateHasChanged(); } private void AddToolbarItem() { if (!string.IsNullOrEmpty(_addToolbarItem)) { _toolbarItems.Add(new ToolbarItem { Key = _toolbarItems.Count, Name = _addToolbarItem }); _addToolbarItem = string.Empty; StateHasChanged(); } } private void ResetToolbarItem() { _toolbarItems = RadzenEditorDefinitions.DefaultToolbarItems.Split(',').Select((v, i) => { return new ToolbarItem { Key = i, Name = v }; }).ToList(); StateHasChanged(); } private void DeleteToolbarItem(ToolbarItem item) { _toolbarItems.Remove(item); StateHasChanged(); } private void OnCancelClick() { DialogService.Close(false); } private async Task OnOkClick() { var editorSetting = new RadzenEditorSetting { Theme = _theme, Background = _background, ToolbarItems = string.Join(",", _toolbarItems.Select(i => i.Name)) }; await EditorSettingService.UpdateSettingScopeAsync(ModuleState.ModuleId, _settingScope); if (_settingScope == 1) { await EditorSettingService.SaveModuleSettingsAsync(ModuleState.ModuleId, editorSetting); } else { await EditorSettingService.SaveSiteSettingsAsync(PageState.Site.SiteId, editorSetting); } DialogService.Close(true); } private void OnToolbarItemDrop(RadzenDropZoneItemEventArgs args) { if (args.ToItem != null && args.ToItem.Key != args.Item.Key) { _toolbarItems.Remove(args.Item); _toolbarItems.Insert(_toolbarItems.IndexOf(args.ToItem), args.Item); } } private void OnToolbarItemRender(RadzenDropZoneItemRenderEventArgs args) { args.Attributes.Add("class", "rz-card rz-variant-flat rz-background-color-primary-lighter rz-color-on-primary-lighter rz-p-2 d-inline-block ms-1 mt-1"); } public class ToolbarItem { public int Key { get; set; } public string Name { get; set; } } }