User experience improvements
This commit is contained in:
		| @ -102,7 +102,6 @@ | ||||
|                         </td> | ||||
|                         <td> | ||||
|                             <select id="Theme" class="form-control" value="@_themetype" @onchange="(e => ThemeChanged(e))"> | ||||
|                                 <option value="-"><@Localizer["Inherit From Site"]></option> | ||||
|                                 @foreach (var theme in _themes) | ||||
|                                 { | ||||
|                                     <option value="@theme.TypeName">@theme.Name</option> | ||||
| @ -110,37 +109,13 @@ | ||||
|                             </select> | ||||
|                         </td> | ||||
|                     </tr> | ||||
|                     @if (_layouts.Count > 0) | ||||
|                     { | ||||
|                         <tr> | ||||
|                             <td> | ||||
|                                 <Label For="Layout" HelpText="Select a layout for the page (if the selected theme supports it)" ResourceKey="Layout">Layout: </Label> | ||||
|                             </td> | ||||
|                             <td> | ||||
|                                 <select id="Layout" class="form-control" @bind="@_layouttype"> | ||||
|                                     <option value="-"><@Localizer["Inherit From Site"]></option> | ||||
|                                     @foreach (var layout in _layouts) | ||||
|                                     { | ||||
|                                         if (layout.TypeName == _layouttype) | ||||
|                                         { | ||||
|                                             <option value="@(layout.TypeName)" selected>@(layout.Name)</option> | ||||
|                                         } | ||||
|                                         else | ||||
|                                         { | ||||
|                                             <option value="@(layout.TypeName)">@(layout.Name)</option> | ||||
|                                         } | ||||
|                                     } | ||||
|                                 </select> | ||||
|                             </td> | ||||
|                         </tr> | ||||
|                     } | ||||
|                     <tr> | ||||
|                         <td> | ||||
|                             <Label For="defaultContainer" HelpText="Select the default container for the page" ResourceKey="DefaultContainer">Default Container: </Label> | ||||
|                         </td> | ||||
|                         <td> | ||||
|                             <select id="defaultContainer" class="form-control" @bind="@_containertype"> | ||||
|                                 <option value="-"><@Localizer["Inherit From Site"]></option> | ||||
|                                 <option value="-"><@Localizer["Select Container"]></option> | ||||
|                                 @foreach (var container in _containers) | ||||
|                                 { | ||||
|                                     <option value="@container.TypeName">@container.Name</option> | ||||
| @ -180,14 +155,21 @@ | ||||
|             </tr> | ||||
|         </table> | ||||
|     </TabPanel> | ||||
|     @if (_themeSettingsType != null) | ||||
|     { | ||||
|         <TabPanel Name="ThemeSettings" Heading="Theme Settings" ResourceKey="ThemeSettings"> | ||||
|             @ThemeSettingsComponent | ||||
|         </TabPanel> | ||||
|     } | ||||
| </TabStrip> | ||||
| <button type="button" class="btn btn-success" @onclick="SavePage">@Localizer["Save"]</button> | ||||
| <button type="button" class="btn btn-secondary" @onclick="Cancel">@Localizer["Cancel"]</button> | ||||
|  | ||||
| @code { | ||||
|     public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; | ||||
|  | ||||
|     private List<Theme> _themeList; | ||||
|     private List<ThemeControl> _themes = new List<ThemeControl>(); | ||||
|     private List<ThemeControl> _layouts = new List<ThemeControl>(); | ||||
|     private List<ThemeControl> _containers = new List<ThemeControl>(); | ||||
|     private List<Page> _pageList; | ||||
|     private string _name; | ||||
| @ -200,25 +182,28 @@ | ||||
|     private string _isnavigation = "True"; | ||||
|     private string _url; | ||||
|     private string _ispersonalizable = "False"; | ||||
|     private string _themetype = "-"; | ||||
|     private string _layouttype = "-"; | ||||
|     private string _containertype = "-"; | ||||
|     private string _themetype = string.Empty; | ||||
|     private string _containertype = string.Empty; | ||||
|     private string _icon = string.Empty; | ||||
|     private string _permissions = string.Empty; | ||||
|     private PermissionGrid _permissionGrid; | ||||
|  | ||||
|     public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; | ||||
|     private Type _themeSettingsType; | ||||
|     private object _themeSettings; | ||||
|     private RenderFragment ThemeSettingsComponent { get; set; } | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             _themeList = await ThemeService.GetThemesAsync(); | ||||
|             _themes = ThemeService.GetThemeControls(_themeList); | ||||
|             _themetype = PageState.Site.DefaultThemeType; | ||||
|             _containers = ThemeService.GetContainerControls(_themeList, _themetype); | ||||
|             _containertype = PageState.Site.DefaultContainerType; | ||||
|             _pageList = PageState.Pages; | ||||
|             _children = PageState.Pages.Where(item => item.ParentId == null).ToList(); | ||||
|  | ||||
|             _themes = ThemeService.GetThemeControls(_themeList); | ||||
|             _permissions = string.Empty; | ||||
|             ThemeSettings(); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
| @ -267,18 +252,9 @@ | ||||
|         try | ||||
|         { | ||||
|             _themetype = (string)e.Value; | ||||
|             if (_themetype != "-") | ||||
|             { | ||||
|                 _layouts = ThemeService.GetLayoutControls(_themeList, _themetype); | ||||
|                 _containers = ThemeService.GetContainerControls(_themeList, _themetype); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 _layouts = new List<ThemeControl>(); | ||||
|                 _containers = new List<ThemeControl>(); | ||||
|             } | ||||
|             _layouttype = "-"; | ||||
|             _containers = ThemeService.GetContainerControls(_themeList, _themetype); | ||||
|             _containertype = "-"; | ||||
|             ThemeSettings(); | ||||
|             StateHasChanged(); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
| @ -288,12 +264,31 @@ | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void ThemeSettings() | ||||
|     { | ||||
|         _themeSettingsType = null; | ||||
|         var theme = _themeList.FirstOrDefault(item => item.Themes.Any(themecontrol => themecontrol.TypeName.Equals(_themetype))); | ||||
|         if (theme != null && !string.IsNullOrEmpty(theme.ThemeSettingsType)) | ||||
|         { | ||||
|             _themeSettingsType = Type.GetType(theme.ThemeSettingsType); | ||||
|             if (_themeSettingsType != null) | ||||
|             { | ||||
|                 ThemeSettingsComponent = builder => | ||||
|                 { | ||||
|                     builder.OpenComponent(0, _themeSettingsType); | ||||
|                     builder.AddComponentReferenceCapture(1, inst => { _themeSettings = Convert.ChangeType(inst, _themeSettingsType); }); | ||||
|                     builder.CloseComponent(); | ||||
|                 }; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task SavePage() | ||||
|     { | ||||
|         Page page = null; | ||||
|         try | ||||
|         { | ||||
|             if (_name != string.Empty && !string.IsNullOrEmpty(_themetype) && (_layouts.Count == 0 || _layouttype != "-")) | ||||
|             if (_name != string.Empty && !string.IsNullOrEmpty(_themetype) && _containertype != "-") | ||||
|             { | ||||
|                 page = new Page(); | ||||
|                 page.SiteId = PageState.Page.SiteId; | ||||
| @ -360,11 +355,6 @@ | ||||
|                 { | ||||
|                     page.ThemeType = string.Empty; | ||||
|                 } | ||||
|                 page.LayoutType = (_layouttype != "-") ? _layouttype : string.Empty; | ||||
|                 if (!string.IsNullOrEmpty(page.LayoutType) && page.LayoutType == PageState.Site.DefaultLayoutType) | ||||
|                 { | ||||
|                     page.LayoutType = string.Empty; | ||||
|                 } | ||||
|                 page.DefaultContainerType = (_containertype != "-") ? _containertype : string.Empty; | ||||
|                 if (!string.IsNullOrEmpty(page.DefaultContainerType) && page.DefaultContainerType == PageState.Site.DefaultContainerType) | ||||
|                 { | ||||
| @ -390,7 +380,7 @@ | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 AddModuleMessage(Localizer["You Must Provide Page Name And Theme/Layout"], MessageType.Warning); | ||||
|                 AddModuleMessage(Localizer["You Must Provide Page Name, Theme, and Container"], MessageType.Warning); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shaun Walker
					Shaun Walker