From 71a61a895d7d1f9c1fcaee390c4ceee1d20f5157 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 2 Aug 2023 11:27:39 +0800 Subject: [PATCH 1/5] Order setting tabs --- .../SettingManagement/SettingManagement.razor.cs | 2 +- .../SettingComponentCreationContext.cs | 13 +++++++++++++ .../SettingComponentGroup.cs | 7 ++++++- .../Settings/EmailingPageContributor.cs | 3 ++- .../Settings/TimeZonePageContributor.cs | 3 ++- .../SettingPageContributorManager.cs | 1 + .../SettingManagement/SettingPageCreationContext.cs | 13 +++++++++++++ .../Pages/SettingManagement/SettingPageGroup.cs | 7 ++++++- .../Settings/EmailingPageContributor.cs | 3 ++- .../Settings/TimeZonePageContributor.cs | 3 ++- 10 files changed, 48 insertions(+), 7 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs index 1422d67873..47a956a028 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs @@ -39,7 +39,7 @@ public partial class SettingManagement { await contributor.ConfigureAsync(SettingComponentCreationContext); } - + SettingComponentCreationContext.Normalize(); SettingItemRenders.Clear(); SelectedGroup = GetNormalizedString(SettingComponentCreationContext.Groups.First().Id); diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs index dfba0564f2..d016fb66ce 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using Volo.Abp.DependencyInjection; namespace Volo.Abp.SettingManagement.Blazor; @@ -16,4 +17,16 @@ public class SettingComponentCreationContext : IServiceProviderAccessor Groups = new List(); } + + public void Normalize() + { + Order(); + } + + private void Order() + { + var orderedItems = Groups.OrderBy(item => item.Order).ToArray(); + Groups.Clear(); + Groups.AddRange(orderedItems); + } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs index bf4bbf2a22..0577f38b76 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs @@ -5,6 +5,8 @@ namespace Volo.Abp.SettingManagement.Blazor; public class SettingComponentGroup { + public const int DefaultOrder = 1000; + public string Id { get => _id; set => _id = Check.NotNullOrWhiteSpace(value, nameof(Id)); @@ -24,12 +26,15 @@ public class SettingComponentGroup private Type _componentType; public object Parameter { get; set; } + + public int Order { get; set; } - public SettingComponentGroup([NotNull] string id, [NotNull] string displayName, [NotNull] Type componentType, object parameter = null) + public SettingComponentGroup([NotNull] string id, [NotNull] string displayName, [NotNull] Type componentType, object parameter = null, int order = DefaultOrder) { Id = id; DisplayName = displayName; ComponentType = componentType; Parameter = parameter; + Order = order; } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/EmailingPageContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/EmailingPageContributor.cs index aec58c8ca8..13cdc2acde 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/EmailingPageContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/EmailingPageContributor.cs @@ -23,7 +23,8 @@ public class EmailingPageContributor : ISettingComponentContributor new SettingComponentGroup( "Volo.Abp.SettingManagement", l["Menu:Emailing"], - typeof(EmailSettingGroupViewComponent) + typeof(EmailSettingGroupViewComponent), + order : 3 ) ); } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/TimeZonePageContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/TimeZonePageContributor.cs index 6effd64494..a23a32cb53 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/TimeZonePageContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/TimeZonePageContributor.cs @@ -20,7 +20,8 @@ public class TimeZonePageContributor : ISettingComponentContributor new SettingComponentGroup( "Volo.Abp.TimeZone", l["Menu:TimeZone"], - typeof(TimeZoneSettingGroupViewComponent) + typeof(TimeZoneSettingGroupViewComponent), + order : 4 ) ); } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs index 9b08236cae..83f5d53fa5 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs @@ -37,6 +37,7 @@ public class SettingPageContributorManager : IScopedDependency { await contributor.ConfigureAsync(context); } + context.Normalize(); return context; } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs index c929fef16d..51490e4e63 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using Volo.Abp.DependencyInjection; namespace Volo.Abp.SettingManagement.Web.Pages.SettingManagement; @@ -16,4 +17,16 @@ public class SettingPageCreationContext : IServiceProviderAccessor Groups = new List(); } + + public void Normalize() + { + Order(); + } + + private void Order() + { + var orderedItems = Groups.OrderBy(item => item.Order).ToArray(); + Groups.Clear(); + Groups.AddRange(orderedItems); + } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageGroup.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageGroup.cs index 2dbc6eb4de..65aceb554c 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageGroup.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageGroup.cs @@ -5,6 +5,8 @@ namespace Volo.Abp.SettingManagement.Web.Pages.SettingManagement; public class SettingPageGroup { + public const int DefaultOrder = 1000; + public string Id { get => _id; set => _id = Check.NotNullOrWhiteSpace(value, nameof(Id)); @@ -24,12 +26,15 @@ public class SettingPageGroup private Type _componentType; public object Parameter { get; set; } + + public int Order { get; set; } - public SettingPageGroup([NotNull] string id, [NotNull] string displayName, [NotNull] Type componentType, object parameter = null) + public SettingPageGroup([NotNull] string id, [NotNull] string displayName, [NotNull] Type componentType, object parameter = null, int order = DefaultOrder) { Id = id; DisplayName = displayName; ComponentType = componentType; Parameter = parameter; + Order = order; } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/EmailingPageContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/EmailingPageContributor.cs index 5096404a11..0c369f12ff 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/EmailingPageContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/EmailingPageContributor.cs @@ -23,7 +23,8 @@ public class EmailingPageContributor : SettingPageContributorBase new SettingPageGroup( "Volo.Abp.EmailSetting", l["Menu:Emailing"], - typeof(EmailSettingGroupViewComponent) + typeof(EmailSettingGroupViewComponent), + order : 3 ) ); return Task.CompletedTask; diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/TimeZonePageContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/TimeZonePageContributor.cs index 696d1204da..21c35baccc 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/TimeZonePageContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/TimeZonePageContributor.cs @@ -25,7 +25,8 @@ public class TimeZonePageContributor : SettingPageContributorBase new SettingPageGroup( "Volo.Abp.TimeZone", l["Menu:TimeZone"], - typeof(TimeZoneSettingGroupViewComponent) + typeof(TimeZoneSettingGroupViewComponent), + order : 4 ) ); } From 0d107364be1c0c8066b14fef2da0a0b499438578 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 2 Aug 2023 11:58:25 +0800 Subject: [PATCH 2/5] Update document --- docs/en/Modules/Setting-Management.md | 6 ++++-- docs/zh-Hans/Modules/Setting-Management.md | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/en/Modules/Setting-Management.md b/docs/en/Modules/Setting-Management.md index 354fbdd539..e26c7c806e 100644 --- a/docs/en/Modules/Setting-Management.md +++ b/docs/en/Modules/Setting-Management.md @@ -177,7 +177,8 @@ public class BookStoreSettingPageContributor : ISettingPageContributor new SettingPageGroup( "Volo.Abp.MySettingGroup", "MySettingGroup", - typeof(MySettingGroupViewComponent) + typeof(MySettingGroupViewComponent), + order : 1 ) ); @@ -240,7 +241,8 @@ public class BookStoreSettingComponentContributor : ISettingComponentContributor new SettingComponentGroup( "Volo.Abp.MySettingGroup", "MySettingGroup", - typeof(MySettingGroupComponent) + typeof(MySettingGroupComponent), + order : 1 ) ); diff --git a/docs/zh-Hans/Modules/Setting-Management.md b/docs/zh-Hans/Modules/Setting-Management.md index 242553c2c9..cf52d588a2 100644 --- a/docs/zh-Hans/Modules/Setting-Management.md +++ b/docs/zh-Hans/Modules/Setting-Management.md @@ -146,7 +146,8 @@ public class BookStoreSettingPageContributor : ISettingPageContributor new SettingPageGroup( "Volo.Abp.MySettingGroup", "MySettingGroup", - typeof(MySettingGroupViewComponent) + typeof(MySettingGroupViewComponent), + order : 1 ) ); @@ -209,7 +210,8 @@ public class BookStoreSettingComponentContributor : ISettingComponentContributor new SettingComponentGroup( "Volo.Abp.MySettingGroup", "MySettingGroup", - typeof(MySettingGroupComponent) + typeof(MySettingGroupComponent), + order : 1 ) ); From b5b2cfb07ed2954d4211c9e9fa1c53733a096c72 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 2 Aug 2023 12:45:41 +0800 Subject: [PATCH 3/5] improve --- .../SettingComponentCreationContext.cs | 2 +- .../Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs | 2 +- .../Settings/EmailingPageContributor.cs | 3 +-- .../Settings/TimeZonePageContributor.cs | 3 +-- .../Pages/SettingManagement/SettingPageCreationContext.cs | 2 +- .../Settings/EmailingPageContributor.cs | 3 +-- .../Settings/TimeZonePageContributor.cs | 3 +-- 7 files changed, 7 insertions(+), 11 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs index d016fb66ce..ff386cc260 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs @@ -25,7 +25,7 @@ public class SettingComponentCreationContext : IServiceProviderAccessor private void Order() { - var orderedItems = Groups.OrderBy(item => item.Order).ToArray(); + var orderedItems = Groups.OrderBy(item => item.Order).ThenBy(item => item.DisplayName).ToArray(); Groups.Clear(); Groups.AddRange(orderedItems); } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs index 0577f38b76..7b1aca36aa 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs @@ -5,7 +5,7 @@ namespace Volo.Abp.SettingManagement.Blazor; public class SettingComponentGroup { - public const int DefaultOrder = 1000; + public const int DefaultOrder = 1; public string Id { get => _id; diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/EmailingPageContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/EmailingPageContributor.cs index 13cdc2acde..aec58c8ca8 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/EmailingPageContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/EmailingPageContributor.cs @@ -23,8 +23,7 @@ public class EmailingPageContributor : ISettingComponentContributor new SettingComponentGroup( "Volo.Abp.SettingManagement", l["Menu:Emailing"], - typeof(EmailSettingGroupViewComponent), - order : 3 + typeof(EmailSettingGroupViewComponent) ) ); } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/TimeZonePageContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/TimeZonePageContributor.cs index a23a32cb53..6effd64494 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/TimeZonePageContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/TimeZonePageContributor.cs @@ -20,8 +20,7 @@ public class TimeZonePageContributor : ISettingComponentContributor new SettingComponentGroup( "Volo.Abp.TimeZone", l["Menu:TimeZone"], - typeof(TimeZoneSettingGroupViewComponent), - order : 4 + typeof(TimeZoneSettingGroupViewComponent) ) ); } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs index 51490e4e63..957342592d 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs @@ -25,7 +25,7 @@ public class SettingPageCreationContext : IServiceProviderAccessor private void Order() { - var orderedItems = Groups.OrderBy(item => item.Order).ToArray(); + var orderedItems = Groups.OrderBy(item => item.Order).ThenBy(item => item.DisplayName).ToArray(); Groups.Clear(); Groups.AddRange(orderedItems); } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/EmailingPageContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/EmailingPageContributor.cs index 0c369f12ff..5096404a11 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/EmailingPageContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/EmailingPageContributor.cs @@ -23,8 +23,7 @@ public class EmailingPageContributor : SettingPageContributorBase new SettingPageGroup( "Volo.Abp.EmailSetting", l["Menu:Emailing"], - typeof(EmailSettingGroupViewComponent), - order : 3 + typeof(EmailSettingGroupViewComponent) ) ); return Task.CompletedTask; diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/TimeZonePageContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/TimeZonePageContributor.cs index 21c35baccc..696d1204da 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/TimeZonePageContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/TimeZonePageContributor.cs @@ -25,8 +25,7 @@ public class TimeZonePageContributor : SettingPageContributorBase new SettingPageGroup( "Volo.Abp.TimeZone", l["Menu:TimeZone"], - typeof(TimeZoneSettingGroupViewComponent), - order : 4 + typeof(TimeZoneSettingGroupViewComponent) ) ); } From daa151108b4e3ae1db4a6a7dfeb7a0b2c7e414ff Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 2 Aug 2023 12:48:10 +0800 Subject: [PATCH 4/5] Update SettingComponentGroup.cs --- .../Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs index 7b1aca36aa..0577f38b76 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentGroup.cs @@ -5,7 +5,7 @@ namespace Volo.Abp.SettingManagement.Blazor; public class SettingComponentGroup { - public const int DefaultOrder = 1; + public const int DefaultOrder = 1000; public string Id { get => _id; From 132f2741f475f43a56a4a70f05aabead5e57e6c9 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 2 Aug 2023 13:25:49 +0800 Subject: [PATCH 5/5] Update SettingPageCreationContext --- .../SettingComponentCreationContext.cs | 6 ++---- .../Pages/SettingManagement/SettingPageCreationContext.cs | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs index ff386cc260..390110430c 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingComponentCreationContext.cs @@ -9,7 +9,7 @@ public class SettingComponentCreationContext : IServiceProviderAccessor { public IServiceProvider ServiceProvider { get; } - public List Groups { get; } + public List Groups { get; private set; } public SettingComponentCreationContext(IServiceProvider serviceProvider) { @@ -25,8 +25,6 @@ public class SettingComponentCreationContext : IServiceProviderAccessor private void Order() { - var orderedItems = Groups.OrderBy(item => item.Order).ThenBy(item => item.DisplayName).ToArray(); - Groups.Clear(); - Groups.AddRange(orderedItems); + Groups = Groups.OrderBy(item => item.Order).ThenBy(item => item.DisplayName).ToList(); } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs index 957342592d..d620ced0b9 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageCreationContext.cs @@ -9,7 +9,7 @@ public class SettingPageCreationContext : IServiceProviderAccessor { public IServiceProvider ServiceProvider { get; } - public List Groups { get; } + public List Groups { get; private set; } public SettingPageCreationContext(IServiceProvider serviceProvider) { @@ -25,8 +25,6 @@ public class SettingPageCreationContext : IServiceProviderAccessor private void Order() { - var orderedItems = Groups.OrderBy(item => item.Order).ThenBy(item => item.DisplayName).ToArray(); - Groups.Clear(); - Groups.AddRange(orderedItems); + Groups = Groups.OrderBy(item => item.Order).ThenBy(item => item.DisplayName).ToList(); } }