diff --git a/Oqtane.Client/Modules/Admin/ModuleSettings/Index.razor b/Oqtane.Client/Modules/Admin/ModuleSettings/Index.razor index aab99dc7..e5b4ef4c 100644 --- a/Oqtane.Client/Modules/Admin/ModuleSettings/Index.razor +++ b/Oqtane.Client/Modules/Admin/ModuleSettings/Index.razor @@ -80,14 +80,7 @@ protected override async Task OnInitAsync() { title = ModuleState.Title; - List Themes = await ThemeService.GetThemesAsync(); - foreach (Theme theme in Themes) - { - foreach (string container in theme.ContainerControls.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) - { - containers.Add(container, theme.Name + " - " + @Utilities.GetTypeNameClass(container)); - } - } + containers = ThemeService.GetContainerTypes(await ThemeService.GetThemesAsync()); containertype = ModuleState.ContainerType; viewpermissions = ModuleState.ViewPermissions; editpermissions = ModuleState.EditPermissions; diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor index e78398ee..4a39046b 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor @@ -134,18 +134,9 @@ protected override async Task OnInitAsync() { - List Themes = await ThemeService.GetThemesAsync(); - foreach (Theme theme in Themes) - { - foreach (string themecontrol in theme.ThemeControls.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) - { - themes.Add(themecontrol, theme.Name + " - " + @Utilities.GetTypeNameClass(themecontrol)); - } - foreach (string panelayout in theme.PaneLayouts.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) - { - panelayouts.Add(panelayout, theme.Name + " - " + @Utilities.GetTypeNameClass(panelayout)); - } - } + var Themes = await ThemeService.GetThemesAsync(); + themes = ThemeService.GetThemeTypes(Themes); + panelayouts = ThemeService.GetPaneLayoutTypes(Themes); } private async Task SavePage() diff --git a/Oqtane.Client/Modules/Admin/Pages/Delete.razor b/Oqtane.Client/Modules/Admin/Pages/Delete.razor index 8192315e..e8464ff6 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Delete.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Delete.razor @@ -136,17 +136,8 @@ protected override async Task OnInitAsync() { List Themes = await ThemeService.GetThemesAsync(); - foreach (Theme theme in Themes) - { - foreach (string themecontrol in theme.ThemeControls.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) - { - themes.Add(themecontrol, theme.Name + " - " + @Utilities.GetTypeNameClass(themecontrol)); - } - foreach (string panelayout in theme.PaneLayouts.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) - { - panelayouts.Add(panelayout, theme.Name + " - " + @Utilities.GetTypeNameClass(panelayout)); - } - } + themes = ThemeService.GetThemeTypes(Themes); + panelayouts = ThemeService.GetPaneLayoutTypes(Themes); PageId = Int32.Parse(PageState.QueryString["id"]); Page p = PageState.Pages.Where(item => item.PageId == PageId).FirstOrDefault(); diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor index 3be0d431..fb381e39 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor @@ -136,17 +136,8 @@ protected override async Task OnInitAsync() { List Themes = await ThemeService.GetThemesAsync(); - foreach (Theme theme in Themes) - { - foreach (string themeControl in theme.ThemeControls.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) - { - themes.Add(themeControl, theme.Name + " - " + @Utilities.GetTypeNameClass(themeControl)); - } - foreach (string panelayout in theme.PaneLayouts.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) - { - panelayouts.Add(panelayout, theme.Name + " - " + @Utilities.GetTypeNameClass(panelayout)); - } - } + themes = ThemeService.GetThemeTypes(Themes); + panelayouts = ThemeService.GetPaneLayoutTypes(Themes); PageId = Int32.Parse(PageState.QueryString["id"]); Page p = PageState.Pages.Where(item => item.PageId == PageId).FirstOrDefault(); diff --git a/Oqtane.Client/Services/ISkinService.cs b/Oqtane.Client/Services/ISkinService.cs deleted file mode 100644 index 413960f9..00000000 --- a/Oqtane.Client/Services/ISkinService.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Oqtane.Models; -using System.Collections.Generic; -using System.Threading.Tasks; - -namespace Oqtane.Services -{ - public interface IThemeService - { - Task> GetThemesAsync(); - } -} diff --git a/Oqtane.Client/Services/IthemeService.cs b/Oqtane.Client/Services/IthemeService.cs new file mode 100644 index 00000000..dcc6f674 --- /dev/null +++ b/Oqtane.Client/Services/IthemeService.cs @@ -0,0 +1,14 @@ +using Oqtane.Models; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Oqtane.Services +{ + public interface IThemeService + { + Task> GetThemesAsync(); + Dictionary GetThemeTypes(List themes); + Dictionary GetPaneLayoutTypes(List themes); + Dictionary GetContainerTypes(List themes); + } +} diff --git a/Oqtane.Client/Services/ThemeService.cs b/Oqtane.Client/Services/ThemeService.cs index 0cccd098..5ed20b45 100644 --- a/Oqtane.Client/Services/ThemeService.cs +++ b/Oqtane.Client/Services/ThemeService.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Components; using System.Reflection; using System; +using Oqtane.Shared; namespace Oqtane.Services { @@ -21,7 +22,7 @@ namespace Oqtane.Services this.http = http; apiurl = CreateApiUrl(urihelper.GetAbsoluteUri(), "Theme"); } - + //TODO: Implement Caching or otherwise on this, and other calls within this class public async Task> GetThemesAsync() { if (themes == null) @@ -56,5 +57,44 @@ namespace Oqtane.Services } return themes.OrderBy(item => item.Name).ToList(); } + + public Dictionary GetThemeTypes(List themes) + { + var selectableThemes = new Dictionary(); + foreach (Theme theme in themes) + { + foreach (string themecontrol in theme.ThemeControls.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) + { + selectableThemes.Add(themecontrol, theme.Name + " - " + Utilities.GetTypeNameClass(themecontrol)); + } + } + return selectableThemes; + } + + public Dictionary GetPaneLayoutTypes(List themes) + { + var selectablePaneLayouts = new Dictionary(); + foreach (Theme theme in themes) + { + foreach (string panelayout in theme.PaneLayouts.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) + { + selectablePaneLayouts.Add(panelayout, theme.Name + " - " + @Utilities.GetTypeNameClass(panelayout)); + } + } + return selectablePaneLayouts; + } + + public Dictionary GetContainerTypes(List themes) + { + var selectableContainers = new Dictionary(); + foreach (Theme theme in themes) + { + foreach (string container in theme.ContainerControls.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) + { + selectableContainers.Add(container, theme.Name + " - " + @Utilities.GetTypeNameClass(container)); + } + } + return selectableContainers; + } } } diff --git a/Oqtane.Client/Themes/Controls/ControlPanel.razor b/Oqtane.Client/Themes/Controls/ControlPanel.razor index f87698b3..70ca422c 100644 --- a/Oqtane.Client/Themes/Controls/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/ControlPanel.razor @@ -84,14 +84,7 @@ { //TODO: Move this to shared component. This is used in this control Add, Edit, and Delete controls as well moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(); - List themes = await ThemeService.GetThemesAsync(); - foreach (Theme theme in themes) - { - foreach (string container in theme.ContainerControls.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) - { - containers.Add(container, theme.Name + " - " + @Utilities.GetTypeNameClass(container)); - } - } + containers = ThemeService.GetContainerTypes(await ThemeService.GetThemesAsync()); List modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId, Constants.PageManagementModule); pagemanagementmoduleid = modules.FirstOrDefault().ModuleId; if (UserService.IsAuthorized(PageState.User, PageState.Page.EditPermissions))