diff --git a/Oqtane.Server/Controllers/ModuleController.cs b/Oqtane.Server/Controllers/ModuleController.cs index 6abcbe1f..fd378ba1 100644 --- a/Oqtane.Server/Controllers/ModuleController.cs +++ b/Oqtane.Server/Controllers/ModuleController.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; using Oqtane.Models; @@ -18,15 +18,17 @@ namespace Oqtane.Controllers private readonly IPageModuleRepository _pageModules; private readonly IPageRepository _pages; private readonly IModuleDefinitionRepository _moduleDefinitions; + private readonly ISettingRepository _settings; private readonly IUserPermissions _userPermissions; private readonly ILogManager _logger; - public ModuleController(IModuleRepository modules, IPageModuleRepository pageModules, IPageRepository pages, IModuleDefinitionRepository moduleDefinitions, IUserPermissions userPermissions, ILogManager logger) + public ModuleController(IModuleRepository modules, IPageModuleRepository pageModules, IPageRepository pages, IModuleDefinitionRepository moduleDefinitions, ISettingRepository settings, IUserPermissions userPermissions, ILogManager logger) { - _modules = modules; + _modules = modules; _pageModules = pageModules; _pages = pages; _moduleDefinitions = moduleDefinitions; + _settings = settings; _userPermissions = userPermissions; _logger = logger; } @@ -36,6 +38,8 @@ namespace Oqtane.Controllers public IEnumerable Get(string siteid) { List moduledefinitions = _moduleDefinitions.GetModuleDefinitions(int.Parse(siteid)).ToList(); + List settings = _settings.GetSettings(EntityNames.Module).ToList(); + List modules = new List(); foreach (PageModule pagemodule in _pageModules.GetPageModules(int.Parse(siteid))) { @@ -61,6 +65,8 @@ namespace Oqtane.Controllers module.ContainerType = pagemodule.ContainerType; module.ModuleDefinition = moduledefinitions.Find(item => item.ModuleDefinitionName == module.ModuleDefinitionName); + module.Settings = settings.Where(item => item.EntityId == pagemodule.ModuleId) + .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); modules.Add(module); } @@ -77,6 +83,9 @@ namespace Oqtane.Controllers { List moduledefinitions = _moduleDefinitions.GetModuleDefinitions(module.SiteId).ToList(); module.ModuleDefinition = moduledefinitions.Find(item => item.ModuleDefinitionName == module.ModuleDefinitionName); + module.Settings = _settings.GetSettings(EntityNames.Module, id) + .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); + return module; } else diff --git a/Oqtane.Server/Repository/Interfaces/ISettingRepository.cs b/Oqtane.Server/Repository/Interfaces/ISettingRepository.cs index 976519fb..b38d5b62 100644 --- a/Oqtane.Server/Repository/Interfaces/ISettingRepository.cs +++ b/Oqtane.Server/Repository/Interfaces/ISettingRepository.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Oqtane.Models; namespace Oqtane.Repository { public interface ISettingRepository { + IEnumerable GetSettings(string entityName); IEnumerable GetSettings(string entityName, int entityId); Setting AddSetting(Setting setting); Setting UpdateSetting(Setting setting); diff --git a/Oqtane.Server/Repository/SettingRepository.cs b/Oqtane.Server/Repository/SettingRepository.cs index 30b7f676..34586f6e 100644 --- a/Oqtane.Server/Repository/SettingRepository.cs +++ b/Oqtane.Server/Repository/SettingRepository.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; using Oqtane.Models; @@ -14,6 +14,11 @@ namespace Oqtane.Repository _db = context; } + public IEnumerable GetSettings(string entityName) + { + return _db.Setting.Where(item => item.EntityName == entityName); + } + public IEnumerable GetSettings(string entityName, int entityId) { return _db.Setting.Where(item => item.EntityName == entityName) diff --git a/Oqtane.Shared/Models/Module.cs b/Oqtane.Shared/Models/Module.cs index 16b51679..8ceb1254 100644 --- a/Oqtane.Shared/Models/Module.cs +++ b/Oqtane.Shared/Models/Module.cs @@ -1,5 +1,6 @@ -using Oqtane.Shared; +using Oqtane.Shared; using System; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; namespace Oqtane.Models @@ -26,6 +27,9 @@ namespace Oqtane.Models [NotMapped] public string Permissions { get; set; } + [NotMapped] + public Dictionary Settings { get; set; } + // PageModule properties [NotMapped] public int PageModuleId { get; set; }