@namespace Oqtane.Modules.Admin.Pages @inherits ModuleBase @inject NavigationManager NavigationManager @inject IPageService PageService @inject IThemeService ThemeService
@if (children != null && children.Count > 0 && (insert == "<" || insert == ">")) { }
Cancel

@code { public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } } Dictionary themes = new Dictionary(); Dictionary panelayouts = new Dictionary(); List pages; int PageId; string name; string path; string currentparentid; string parentid; string insert = "="; List children; int childid = -1; string isnavigation; string mode; string themetype; string layouttype; string icon; string permissions; string createdby; DateTime createdon; string modifiedby; DateTime modifiedon; string deletedby; DateTime? deletedon; string isdeleted; PermissionGrid permissiongrid; protected override void OnInitialized() { try { pages = PageState.Pages; children = PageState.Pages.Where(item => item.ParentId == null).ToList(); themes = ThemeService.GetThemeTypes(PageState.Themes); PageId = Int32.Parse(PageState.QueryString["id"]); Page page = PageState.Pages.Where(item => item.PageId == PageId).FirstOrDefault(); if (page != null) { name = page.Name; path = page.Path; if (path.Contains("/")) { path = path.Substring(path.LastIndexOf("/") + 1); } if (page.ParentId == null) { parentid = ""; } else { parentid = page.ParentId.ToString(); } currentparentid = parentid; isnavigation = page.IsNavigation.ToString(); mode = (page.EditMode) ? "edit" : "view"; themetype = page.ThemeType; panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes, themetype); layouttype = page.LayoutType; icon = page.Icon; permissions = page.Permissions; createdby = page.CreatedBy; createdon = page.CreatedOn; modifiedby = page.ModifiedBy; modifiedon = page.ModifiedOn; deletedby = page.DeletedBy; deletedon = page.DeletedOn; isdeleted = page.IsDeleted.ToString(); } } catch (Exception ex) { AddModuleMessage(ex.Message, MessageType.Error); } } private void ParentChanged(ChangeEventArgs e) { try { parentid = (string)e.Value; if (parentid == "-1") { children = PageState.Pages.Where(item => item.ParentId == null).ToList(); } else { children = PageState.Pages.Where(item => item.ParentId == int.Parse(parentid)).ToList(); } if (parentid == currentparentid) { insert = "="; } else { insert = ">>"; } StateHasChanged(); } catch (Exception ex) { AddModuleMessage(ex.Message, MessageType.Error); } } private void ThemeChanged(ChangeEventArgs e) { try { themetype = (string)e.Value; if (themetype != "") { panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes, themetype); } else { panelayouts = new Dictionary(); } StateHasChanged(); } catch (Exception ex) { AddModuleMessage(ex.Message, MessageType.Error); } } private async Task SavePage() { try { if (name != "" && !string.IsNullOrEmpty(themetype) && (panelayouts.Count == 0 || !string.IsNullOrEmpty(layouttype))) { Page page = PageState.Pages.Where(item => item.PageId == PageId).FirstOrDefault(); string currentpath = page.Path; page.Name = name; if (path == "" && name.ToLower() != "home") { path = name; } if (path.Contains("/")) { path = path.Substring(path.LastIndexOf("/") + 1); } if (string.IsNullOrEmpty(parentid)) { page.ParentId = null; page.Path = Utilities.GetFriendlyUrl(path); } else { page.ParentId = Int32.Parse(parentid); Page parent = PageState.Pages.Where(item => item.PageId == page.ParentId).FirstOrDefault(); if (parent.Path == "") { page.Path = Utilities.GetFriendlyUrl(parent.Name) + "/" + Utilities.GetFriendlyUrl(path); } else { page.Path = parent.Path + "/" + Utilities.GetFriendlyUrl(path); } } if (insert != "=") { Page child; switch (insert) { case "<<": page.Order = 0; break; case "<": child = PageState.Pages.Where(item => item.PageId == childid).FirstOrDefault(); page.Order = child.Order - 1; break; case ">": child = PageState.Pages.Where(item => item.PageId == childid).FirstOrDefault(); page.Order = child.Order + 1; break; case ">>": page.Order = int.MaxValue; break; } } page.IsNavigation = (isnavigation == null ? true : Boolean.Parse(isnavigation)); page.EditMode = (mode == "edit" ? true : false); page.ThemeType = themetype; page.LayoutType = (layouttype == null ? "" : layouttype); page.Icon = (icon == null ? "" : icon); page.Permissions = permissiongrid.GetPermissions(); page.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted)); if (page.ThemeType == PageState.Site.DefaultThemeType) { page.ThemeType = ""; } if (page.LayoutType == PageState.Site.DefaultLayoutType) { page.LayoutType = ""; } await PageService.UpdatePageAsync(page); await PageService.UpdatePageOrderAsync(page.SiteId, page.ParentId); if (currentparentid == "") { await PageService.UpdatePageOrderAsync(page.SiteId, null); } else { await PageService.UpdatePageOrderAsync(page.SiteId, int.Parse(currentparentid)); } // update child paths if (parentid != currentparentid) { foreach (Page p in PageState.Pages.Where(item => item.Path.StartsWith(currentpath))) { p.Path = p.Path.Replace(currentpath, page.Path); await PageService.UpdatePageAsync(p); } } NavigationManager.NavigateTo(NavigateUrl(page.Path, Reload.Site)); } else { AddModuleMessage("You Must Provide Page Name And Theme", MessageType.Warning); } } catch (Exception ex) { AddModuleMessage(ex.Message, MessageType.Error); } } }