diff --git a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor index 89b90245..29220bfe 100644 --- a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor @@ -17,7 +17,7 @@ } -@if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions) || (PageState.Page.IsPersonalizable && PageState.User != null && UserSecurity.IsAuthorized(PageState.User, RoleNames.Registered))) +@if (_showEditMode || (PageState.Page.IsPersonalizable && PageState.User != null && UserSecurity.IsAuthorized(PageState.User, RoleNames.Registered))) { if (PageState.EditMode) { @@ -218,6 +218,7 @@ } @code{ + private bool _showEditMode = false; private bool _deleteConfirmation = false; private List _categories = new List(); private List _allModuleDefinitions; @@ -285,8 +286,10 @@ protected override async Task OnParametersSetAsync() { + _showEditMode = false; if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) { + _showEditMode = true; _pages?.Clear(); foreach (Page p in PageState.Pages) @@ -305,6 +308,17 @@ _moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(Category)).ToList(); _categories = _allModuleDefinitions.SelectMany(m => m.Categories.Split(',')).Distinct().ToList(); } + else + { + foreach (var module in PageState.Modules.Where(item => item.PageId == PageState.Page.PageId)) + { + if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, module.Permissions)) + { + _showEditMode = true; + break; + } + } + } } private void CategoryChanged(ChangeEventArgs e) @@ -405,21 +419,21 @@ Message = $"
{Localizer["Success.Page.ModuleAdd"]}
"; Title = ""; NavigationManager.NavigateTo(NavigateUrl()); - } - else - { - Message = $"
{Localizer["Message.Require.ModuleSelect"]}
"; - } - } - else - { - Message = $"
{Localizer["Error.Authorize.No"]}
"; - } - } + } + else + { + Message = $"
{Localizer["Message.Require.ModuleSelect"]}
"; + } + } + else + { + Message = $"
{Localizer["Error.Authorize.No"]}
"; + } + } private async Task ToggleEditMode(bool EditMode) { - if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) + if (_showEditMode) { if (EditMode) { @@ -445,7 +459,6 @@ private void Navigate(string location) { - //HideControlPanel(); Module module; switch (location) {