diff --git a/Oqtane.Client/Modules/Admin/Login/Index.razor b/Oqtane.Client/Modules/Admin/Login/Index.razor index 0828d9ce..4e879108 100644 --- a/Oqtane.Client/Modules/Admin/Login/Index.razor +++ b/Oqtane.Client/Modules/Admin/Login/Index.razor @@ -3,7 +3,6 @@ @inject NavigationManager NavigationManager @inject IUserService UserService @inject IServiceProvider ServiceProvider -@inject SiteState SiteState @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer diff --git a/Oqtane.Client/Modules/Admin/Users/Index.razor b/Oqtane.Client/Modules/Admin/Users/Index.razor index 63147056..a8f38030 100644 --- a/Oqtane.Client/Modules/Admin/Users/Index.razor +++ b/Oqtane.Client/Modules/Admin/Users/Index.razor @@ -6,7 +6,6 @@ @inject ISiteService SiteService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer -@inject SiteState SiteState @if (users == null) { diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs index 13f7fe81..b628abb1 100644 --- a/Oqtane.Client/Modules/ModuleBase.cs +++ b/Oqtane.Client/Modules/ModuleBase.cs @@ -24,6 +24,9 @@ namespace Oqtane.Modules [Inject] protected IJSRuntime JSRuntime { get; set; } + [Inject] + protected SiteState SiteState { get; set; } + [CascadingParameter] protected PageState PageState { get; set; } @@ -198,7 +201,7 @@ namespace Oqtane.Modules return urlParameters; } - // user feedback methods + // UI methods public void AddModuleMessage(string message, MessageType type) { ModuleInstance.AddModuleMessage(message, type); @@ -219,6 +222,18 @@ namespace Oqtane.Modules ModuleInstance.HideProgressIndicator(); } + public void SetModuleTitle(string title) + { + var obj = new { PageModuleId = ModuleState.PageModuleId, Title = title }; + SiteState.Properties.ModuleTitle = obj; + } + + public void SetModuleVisibility(bool visible) + { + var obj = new { PageModuleId = ModuleState.PageModuleId, Visible = visible }; + SiteState.Properties.ModuleVisibility = obj; + } + // logging methods public async Task Log(Alias alias, LogLevel level, string function, Exception exception, string message, params object[] args) { diff --git a/Oqtane.Client/Themes/Controls/Container/ModuleTitle.razor b/Oqtane.Client/Themes/Controls/Container/ModuleTitle.razor index a2d9ba7c..a866c757 100644 --- a/Oqtane.Client/Themes/Controls/Container/ModuleTitle.razor +++ b/Oqtane.Client/Themes/Controls/Container/ModuleTitle.razor @@ -1,6 +1,8 @@ +@using System.ComponentModel @namespace Oqtane.Themes.Controls @inherits ContainerBase @attribute [OqtaneIgnore] +@inject SiteState SiteState @@ -9,17 +11,39 @@ @code { - private string title = ""; + private string title = ""; - protected override void OnParametersSet() - { - if (!string.IsNullOrEmpty(ModuleState.ControlTitle)) - { - title = ModuleState.ControlTitle; - } - else - { - title = ModuleState.Title; - } - } + protected override void OnInitialized() + { + ((INotifyPropertyChanged)SiteState.Properties).PropertyChanged += PropertyChanged; + } + + protected override void OnParametersSet() + { + if (!string.IsNullOrEmpty(ModuleState.ControlTitle)) + { + title = ModuleState.ControlTitle; + } + else + { + title = ModuleState.Title; + } + } + + private void PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == "ModuleTitle") + { + if (SiteState.Properties.ModuleTitle.PageModuleId == ModuleState.PageModuleId) + { + title = SiteState.Properties.ModuleTitle.Title; + StateHasChanged(); + } + } + } + + public void Dispose() + { + ((INotifyPropertyChanged)SiteState.Properties).PropertyChanged -= PropertyChanged; + } } diff --git a/Oqtane.Client/UI/ContainerBuilder.razor b/Oqtane.Client/UI/ContainerBuilder.razor index c1c6f0df..436dbb9d 100644 --- a/Oqtane.Client/UI/ContainerBuilder.razor +++ b/Oqtane.Client/UI/ContainerBuilder.razor @@ -1,20 +1,26 @@ +@using System.ComponentModel @namespace Oqtane.UI +@inject SiteState SiteState - - @if (_useadminborder) - { -
- @DynamicComponent -
- } - else - { - @DynamicComponent - } -
+@if (_visible) +{ + + @if (_useadminborder) + { +
+ @DynamicComponent +
+ } + else + { + @DynamicComponent + } +
+} @code { - private bool _useadminborder = false; + private bool _visible = true; + private bool _useadminborder = false; [CascadingParameter] protected PageState PageState { get; set; } @@ -24,7 +30,12 @@ RenderFragment DynamicComponent { get; set; } - protected override void OnParametersSet() + protected override void OnInitialized() + { + ((INotifyPropertyChanged)SiteState.Properties).PropertyChanged += PropertyChanged; + } + + protected override void OnParametersSet() { string container = ModuleState.ContainerType; if (PageState.ModuleId != -1 && ModuleState.UseAdminContainer) @@ -53,4 +64,21 @@ builder.CloseComponent(); }; } + + private void PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == "ModuleVisibility") + { + if (SiteState.Properties.ModuleVisibility.PageModuleId == ModuleState.PageModuleId) + { + _visible = SiteState.Properties.ModuleVisibility.Visible; + StateHasChanged(); + } + } + } + + public void Dispose() + { + ((INotifyPropertyChanged)SiteState.Properties).PropertyChanged -= PropertyChanged; + } }