@namespace Oqtane.Themes.Controls @using Oqtane.Enums @inherits ThemeControlBase @inject NavigationManager NavigationManager @inject IUserService UserService @inject IModuleDefinitionService ModuleDefinitionService @inject IThemeService ThemeService @inject IModuleService ModuleService @inject IPageService PageService @inject IPageModuleService PageModuleService @inject ILogService logger @if (_moduleDefinitions != null && UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions)) {
Control Panel
@if (UserSecurity.IsAuthorized(PageState.User, Constants.AdminRole)) {

} @if (_deleteConfirmation) {
}
@if (_moduleType == "new") { @if (_moduleDefinitions != null) { @((MarkupString)@_description) } } else { }

@((MarkupString) _message)
} @if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions) || (PageState.Page.IsPersonalizable && PageState.User != null)) { @if (PageState.Page.EditMode) { } else { if (PageState.EditMode) { } else { } } } @if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions)) { } @code { private bool _deleteConfirmation = false; private string _moduleType = "new"; private List _categories = new List(); private List _allModuleDefinitions; private List _moduleDefinitions; private List _pages = new List(); private string _pageId = "-"; private string _moduleId = "-"; private List _modules = new List(); private Dictionary _containers = new Dictionary(); private string _moduleDefinitionName = "-"; private string _category = "Common"; private string _description = ""; private string _pane = ""; private string _title = ""; private string _containerType = ""; private string _display = "display: none;"; private string _message = ""; [Parameter] public string ButtonClass { get; set; } [Parameter] public string CardClass { get; set; } [Parameter] public string HeaderClass { get; set; } [Parameter] public string BodyClass { get; set; } protected override async Task OnParametersSetAsync() { if (string.IsNullOrEmpty(ButtonClass)) { ButtonClass = "btn-outline-primary"; } if (string.IsNullOrEmpty(CardClass)) { CardClass = "card bg-secondary mb-3"; } if (string.IsNullOrEmpty(HeaderClass)) { HeaderClass = "card-header text-white"; } if (string.IsNullOrEmpty(BodyClass)) { BodyClass = "card-body"; } if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions)) { _pages?.Clear(); foreach (Page p in PageState.Pages) { if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.View, p.Permissions)) { _pages.Add(p); } } var panes = PageState.Page.Panes.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries); _pane = panes.Count() == 1 ? panes.SingleOrDefault() : ""; var themes = await ThemeService.GetThemesAsync(); _containers = ThemeService.GetContainerTypes(themes); _containerType = PageState.Site.DefaultContainerType; _allModuleDefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); _categories = new List(); foreach (ModuleDefinition moduledefinition in _allModuleDefinitions) { if (moduledefinition.Categories != "") { foreach (string category in moduledefinition.Categories.Split(',')) { if (!_categories.Contains(category)) { _categories.Add(category); } } } } _category = "Common"; _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(_category)).ToList(); _moduleDefinitionName = "-"; _description = ""; } } private void CategoryChanged(ChangeEventArgs e) { _category = (string) e.Value; _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(_category)).ToList(); _moduleDefinitionName = "-"; _description = ""; StateHasChanged(); } private void ModuleChanged(ChangeEventArgs e) { _moduleDefinitionName = (string)e.Value; if (_moduleDefinitionName != "-") { var moduleDefinition = _moduleDefinitions.FirstOrDefault(item => item.ModuleDefinitionName == _moduleDefinitionName); _description = "
" + moduleDefinition.Description + "
"; } else { _description = ""; } StateHasChanged(); } private void PageChanged(ChangeEventArgs e) { _pageId = (string) e.Value; _modules?.Clear(); if (_pageId != "-") { foreach (Module module in PageState.Modules.Where(item => item.PageId == int.Parse(_pageId) && !item.IsDeleted)) { if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.View, module.Permissions)) { _modules.Add(module); } } } _moduleId = "-"; StateHasChanged(); } private async Task AddModule() { if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions)) { if ((_moduleType == "new" && _moduleDefinitionName != "-") || (_moduleType != "new" && _moduleId != "-")) { if (_moduleType == "new") { Module module = new Module(); module.SiteId = PageState.Site.SiteId; module.PageId = PageState.Page.PageId; module.ModuleDefinitionName = _moduleDefinitionName; module.Permissions = PageState.Page.Permissions; module = await ModuleService.AddModuleAsync(module); _moduleId = module.ModuleId.ToString(); } var pageModule = new PageModule { PageId = PageState.Page.PageId, ModuleId = int.Parse(_moduleId), Title = _title }; if (pageModule.Title == "") { if (_moduleType == "new") { pageModule.Title = _moduleDefinitions.FirstOrDefault(item => item.ModuleDefinitionName == _moduleDefinitionName)?.Name; } else { pageModule.Title = _modules.FirstOrDefault(item => item.ModuleId == int.Parse(_moduleId))?.Title; } } pageModule.Pane = _pane; pageModule.Order = int.MaxValue; pageModule.ContainerType = _containerType; if (pageModule.ContainerType == PageState.Site.DefaultContainerType) { pageModule.ContainerType = ""; } await PageModuleService.AddPageModuleAsync(pageModule); await PageModuleService.UpdatePageModuleOrderAsync(pageModule.PageId, pageModule.Pane); _message = "
Module Added To Page
"; _moduleDefinitionName = "-"; _description = ""; _pane = ""; _title = ""; _containerType = ""; _pageId = "-"; _moduleId = "-"; NavigationManager.NavigateTo(NavigateUrl()); } else { _message = "
You Must Select A Module
"; } } else { _message = "
Not Authorized
"; } } private async Task ToggleEditMode(bool EditMode) { if (UserSecurity.IsAuthorized(PageState.User,PermissionNames.Edit, PageState.Page.Permissions)) { if (EditMode) { PageState.EditMode = false; } else { PageState.EditMode = true; } NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"))); } else { if (PageState.Page.IsPersonalizable && PageState.User != null) { await PageService.AddPageAsync(PageState.Page.PageId, PageState.User.UserId); PageState.EditMode = true; NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"))); } } } private void ShowControlPanel() { _message = ""; _display = "width: 25%; min-width: 375px;"; StateHasChanged(); } private void HideControlPanel() { _message = ""; _display = "width: 0%;"; StateHasChanged(); } private void Navigate(string location) { HideControlPanel(); Module module; switch (location) { case "Admin": // get admin dashboard moduleid module = PageState.Modules.FirstOrDefault(item => item.ModuleDefinitionName == Constants.AdminDashboardModule); if (module != null) { NavigationManager.NavigateTo(EditUrl(PageState.Page.Path, module.ModuleId, "Index", "")); } break; case "Add": case "Edit": string url = ""; // get page management moduleid module = PageState.Modules.FirstOrDefault(item => item.ModuleDefinitionName == Constants.PageManagementModule); if (module != null) { switch (location) { case "Add": url = EditUrl(PageState.Page.Path, module.ModuleId, location, ""); break; case "Edit": url = EditUrl(PageState.Page.Path, module.ModuleId, location, "id=" + PageState.Page.PageId.ToString()); break; } } if (url != "") { NavigationManager.NavigateTo(url); } break; } } private void ConfirmDelete() { _deleteConfirmation = !_deleteConfirmation; StateHasChanged(); } private async Task DeletePage() { ConfirmDelete(); var page = PageState.Page; try { if (page.UserId == null) { page.IsDeleted = true; await PageService.UpdatePageAsync(page); await logger.Log(page.PageId, null, PageState.User.UserId, GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, null, "Page Deleted {Page}", page); NavigationManager.NavigateTo(NavigateUrl("")); } else // personalized page { await PageService.DeletePageAsync(page.PageId); await logger.Log(page.PageId, null, PageState.User.UserId, GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, null, "Page Deleted {Page}", page); NavigationManager.NavigateTo(NavigateUrl()); } } catch (Exception ex) { await logger.Log(page.PageId, null, PageState.User.UserId, GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, ex, "Page Deleted {Page} {Error}", page, ex.Message); } } }