From b02584bec6020507eeb0f03f3a36f4b2c8aba49e Mon Sep 17 00:00:00 2001 From: Leigh Pointer Date: Tue, 12 Dec 2023 22:28:18 +0100 Subject: [PATCH 1/3] Enhancment to the Module Managment to show where module is used. Added a new tab that lists all the pages where there is a module instance with the count of the number of instances. This helps when making a decision to delete the module from the framework. --- .../Admin/ModuleDefinitions/Edit.razor | 40 +++++++++++++++++++ .../Modules/Admin/ModuleDefinitions/Edit.resx | 9 +++++ 2 files changed, 49 insertions(+) diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor index 23ed0ccc..4fbc39fd 100644 --- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor +++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor @@ -8,6 +8,8 @@ @inject NavigationManager NavigationManager @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer +@inject IPageModuleService PageModuleService +@inject IModuleService ModuleService @if (_initialized) { @@ -131,6 +133,20 @@ @SharedLocalizer["Cancel"] + + +
+   + @SharedLocalizer["Name"] + @Localizer["Count"] +
+ + + @(string.IsNullOrEmpty(context.Title) ? @context.Name : @context.Title ) + @context.Count + +
+
@if (_languages != null && _languages.Count > 0) { @@ -240,6 +256,7 @@ private DateTime _createdon; private string _modifiedby; private DateTime _modifiedon; + private List _groupedModules; #pragma warning disable 649 private PermissionGrid _permissionGrid; @@ -291,6 +308,19 @@ _languages = _languages.OrderBy(item => item.Name).ToList(); } + // Group modules by PageId + _groupedModules = PageState.Modules + .Where(md => md.ModuleDefinition.ModuleDefinitionId == _moduleDefinitionId) + .GroupBy(md => md.PageId) + .Select(group => new GroupedModule + { + Name = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key)?.Name, + Title = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key)?.Title, + PagePath = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key)?.Path, + PageUrl = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key)?.Url, + Count = group.Count() + }) + .ToList(); _initialized = true; } } @@ -439,5 +469,15 @@ AddModuleMessage(Localizer["Error.Validate"], MessageType.Error); } } + private string Browse(GroupedModule page) => string.IsNullOrEmpty(page.PageUrl) ? NavigateUrl(page.PagePath) : page.PageUrl; + + private class GroupedModule + { + public string Name { get; set; } + public string Title { get; set; } + public string PagePath { get; set; } + public string PageUrl { get; set; } + public int Count { get; set; } + } } diff --git a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx index 87cc9a12..3f5a0042 100644 --- a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx +++ b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx @@ -240,4 +240,13 @@ Validate + + Browse + + + Module Count + + + On Pages + \ No newline at end of file From e0b0302f5a16ab80ab97dd325fd7fef20caaba73 Mon Sep 17 00:00:00 2001 From: Leigh Pointer Date: Tue, 12 Dec 2023 22:56:02 +0100 Subject: [PATCH 2/3] Check for Deleted Pageds --- .../Modules/Admin/ModuleDefinitions/Edit.razor | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor index 4fbc39fd..e8dc8111 100644 --- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor +++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor @@ -310,16 +310,16 @@ // Group modules by PageId _groupedModules = PageState.Modules - .Where(md => md.ModuleDefinition.ModuleDefinitionId == _moduleDefinitionId) + .Where(md => md.ModuleDefinition.ModuleDefinitionId == _moduleDefinitionId && md.IsDeleted == false) .GroupBy(md => md.PageId) .Select(group => new GroupedModule { - Name = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key)?.Name, - Title = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key)?.Title, - PagePath = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key)?.Path, - PageUrl = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key)?.Url, + Name = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key && pg.IsDeleted == false)?.Name, + Title = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key && pg.IsDeleted == false)?.Title, + PagePath = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key && pg.IsDeleted == false)?.Path, + PageUrl = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key && pg.IsDeleted == false)?.Url, Count = group.Count() - }) + }).Where(gm => gm.Name != null) .ToList(); _initialized = true; } From 652d42aa6b0eecf5143ab56c8396f279468e850c Mon Sep 17 00:00:00 2001 From: Leigh Pointer Date: Wed, 13 Dec 2023 17:19:19 +0100 Subject: [PATCH 3/3] Rework Not to display the number of instances of the module on those pages. Name the tab "Pages". --- .../Admin/ModuleDefinitions/Edit.razor | 46 +++++++------------ .../Modules/Admin/ModuleDefinitions/Edit.resx | 4 +- 2 files changed, 19 insertions(+), 31 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor index e8dc8111..e09b666c 100644 --- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor +++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Edit.razor @@ -133,24 +133,22 @@ @SharedLocalizer["Cancel"] - - + +
  @SharedLocalizer["Name"] - @Localizer["Count"]
@(string.IsNullOrEmpty(context.Title) ? @context.Name : @context.Title ) - @context.Count
@if (_languages != null && _languages.Count > 0) { - +
@SharedLocalizer["Name"] @Localizer["Code"] @@ -256,7 +254,8 @@ private DateTime _createdon; private string _modifiedby; private DateTime _modifiedon; - private List _groupedModules; + private List _pagesWithModules +; #pragma warning disable 649 private PermissionGrid _permissionGrid; @@ -309,18 +308,17 @@ } // Group modules by PageId - _groupedModules = PageState.Modules - .Where(md => md.ModuleDefinition.ModuleDefinitionId == _moduleDefinitionId && md.IsDeleted == false) - .GroupBy(md => md.PageId) - .Select(group => new GroupedModule - { - Name = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key && pg.IsDeleted == false)?.Name, - Title = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key && pg.IsDeleted == false)?.Title, - PagePath = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key && pg.IsDeleted == false)?.Path, - PageUrl = PageState.Pages.FirstOrDefault(pg => pg.PageId == group.Key && pg.IsDeleted == false)?.Url, - Count = group.Count() - }).Where(gm => gm.Name != null) - .ToList(); + // Get distinct PageIds where modules are present + var distinctPageIds = PageState.Modules + .Where(md => md.ModuleDefinition.ModuleDefinitionId == _moduleDefinitionId && md.IsDeleted == false) + .Select(md => md.PageId) + .Distinct(); + + // Filter and retrieve the corresponding pages + _pagesWithModules = PageState.Pages + .Where(pg => distinctPageIds.Contains(pg.PageId) && pg.IsDeleted == false) + .ToList(); + _initialized = true; } } @@ -469,15 +467,5 @@ AddModuleMessage(Localizer["Error.Validate"], MessageType.Error); } } - private string Browse(GroupedModule page) => string.IsNullOrEmpty(page.PageUrl) ? NavigateUrl(page.PagePath) : page.PageUrl; - - private class GroupedModule - { - public string Name { get; set; } - public string Title { get; set; } - public string PagePath { get; set; } - public string PageUrl { get; set; } - public int Count { get; set; } - } - + private string Browse(Page page) => string.IsNullOrEmpty(page.Url) ? NavigateUrl(page.Path) : page.Url; } diff --git a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx index 3f5a0042..eda58041 100644 --- a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx +++ b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx @@ -246,7 +246,7 @@ Module Count - - On Pages + + Pages \ No newline at end of file