diff --git a/Oqtane.Client/Modules/Admin/Search/Index.razor b/Oqtane.Client/Modules/Admin/Search/Index.razor new file mode 100644 index 00000000..9ef34411 --- /dev/null +++ b/Oqtane.Client/Modules/Admin/Search/Index.razor @@ -0,0 +1,93 @@ +@namespace Oqtane.Modules.Admin.Search +@inherits ModuleBase +@inject ISettingService SettingService +@inject IStringLocalizer Localizer +@inject IStringLocalizer SharedLocalizer + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+

+ +

+ +@code { + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + + private string _enabled; + private string _lastIndexedOn; + private string _ignorePaths; + private string _ignoreEntities; + private string _minimumWordLength; + private string _ignoreWords; + + protected override async Task OnInitializedAsync() + { + var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId); + _enabled = SettingService.GetSetting(settings, "Search_Enabled", "True"); + _lastIndexedOn = SettingService.GetSetting(settings, "Search_LastIndexedOn", ""); + _ignorePaths = SettingService.GetSetting(settings, "Search_IgnorePaths", ""); + _ignoreEntities = SettingService.GetSetting(settings, "Search_IgnoreEntities", ""); + _minimumWordLength = SettingService.GetSetting(settings, "Search_MininumWordLength", "3"); + _ignoreWords = SettingService.GetSetting(settings, "Search_IgnoreWords", ""); + } + + private async Task Save() + { + try + { + var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId); + settings = SettingService.SetSetting(settings, "Search_Enabled", _enabled, true); + settings = SettingService.SetSetting(settings, "Search_LastIndexedOn", _lastIndexedOn, true); + settings = SettingService.SetSetting(settings, "Search_IgnorePaths", _ignorePaths, true); + settings = SettingService.SetSetting(settings, "Search_IgnoreEntities", _ignoreEntities, true); + settings = SettingService.SetSetting(settings, "Search_MininumWordLength", _minimumWordLength, true); + settings = SettingService.SetSetting(settings, "Search_IgnoreWords", _ignoreWords, true); + await SettingService.UpdateSiteSettingsAsync(settings, PageState.Site.SiteId); + AddModuleMessage(Localizer["Success.SaveSiteSettings"], MessageType.Success); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Saving Site Settings {Error}", ex.Message); + AddModuleMessage(Localizer["Error.SaveSiteSettings"], MessageType.Error); + } + } +} \ No newline at end of file diff --git a/Oqtane.Client/Services/SiteService.cs b/Oqtane.Client/Services/SiteService.cs index 38dc5dee..4f1658f4 100644 --- a/Oqtane.Client/Services/SiteService.cs +++ b/Oqtane.Client/Services/SiteService.cs @@ -1,7 +1,6 @@ using Oqtane.Models; using System.Threading.Tasks; using System.Net.Http; -using System.Linq; using System.Collections.Generic; using Oqtane.Shared; using System; diff --git a/Oqtane.Server/Infrastructure/SiteTemplates/AdminSiteTemplate.cs b/Oqtane.Server/Infrastructure/SiteTemplates/AdminSiteTemplate.cs index c70962ad..76b5bef9 100644 --- a/Oqtane.Server/Infrastructure/SiteTemplates/AdminSiteTemplate.cs +++ b/Oqtane.Server/Infrastructure/SiteTemplates/AdminSiteTemplate.cs @@ -150,7 +150,7 @@ namespace Oqtane.SiteTemplates Parent = "", Path = "search", Order = seed + 9, - Icon = "oi oi-magnifying-glass", + Icon = Icons.MagnifyingGlass, IsNavigation = false, IsPersonalizable = false, PermissionList = new List { @@ -159,7 +159,7 @@ namespace Oqtane.SiteTemplates new Permission(PermissionNames.Edit, RoleNames.Admin, true) }, PageTemplateModules = new List { - new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.SearchResults, Oqtane.Client", Title = "Search", Pane = PaneNames.Default, + new PageTemplateModule { ModuleDefinitionName = typeof(Oqtane.Modules.Admin.SearchResults.Index).ToModuleDefinitionName(), Title = "Search", Pane = PaneNames.Default, PermissionList = new List { new Permission(PermissionNames.View, RoleNames.Admin, true), new Permission(PermissionNames.View, RoleNames.Everyone, true), @@ -481,14 +481,43 @@ namespace Oqtane.SiteTemplates } }); - // host pages + pageTemplates.Add(new PageTemplate + { + Name = "Search Settings", + Parent = "Admin", + Order = 19, + Path = "admin/search", + Icon = Icons.MagnifyingGlass, + IsNavigation = false, + IsPersonalizable = false, + PermissionList = new List + { + new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.Edit, RoleNames.Admin, true) + }, + PageTemplateModules = new List + { + new PageTemplateModule + { + ModuleDefinitionName = typeof(Oqtane.Modules.Admin.Search.Index).ToModuleDefinitionName(), Title = "Search Settings", Pane = PaneNames.Default, + PermissionList = new List + { + new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.Edit, RoleNames.Admin, true) + }, + Content = "" + } + } + }); + + // host pages (order starts at 51) pageTemplates.Add(new PageTemplate { Name = "Event Log", Parent = "Admin", - Order = 19, + Order = 51, Path = "admin/log", - Icon = Icons.MagnifyingGlass, + Icon = Icons.List, IsNavigation = false, IsPersonalizable = false, PermissionList = new List @@ -514,7 +543,7 @@ namespace Oqtane.SiteTemplates { Name = "Site Management", Parent = "Admin", - Order = 21, + Order = 53, Path = "admin/sites", Icon = Icons.Globe, IsNavigation = false, @@ -542,7 +571,7 @@ namespace Oqtane.SiteTemplates { Name = "Module Management", Parent = "Admin", - Order = 23, + Order = 55, Path = "admin/modules", Icon = Icons.Browser, IsNavigation = false, @@ -570,7 +599,7 @@ namespace Oqtane.SiteTemplates { Name = "Theme Management", Parent = "Admin", - Order = 25, + Order = 57, Path = "admin/themes", Icon = Icons.Brush, IsNavigation = false, @@ -598,7 +627,7 @@ namespace Oqtane.SiteTemplates { Name = "Language Management", Parent = "Admin", - Order = 27, + Order = 59, Path = "admin/languages", Icon = Icons.Text, IsNavigation = false, @@ -630,7 +659,7 @@ namespace Oqtane.SiteTemplates { Name = "Scheduled Jobs", Parent = "Admin", - Order = 29, + Order = 61, Path = "admin/jobs", Icon = Icons.Timer, IsNavigation = false, @@ -658,7 +687,7 @@ namespace Oqtane.SiteTemplates { Name = "Sql Management", Parent = "Admin", - Order = 31, + Order = 63, Path = "admin/sql", Icon = Icons.Spreadsheet, IsNavigation = false, @@ -686,7 +715,7 @@ namespace Oqtane.SiteTemplates { Name = "System Info", Parent = "Admin", - Order = 33, + Order = 65, Path = "admin/system", Icon = Icons.MedicalCross, IsNavigation = false, @@ -714,7 +743,7 @@ namespace Oqtane.SiteTemplates { Name = "System Update", Parent = "Admin", - Order = 35, + Order = 67, Path = "admin/update", Icon = Icons.Aperture, IsNavigation = false, diff --git a/Oqtane.Server/Infrastructure/UpgradeManager.cs b/Oqtane.Server/Infrastructure/UpgradeManager.cs index 903c612d..aa32a669 100644 --- a/Oqtane.Server/Infrastructure/UpgradeManager.cs +++ b/Oqtane.Server/Infrastructure/UpgradeManager.cs @@ -139,71 +139,69 @@ namespace Oqtane.Infrastructure private void Upgrade_3_0_1(Tenant tenant, IServiceScope scope) { - var pageTemplates = new List(); - - pageTemplates.Add(new PageTemplate + var pageTemplates = new List { - Name = "Url Mappings", - Parent = "Admin", - Order = 33, - Path = "admin/urlmappings", - Icon = Icons.LinkBroken, - IsNavigation = false, - IsPersonalizable = false, - PermissionList = new List + new PageTemplate { - new Permission(PermissionNames.View, RoleNames.Admin, true), - new Permission(PermissionNames.Edit, RoleNames.Admin, true) - }, - PageTemplateModules = new List - { - new PageTemplateModule + Update = false, + Name = "Url Mappings", + Parent = "Admin", + Order = 33, + Path = "admin/urlmappings", + Icon = Icons.LinkBroken, + IsNavigation = false, + IsPersonalizable = false, + PermissionList = new List { - ModuleDefinitionName = typeof(Oqtane.Modules.Admin.UrlMappings.Index).ToModuleDefinitionName(), Title = "Url Mappings", Pane = PaneNames.Default, - PermissionList = new List + new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.Edit, RoleNames.Admin, true) + }, + PageTemplateModules = new List + { + new PageTemplateModule { - new Permission(PermissionNames.View, RoleNames.Admin, true), - new Permission(PermissionNames.Edit, RoleNames.Admin, true) - }, - Content = "" + ModuleDefinitionName = typeof(Oqtane.Modules.Admin.UrlMappings.Index).ToModuleDefinitionName(), Title = "Url Mappings", Pane = PaneNames.Default, + PermissionList = new List + { + new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.Edit, RoleNames.Admin, true) + }, + Content = "" + } + } + }, + new PageTemplate + { + Update = false, + Name = "Visitor Management", + Parent = "Admin", + Order = 35, + Path = "admin/visitors", + Icon = Icons.Eye, + IsNavigation = false, + IsPersonalizable = false, + PermissionList = new List + { + new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.Edit, RoleNames.Admin, true) + }, + PageTemplateModules = new List + { + new PageTemplateModule + { + ModuleDefinitionName = typeof(Oqtane.Modules.Admin.Visitors.Index).ToModuleDefinitionName(), Title = "Visitor Management", Pane = PaneNames.Default, + PermissionList = new List + { + new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.Edit, RoleNames.Admin, true) + }, + Content = "" + } } } - }); + }; - pageTemplates.Add(new PageTemplate - { - Name = "Visitor Management", - Parent = "Admin", - Order = 35, - Path = "admin/visitors", - Icon = Icons.Eye, - IsNavigation = false, - IsPersonalizable = false, - PermissionList = new List - { - new Permission(PermissionNames.View, RoleNames.Admin, true), - new Permission(PermissionNames.Edit, RoleNames.Admin, true) - }, - PageTemplateModules = new List - { - new PageTemplateModule - { - ModuleDefinitionName = typeof(Oqtane.Modules.Admin.Visitors.Index).ToModuleDefinitionName(), Title = "Visitor Management", Pane = PaneNames.Default, - PermissionList = new List - { - new Permission(PermissionNames.View, RoleNames.Admin, true), - new Permission(PermissionNames.Edit, RoleNames.Admin, true) - }, - Content = "" - } - } - }); - - var sites = scope.ServiceProvider.GetRequiredService(); - foreach (Site site in sites.GetSites().ToList()) - { - sites.CreatePages(site, pageTemplates, null); - } + AddPagesToSites(scope, pageTemplates); } private void Upgrade_3_1_3(Tenant tenant, IServiceScope scope) @@ -386,49 +384,69 @@ namespace Oqtane.Infrastructure Debug.WriteLine($"Oqtane Error: Error In 5.1.0 Upgrade Logic - {ex}"); } } - } private void Upgrade_5_2_0(Tenant tenant, IServiceScope scope) { - CreateSearchResultsPages(tenant, scope); - } - - private void CreateSearchResultsPages(Tenant tenant, IServiceScope scope) - { - var pageTemplates = new List(); - pageTemplates.Add(new PageTemplate + var pageTemplates = new List { - Name = "Search", - Parent = "", - Path = "search", - Icon = "oi oi-magnifying-glass", - IsNavigation = false, - IsPersonalizable = false, - PermissionList = new List { - new Permission(PermissionNames.View, RoleNames.Everyone, true), - new Permission(PermissionNames.View, RoleNames.Admin, true), - new Permission(PermissionNames.Edit, RoleNames.Admin, true) + new PageTemplate + { + Update = false, + Name = "Search", + Parent = "", + Path = "search", + Icon = Icons.MagnifyingGlass, + IsNavigation = false, + IsPersonalizable = false, + PermissionList = new List { + new Permission(PermissionNames.View, RoleNames.Everyone, true), + new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.Edit, RoleNames.Admin, true) + }, + PageTemplateModules = new List { + new PageTemplateModule { ModuleDefinitionName = typeof(Oqtane.Modules.Admin.SearchResults.Index).ToModuleDefinitionName(), Title = "Search", Pane = PaneNames.Default, + PermissionList = new List { + new Permission(PermissionNames.View, RoleNames.Everyone, true), + new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.Edit, RoleNames.Admin, true) + } + } + } }, - PageTemplateModules = new List { - new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.SearchResults, Oqtane.Client", Title = "Search", Pane = PaneNames.Default, - PermissionList = new List { - new Permission(PermissionNames.View, RoleNames.Everyone, true), - new Permission(PermissionNames.View, RoleNames.Admin, true), - new Permission(PermissionNames.Edit, RoleNames.Admin, true) + new PageTemplate + { + Update = false, + Name = "Search Settings", + Parent = "", + Path = "admin/search", + Icon = Icons.MagnifyingGlass, + IsNavigation = false, + IsPersonalizable = false, + PermissionList = new List { + new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.Edit, RoleNames.Admin, true) + }, + PageTemplateModules = new List { + new PageTemplateModule { ModuleDefinitionName = typeof(Oqtane.Modules.Admin.Search.Index).ToModuleDefinitionName(), Title = "Search Settings", Pane = PaneNames.Default, + PermissionList = new List { + new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.Edit, RoleNames.Admin, true) + } } } } - }); + }; - var pages = scope.ServiceProvider.GetRequiredService(); + AddPagesToSites(scope, pageTemplates); + } + + private void AddPagesToSites(IServiceScope scope, List pageTemplates) + { var sites = scope.ServiceProvider.GetRequiredService(); foreach (var site in sites.GetSites().ToList()) { - if (!pages.GetPages(site.SiteId).ToList().Where(item => item.Path == "search").Any()) - { - sites.CreatePages(site, pageTemplates, null); - } + sites.CreatePages(site, pageTemplates, null); } } }