From 3c99006226bb4cce20bcc2fab4192c586945e489 Mon Sep 17 00:00:00 2001 From: Leigh Pointer Date: Thu, 14 Nov 2024 10:31:53 +0100 Subject: [PATCH 1/3] Fix for Page Management tab panel is not updating the UI. #4778 --- .../Modules/Admin/Pages/Roles/Add.resx | 144 ++++++++++++++ .../Modules/Admin/Pages/Roles/Edit.resx | 147 +++++++++++++++ .../Modules/Admin/Pages/Roles/Index.resx | 141 ++++++++++++++ .../Modules/Admin/Pages/Roles/Users.resx | 177 ++++++++++++++++++ 4 files changed, 609 insertions(+) create mode 100644 Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Add.resx create mode 100644 Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Edit.resx create mode 100644 Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Index.resx create mode 100644 Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Users.resx diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Add.resx new file mode 100644 index 00000000..c7236805 --- /dev/null +++ b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Add.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Name: + + + Error Adding Role + + + Name Of The Role + + + A Short Description Of The Role Which Describes Its Purpose + + + Indicates Whether Or Not New Users Are Automatically Assigned To This Role + + + Description: + + + Auto Assigned? + + + Please Provide All Required Information + + \ No newline at end of file diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Edit.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Edit.resx new file mode 100644 index 00000000..d4cb0b0a --- /dev/null +++ b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Edit.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Name: + + + Name Of The Role + + + A Short Description Of The Role Which Describes Its Purpose + + + Indicates Whether Or Not New Users Are Automatically Assigned To This Role + + + Description: + + + Auto Assigned? + + + Error Loading Role + + + Error Saving Role + + + Please Provide All Required Information + + \ No newline at end of file diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Index.resx new file mode 100644 index 00000000..2c5784a8 --- /dev/null +++ b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Index.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Are You Sure You Wish To Delete The {0} Role? + + + Error Deleting Role + + + Add Role + + + Delete Role + + + Delete + + + Edit + + + Users + + \ No newline at end of file diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Users.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Users.resx new file mode 100644 index 00000000..99a8f2fa --- /dev/null +++ b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Users.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + User: + + + Enter User's Name + + + Users + + + Error Loading Users + + + User Assigned To Role + + + You Must Select A User + + + Error Saving User Roles + + + User Removed From Role + + + Error Removing User From Role + + + The role you are assigning users to + + + Enter the name of a user + + + The date that this role assignment is active + + + The date that this role assignment expires + + + Role: + + + Effective Date: + + + Expiry Date: + + + Are You Sure You Wish To Remove {0} From This Role? + + + Effective + + + Expiry + + \ No newline at end of file From 702eb9e46623ba7f455d9aaa2c71d2df3c553cb7 Mon Sep 17 00:00:00 2001 From: Leigh Pointer Date: Thu, 14 Nov 2024 10:33:10 +0100 Subject: [PATCH 2/3] Revert "Fix for Page Management tab panel is not updating the UI. #4778" This reverts commit 3c99006226bb4cce20bcc2fab4192c586945e489. --- .../Modules/Admin/Pages/Roles/Add.resx | 144 -------------- .../Modules/Admin/Pages/Roles/Edit.resx | 147 --------------- .../Modules/Admin/Pages/Roles/Index.resx | 141 -------------- .../Modules/Admin/Pages/Roles/Users.resx | 177 ------------------ 4 files changed, 609 deletions(-) delete mode 100644 Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Add.resx delete mode 100644 Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Edit.resx delete mode 100644 Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Index.resx delete mode 100644 Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Users.resx diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Add.resx deleted file mode 100644 index c7236805..00000000 --- a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Add.resx +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Name: - - - Error Adding Role - - - Name Of The Role - - - A Short Description Of The Role Which Describes Its Purpose - - - Indicates Whether Or Not New Users Are Automatically Assigned To This Role - - - Description: - - - Auto Assigned? - - - Please Provide All Required Information - - \ No newline at end of file diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Edit.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Edit.resx deleted file mode 100644 index d4cb0b0a..00000000 --- a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Edit.resx +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Name: - - - Name Of The Role - - - A Short Description Of The Role Which Describes Its Purpose - - - Indicates Whether Or Not New Users Are Automatically Assigned To This Role - - - Description: - - - Auto Assigned? - - - Error Loading Role - - - Error Saving Role - - - Please Provide All Required Information - - \ No newline at end of file diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Index.resx deleted file mode 100644 index 2c5784a8..00000000 --- a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Index.resx +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Are You Sure You Wish To Delete The {0} Role? - - - Error Deleting Role - - - Add Role - - - Delete Role - - - Delete - - - Edit - - - Users - - \ No newline at end of file diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Users.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Users.resx deleted file mode 100644 index 99a8f2fa..00000000 --- a/Oqtane.Client/Resources/Modules/Admin/Pages/Roles/Users.resx +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - User: - - - Enter User's Name - - - Users - - - Error Loading Users - - - User Assigned To Role - - - You Must Select A User - - - Error Saving User Roles - - - User Removed From Role - - - Error Removing User From Role - - - The role you are assigning users to - - - Enter the name of a user - - - The date that this role assignment is active - - - The date that this role assignment expires - - - Role: - - - Effective Date: - - - Expiry Date: - - - Are You Sure You Wish To Remove {0} From This Role? - - - Effective - - - Expiry - - \ No newline at end of file From db6dd5abee6dd9a7041c1eb13ca6bb082c010029 Mon Sep 17 00:00:00 2001 From: Leigh Pointer Date: Thu, 14 Nov 2024 10:35:15 +0100 Subject: [PATCH 3/3] Fix for TabPanel is not updating the UI. #4778 Modified that TabStrip and TabPane, now when the ActiveTab is changed the TabPanel is selected --- Oqtane.Client/Modules/Admin/Pages/Add.razor | 4 +- Oqtane.Client/Modules/Admin/Pages/Edit.razor | 34 ++++++----- Oqtane.Client/Modules/Controls/TabPanel.razor | 2 + Oqtane.Client/Modules/Controls/TabStrip.razor | 60 +++++++++++++------ 4 files changed, 66 insertions(+), 34 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor index ac7f064c..57c2c588 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor @@ -10,7 +10,7 @@ @if (_initialized) {
- +
@@ -246,6 +246,7 @@ private string _iconresources = ""; private DateTime? _effectivedate = null; private DateTime? _expirydate = null; + private string _activetab = ""; protected override async Task OnInitializedAsync() { @@ -335,6 +336,7 @@ private async Task SavePage() { + _activetab = "Settings"; validated = true; var interop = new Interop(JSRuntime); if (await interop.FormValid(form)) diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor index 0d408c03..36014225 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor @@ -16,7 +16,7 @@ @if (_page.UserId == null) { - +
@@ -30,16 +30,16 @@
- + + @foreach (Page page in _pages) + { + if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, page.PermissionList) && page.PageId != _pageId) { - if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, page.PermissionList) && page.PageId != _pageId) - { - - } + } - + } +
@@ -230,10 +230,10 @@
-   -   - @Localizer["ModuleTitle"] - @Localizer["ModuleDefinition"] +   +   + @Localizer["ModuleTitle"] + @Localizer["ModuleDefinition"]
@@ -356,6 +356,7 @@ private string _iconresources = ""; private DateTime? _effectivedate = null; private DateTime? _expirydate = null; + private string _activetab = ""; protected override async Task OnInitializedAsync() { @@ -466,7 +467,7 @@ _parentid = (string)e.Value; _children = new List(); foreach (Page p in _pages.Where(item => (_parentid == "-1" && item.ParentId == null) || (item.ParentId == int.Parse(_parentid)))) - { + { if (p.PageId != _pageId && UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, p.PermissionList)) { _children.Add(p); @@ -512,7 +513,7 @@ builder.OpenComponent(0, _themeSettingsType); builder.AddAttribute(1, "RenderModeBoundary", RenderModeBoundary); builder.AddComponentReferenceCapture(2, inst => { _themeSettings = Convert.ChangeType(inst, _themeSettingsType); }); - + builder.CloseComponent(); }; } @@ -522,6 +523,7 @@ private async Task SavePage() { + _activetab = "Settings"; validated = true; var interop = new Interop(JSRuntime); if (await interop.FormValid(form)) @@ -670,7 +672,7 @@ } else { - AddModuleMessage(Localizer["Message.Required.PageInfo"], MessageType.Warning); + AddModuleMessage(Localizer["Message.Required.PageInfo"], MessageType.Warning); } } catch (Exception ex) diff --git a/Oqtane.Client/Modules/Controls/TabPanel.razor b/Oqtane.Client/Modules/Controls/TabPanel.razor index 0944df4a..5da17efb 100644 --- a/Oqtane.Client/Modules/Controls/TabPanel.razor +++ b/Oqtane.Client/Modules/Controls/TabPanel.razor @@ -30,6 +30,8 @@ else [Parameter] public SecurityAccessLevel? Security { get; set; } // optional - can be used to specify SecurityAccessLevel + public bool IsActive { get; set; } + protected override void OnParametersSet() { base.OnParametersSet(); diff --git a/Oqtane.Client/Modules/Controls/TabStrip.razor b/Oqtane.Client/Modules/Controls/TabStrip.razor index e2a3c0f1..70fc5102 100644 --- a/Oqtane.Client/Modules/Controls/TabStrip.razor +++ b/Oqtane.Client/Modules/Controls/TabStrip.razor @@ -8,18 +8,9 @@ @foreach (TabPanel tabPanel in _tabPanels) { } @@ -59,16 +50,43 @@ } } - protected override void OnParametersSet() + protected override void OnParametersSet() { + base.OnParametersSet(); + if (PageState.QueryString.ContainsKey("tab")) { ActiveTab = PageState.QueryString["tab"]; } + if (_tabPanels == null || Refresh) { _tabPanels = new List(); } + + // Ensure the active tab is valid and exists + if (!string.IsNullOrEmpty(ActiveTab) && _tabPanels.Any()) + { + var activeTabExists = _tabPanels.Any(tp => tp.Name.Equals(ActiveTab, StringComparison.OrdinalIgnoreCase)); + if (!activeTabExists) + { + ActiveTab = _tabPanels[0].Name; + } + } + + // Update the active tab in the UI + UpdateActiveTab(); + } + + private void UpdateActiveTab() + { + if (!string.IsNullOrEmpty(ActiveTab) && _tabPanels != null) + { + foreach (var tabPanel in _tabPanels) + { + tabPanel.IsActive = tabPanel.Name.Equals(ActiveTab, StringComparison.OrdinalIgnoreCase); + } + } } internal void AddTabPanel(TabPanel tabPanel) @@ -76,12 +94,20 @@ if (!_tabPanels.Exists(item => item.Name == tabPanel.Name) && IsAuthorized(tabPanel)) { _tabPanels.Add(tabPanel); + if (string.IsNullOrEmpty(ActiveTab)) + { + ActiveTab = tabPanel.Name; + } + UpdateActiveTab(); StateHasChanged(); } - if (string.IsNullOrEmpty(ActiveTab)) - { - ActiveTab = tabPanel.Name; - } + } + + private void SetActiveTab(string tabName) + { + ActiveTab = tabName; + UpdateActiveTab(); + StateHasChanged(); } private bool IsAuthorized(TabPanel tabPanel)