Merge pull request #860 from sbwalker/master

load module settings automatically so that they are part of the ModuleState and can be easily accessed by developers
This commit is contained in:
Shaun Walker 2020-11-04 15:41:48 -05:00 committed by GitHub
commit c52d255a30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 6 deletions

View File

@ -1,4 +1,4 @@
using System.Collections.Generic; using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Oqtane.Models; using Oqtane.Models;
@ -18,15 +18,17 @@ namespace Oqtane.Controllers
private readonly IPageModuleRepository _pageModules; private readonly IPageModuleRepository _pageModules;
private readonly IPageRepository _pages; private readonly IPageRepository _pages;
private readonly IModuleDefinitionRepository _moduleDefinitions; private readonly IModuleDefinitionRepository _moduleDefinitions;
private readonly ISettingRepository _settings;
private readonly IUserPermissions _userPermissions; private readonly IUserPermissions _userPermissions;
private readonly ILogManager _logger; 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; _pageModules = pageModules;
_pages = pages; _pages = pages;
_moduleDefinitions = moduleDefinitions; _moduleDefinitions = moduleDefinitions;
_settings = settings;
_userPermissions = userPermissions; _userPermissions = userPermissions;
_logger = logger; _logger = logger;
} }
@ -36,6 +38,8 @@ namespace Oqtane.Controllers
public IEnumerable<Module> Get(string siteid) public IEnumerable<Module> Get(string siteid)
{ {
List<ModuleDefinition> moduledefinitions = _moduleDefinitions.GetModuleDefinitions(int.Parse(siteid)).ToList(); List<ModuleDefinition> moduledefinitions = _moduleDefinitions.GetModuleDefinitions(int.Parse(siteid)).ToList();
List<Setting> settings = _settings.GetSettings(EntityNames.Module).ToList();
List<Module> modules = new List<Module>(); List<Module> modules = new List<Module>();
foreach (PageModule pagemodule in _pageModules.GetPageModules(int.Parse(siteid))) foreach (PageModule pagemodule in _pageModules.GetPageModules(int.Parse(siteid)))
{ {
@ -61,6 +65,8 @@ namespace Oqtane.Controllers
module.ContainerType = pagemodule.ContainerType; module.ContainerType = pagemodule.ContainerType;
module.ModuleDefinition = moduledefinitions.Find(item => item.ModuleDefinitionName == module.ModuleDefinitionName); 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); modules.Add(module);
} }
@ -77,6 +83,9 @@ namespace Oqtane.Controllers
{ {
List<ModuleDefinition> moduledefinitions = _moduleDefinitions.GetModuleDefinitions(module.SiteId).ToList(); List<ModuleDefinition> moduledefinitions = _moduleDefinitions.GetModuleDefinitions(module.SiteId).ToList();
module.ModuleDefinition = moduledefinitions.Find(item => item.ModuleDefinitionName == module.ModuleDefinitionName); 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; return module;
} }
else else

View File

@ -1,10 +1,11 @@
using System.Collections.Generic; using System.Collections.Generic;
using Oqtane.Models; using Oqtane.Models;
namespace Oqtane.Repository namespace Oqtane.Repository
{ {
public interface ISettingRepository public interface ISettingRepository
{ {
IEnumerable<Setting> GetSettings(string entityName);
IEnumerable<Setting> GetSettings(string entityName, int entityId); IEnumerable<Setting> GetSettings(string entityName, int entityId);
Setting AddSetting(Setting setting); Setting AddSetting(Setting setting);
Setting UpdateSetting(Setting setting); Setting UpdateSetting(Setting setting);

View File

@ -1,4 +1,4 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Oqtane.Models; using Oqtane.Models;
@ -14,6 +14,11 @@ namespace Oqtane.Repository
_db = context; _db = context;
} }
public IEnumerable<Setting> GetSettings(string entityName)
{
return _db.Setting.Where(item => item.EntityName == entityName);
}
public IEnumerable<Setting> GetSettings(string entityName, int entityId) public IEnumerable<Setting> GetSettings(string entityName, int entityId)
{ {
return _db.Setting.Where(item => item.EntityName == entityName) return _db.Setting.Where(item => item.EntityName == entityName)

View File

@ -1,5 +1,6 @@
using Oqtane.Shared; using Oqtane.Shared;
using System; using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
namespace Oqtane.Models namespace Oqtane.Models
@ -26,6 +27,9 @@ namespace Oqtane.Models
[NotMapped] [NotMapped]
public string Permissions { get; set; } public string Permissions { get; set; }
[NotMapped]
public Dictionary<string, string> Settings { get; set; }
// PageModule properties // PageModule properties
[NotMapped] [NotMapped]
public int PageModuleId { get; set; } public int PageModuleId { get; set; }