@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))
{
x
-
Add Page
-
Edit Page
-
Delete Page
@if (PageState.EditMode)
{
}
else
{
}
}
@code {
List categories = new List();
List moduledefinitions;
Dictionary containers = new Dictionary();
int pagemanagementmoduleid = -1;
string moduledefinitionname = "";
string pane = "";
string title = "";
string containertype = "";
protected override async Task OnInitializedAsync()
{
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();
containers = ThemeService.GetContainerTypes(PageState.Themes);
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 AddModule()
{
if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions))
{
Module module = new Module();
module.SiteId = PageState.Site.SiteId;
module.ModuleDefinitionName = moduledefinitionname;
module.Permissions = PageState.Page.Permissions;
module = await ModuleService.AddModuleAsync(module);
PageModule pagemodule = new PageModule();
pagemodule.PageId = PageState.Page.PageId;
pagemodule.ModuleId = module.ModuleId;
if (title == "")
{
title = moduledefinitions.Where(item => item.ModuleDefinitionName == moduledefinitionname).FirstOrDefault().Name;
}
pagemodule.Title = title;
pagemodule.Pane = pane;
pagemodule.Order = int.MaxValue;
pagemodule.ContainerType = containertype;
await PageModuleService.AddPageModuleAsync(pagemodule);
await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, pagemodule.Pane);
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.ToString().ToLower(), Reload.Page));
}
}
}