@namespace Oqtane.Themes.Controls @inherits ThemeControlBase @inject NavigationManager NavigationManager @inject IPageService PageService @if (ShowLanguageSwitcher) { } @if (_showEditMode || (PageState.Page.IsPersonalizable && PageState.User != null && UserSecurity.IsAuthorized(PageState.User, RoleNames.Registered))) {
@if (PageState.EditMode) { } else { }
} @if (_canViewAdminDashboard || UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) { @if (PageState.RenderMode == RenderModes.Interactive) { } else { } } @code { [Parameter] public string ButtonClass { get; set; } = "btn-outline-secondary"; [Parameter] public string ContainerClass { get; set; } = "offcanvas offcanvas-end"; [Parameter] public string HeaderClass { get; set; } = "offcanvas-header"; [Parameter] public string BodyClass { get; set; } = "offcanvas-body overflow-auto"; [Parameter] public bool ShowLanguageSwitcher { get; set; } = true; [Parameter] public string LanguageDropdownAlignment { get; set; } = string.Empty; // Empty or Left or Right private bool _canViewAdminDashboard = false; private bool _showEditMode = false; protected override void OnParametersSet() { _canViewAdminDashboard = CanViewAdminDashboard(); _showEditMode = false; if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) { _showEditMode = true; } else { foreach (var module in PageState.Modules.Where(item => item.PageId == PageState.Page.PageId)) { if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, module.PermissionList)) { _showEditMode = true; break; } } } } private bool CanViewAdminDashboard() { var admin = PageState.Pages.FirstOrDefault(item => item.Path == "admin"); if (admin != null) { foreach (var page in PageState.Pages.Where(item => item.ParentId == admin?.PageId)) { if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, page.PermissionList)) { return true; } } } return false; } private async Task ToggleEditMode(bool EditMode) { Page page = null; if (PageState.Page.IsPersonalizable && PageState.User != null && UserSecurity.IsAuthorized(PageState.User, RoleNames.Registered)) { page = await PageService.AddPageAsync(PageState.Page.PageId, PageState.User.UserId); } if (_showEditMode) { if (EditMode) { PageState.EditMode = false; } else { PageState.EditMode = true; } // preserve other querystring parameters if (PageState.QueryString.ContainsKey("edit")) PageState.QueryString.Remove("edit"); PageState.QueryString.Add("edit", PageState.EditMode.ToString().ToLower()); var url = PageState.Route.AbsolutePath + Utilities.CreateQueryString(PageState.QueryString); NavigationManager.NavigateTo(url); } else { if (PageState.Page.IsPersonalizable && PageState.User != null && UserSecurity.IsAuthorized(PageState.User, RoleNames.Registered)) { PageState.EditMode = true; NavigationManager.NavigateTo(NavigateUrl(page.Path, "edit=" + ((PageState.EditMode) ? "true" : "false"))); } } } }