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.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<Module> Get(string siteid)
{
List<ModuleDefinition> moduledefinitions = _moduleDefinitions.GetModuleDefinitions(int.Parse(siteid)).ToList();
List<Setting> settings = _settings.GetSettings(EntityNames.Module).ToList();
List<Module> modules = new List<Module>();
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<ModuleDefinition> 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

View File

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

View File

@ -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<Setting> GetSettings(string entityName)
{
return _db.Setting.Where(item => item.EntityName == entityName);
}
public IEnumerable<Setting> GetSettings(string entityName, int entityId)
{
return _db.Setting.Where(item => item.EntityName == entityName)

View File

@ -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<string, string> Settings { get; set; }
// PageModule properties
[NotMapped]
public int PageModuleId { get; set; }