@namespace Oqtane.Themes.Controls @inherits ThemeControlBase @inject NavigationManager NavigationManager @inject IUserService UserService @inject IModuleDefinitionService ModuleDefinitionService @inject IThemeService ThemeService @inject IModuleService ModuleService @inject IPageModuleService PageModuleService @if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions)) {
Control Panel

@if (moduletype == "new") { @if (moduledefinitions != null) { } } else { }
@((MarkupString)@message)
@if (PageState.EditMode) { } else { } } @code { [Parameter] public string ButtonClass { get; set; } [Parameter] public string CardClass { get; set; } string moduletype = "new"; List categories = new List(); List moduledefinitions; List pages = new List(); string moduleid = ""; List modules = new List(); Dictionary containers = new Dictionary(); int pagemanagementmoduleid = -1; string moduledefinitionname = ""; string pane = ""; string title = ""; string containertype = ""; string display = "display: none;"; string buttonclass = "btn-outline-primary"; string cardclass = "text-white bg-secondary"; string message = ""; protected override async Task OnParametersSetAsync() { if (!string.IsNullOrEmpty(ButtonClass)) { buttonclass = ButtonClass; } if (!string.IsNullOrEmpty(CardClass)) { cardclass = CardClass; } if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions)) { foreach (ModuleDefinition moduledefinition in PageState.ModuleDefinitions) { if (moduledefinition.Categories != "") { foreach (string category in moduledefinition.Categories.Split(',')) { if (!categories.Contains(category)) { categories.Add(category); } } } } moduledefinitions = PageState.ModuleDefinitions.Where(item => item.Categories == "").ToList(); foreach(Page p in PageState.Pages) { if (UserSecurity.IsAuthorized(PageState.User, "View", p.Permissions)) { pages.Add(p); } } var panes = PageState.Page.Panes.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); pane = panes.Count() == 1 ? panes.SingleOrDefault() : ""; containers = ThemeService.GetContainerTypes(PageState.Themes); containertype = PageState.Site.DefaultContainerType; List modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId, Constants.PageManagementModule); if (modules.Count > 0) { pagemanagementmoduleid = modules.FirstOrDefault().ModuleId; } } } private void CategoryChanged(ChangeEventArgs e) { string category = (string)e.Value; if (category == "-") { moduledefinitions = PageState.ModuleDefinitions.Where(item => item.Categories == "").ToList(); } else { moduledefinitions = PageState.ModuleDefinitions.Where(item => item.Categories.Contains(e.Value.ToString())).ToList(); } moduledefinitionname = ""; StateHasChanged(); } private async Task PageChanged(ChangeEventArgs e) { string pageid = (string)e.Value; if (pageid != "") { foreach(Module module in await ModuleService.GetModulesAsync(int.Parse(pageid))) { if (UserSecurity.IsAuthorized(PageState.User, "View", module.Permissions)) { modules.Add(module); } } } moduleid = ""; StateHasChanged(); } private async Task AddModule() { if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions)) { if (moduletype == "new") { Module module = new Module(); module.SiteId = PageState.Site.SiteId; module.ModuleDefinitionName = moduledefinitionname; module.Permissions = PageState.Page.Permissions; module = await ModuleService.AddModuleAsync(module); moduleid = module.ModuleId.ToString(); } PageModule pagemodule = new PageModule(); pagemodule.PageId = PageState.Page.PageId; pagemodule.ModuleId = int.Parse(moduleid); pagemodule.Title = title; if (pagemodule.Title == "") { if (moduletype == "new") { pagemodule.Title = moduledefinitions.Where(item => item.ModuleDefinitionName == moduledefinitionname).FirstOrDefault().Name; } else { pagemodule.Title = modules.Where(item => item.ModuleId == int.Parse(moduleid)).FirstOrDefault().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
"; NavigationManager.NavigateTo(NavigateUrl(Reload.Page)); } } private string PageUrl(string action) { string url = ""; if (pagemanagementmoduleid != -1) { switch (action) { case "Add": url = EditUrl("admin/pages", pagemanagementmoduleid, action, ""); break; case "Edit": url = EditUrl("admin/pages", pagemanagementmoduleid, action, "id=" + PageState.Page.PageId.ToString()); break; case "Delete": url = EditUrl("admin/pages", pagemanagementmoduleid, action, "id=" + PageState.Page.PageId.ToString()); break; } } return url; } private void EditMode() { if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions)) { if (PageState.EditMode) { PageState.EditMode = false; PageState.DesignMode = false; } else { PageState.EditMode = true; PageState.DesignMode = true; } NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"), Reload.Page)); } } private void ShowControlPanel() { message = ""; display = "width: 25%;"; StateHasChanged(); } private void HideControlPanel() { message = ""; display = "width: 0%;"; StateHasChanged(); } private void Navigate(string location) { HideControlPanel(); switch (location) { case "Admin": NavigationManager.NavigateTo(NavigateUrl("admin")); break; case "Add": case "Edit": case "Delete": NavigationManager.NavigateTo(PageUrl(location)); break; } } }