diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor index 5c026fae..0c97da2c 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor @@ -5,7 +5,7 @@ @inject IThemeService ThemeService @inject IStringLocalizer Localizer - + @if (_themeList != null) { @@ -190,6 +190,7 @@ private Type _themeSettingsType; private object _themeSettings; private RenderFragment ThemeSettingsComponent { get; set; } + private bool _refresh = false; protected override async Task OnInitializedAsync() { @@ -280,6 +281,7 @@ builder.CloseComponent(); }; } + _refresh = true; } } diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor index 78c1bba5..d012f87f 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor @@ -6,7 +6,7 @@ @inject IThemeService ThemeService @inject IStringLocalizer Localizer - + @if (_themeList != null) { @@ -211,6 +211,7 @@ private Type _themeSettingsType; private object _themeSettings; private RenderFragment ThemeSettingsComponent { get; set; } + private bool _refresh = false; protected override async Task OnInitializedAsync() { @@ -354,6 +355,7 @@ builder.CloseComponent(); }; } + _refresh = true; } } diff --git a/Oqtane.Client/Modules/Admin/Roles/Index.razor b/Oqtane.Client/Modules/Admin/Roles/Index.razor index 3afa6c88..0bfadcc1 100644 --- a/Oqtane.Client/Modules/Admin/Roles/Index.razor +++ b/Oqtane.Client/Modules/Admin/Roles/Index.razor @@ -34,7 +34,15 @@ else protected override async Task OnParametersSetAsync() { - _roles = await RoleService.GetRolesAsync(PageState.Site.SiteId); + if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) + { + _roles = await RoleService.GetRolesAsync(PageState.Site.SiteId, true); + _roles = _roles.Where(item => item.Name != RoleNames.Everyone).ToList(); + } + else + { + _roles = await RoleService.GetRolesAsync(PageState.Site.SiteId); + } } private async Task DeleteRole(Role role) diff --git a/Oqtane.Client/Modules/Controls/TabStrip.razor b/Oqtane.Client/Modules/Controls/TabStrip.razor index 41153b57..b2806a82 100644 --- a/Oqtane.Client/Modules/Controls/TabStrip.razor +++ b/Oqtane.Client/Modules/Controls/TabStrip.razor @@ -7,23 +7,20 @@
@@ -43,6 +40,9 @@ [Parameter] public string ActiveTab { get; set; } // optional - defaults to first TabPanel if not specified. Can also be set using a "tab=" querystring parameter. + [Parameter] + public bool Refresh { get; set; } // optional - used in scenarios where TabPanels are added/removed dynamically within a parent form. ActiveTab may need to be reset as well when this property is used. + protected override void OnInitialized() { if (PageState.QueryString.ContainsKey("tab")) @@ -53,20 +53,23 @@ protected override void OnParametersSet() { - _tabPanels = new List(); + if (_tabPanels == null || Refresh) + { + _tabPanels = new List(); + } } internal void AddTabPanel(TabPanel tabPanel) { - if (!_tabPanels.Exists(item => item.Name == tabPanel.Name)) + if (!_tabPanels.Exists(item => item.Name == tabPanel.Name) && IsAuthorized(tabPanel)) { _tabPanels.Add(tabPanel); - if (string.IsNullOrEmpty(ActiveTab)) - { - ActiveTab = tabPanel.Name; - } StateHasChanged(); } + if (string.IsNullOrEmpty(ActiveTab)) + { + ActiveTab = tabPanel.Name; + } } private bool IsAuthorized(TabPanel tabPanel)