@using Microsoft.AspNetCore.Components.Routing @using Oqtane.Services @using Oqtane.Models @using Oqtane.Themes @using Oqtane.Shared @inherits ThemeObjectBase @inject IUriHelper UriHelper @inject IUserService UserService @inject IModuleDefinitionService ModuleDefinitionService @inject IThemeService ThemeService @inject IModuleService ModuleService @inject IPageModuleService PageModuleService
x

@if (moduledefinitions != null) { }
@functions { string display = "display: none"; List moduledefinitions; Dictionary containers = new Dictionary(); int pagemanagementmoduleid; string moduledefinitionname; string pane; string title = ""; string containertype; protected override async Task OnInitAsync() { //TODO: Move this to shared component. This is used in this control Add, Edit, and Delete controls as well moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(); 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)) { display = "display: inline"; } } private async Task AddModule() { Module module = new Module(); module.SiteId = PageState.Site.SiteId; module.ModuleDefinitionName = moduledefinitionname; module.ViewPermissions = PageState.Page.ViewPermissions; module.EditPermissions = PageState.Page.EditPermissions; await ModuleService.AddModuleAsync(module); List modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId, moduledefinitionname); int ModuleId = modules.LastOrDefault().ModuleId; PageModule pagemodule = new PageModule(); pagemodule.PageId = PageState.Page.PageId; pagemodule.ModuleId = ModuleId; if (title == "") { title = moduledefinitions.Where(item => item.ModuleDefinitionName == moduledefinitionname).FirstOrDefault().Name; } pagemodule.Title = title; pagemodule.Pane = pane; pagemodule.Order = 0; pagemodule.ContainerType = containertype; await PageModuleService.AddPageModuleAsync(pagemodule); UriHelper.NavigateTo(PageState.Alias + PageState.Page.Path + "?reload=true"); } private string PageUrl(string action) { string url = ""; switch (action) { case "Add": url = "admin/pages?mid=" + pagemanagementmoduleid.ToString() + "&ctl=" + action; break; case "Edit": url = "admin/pages?mid=" + pagemanagementmoduleid.ToString() + "&ctl=" + action + "&id=" + PageState.Page.PageId.ToString(); break; case "Delete": url = "admin/pages?mid=" + pagemanagementmoduleid.ToString() + "&ctl=" + action + "&id=" + PageState.Page.PageId.ToString(); break; } return url; } }