[ELMA3] Добавление собственного раздела настроек для модуля
В статье приведен пример добавления собственного раздела настроек для модуля, в котором задаются настройки подключения к СУБД MSSQL Server, а именно: Имя пользователя, Пароль, DataSource, InitialCatalog. Для реализации собственного раздела настроек необходимо наследоваться от классов:
- EleWise.ELMA.Runtime.Settings.GlobalSettingsBase - Базовый класс для глобальных настроек, хранит настройки в полях объекта
- EleWise.ELMA.Runtime.Settings.GlobalSettingsModuleBase<TSettings> - В данном классе определяется название модуля, его раздел в системе, а также методы для загрузки/сохранения настроек.
- EleWise.ELMA.Web.Mvc.Models.Settings.GlobalSettingsModuleControllerBase<TSettings, TSettingsModule> - Данный класс необходим для определения положения настроек модуля, а также для отрисовки форм просмотра/редактирования.
Пример отображения данных

Рис. 1. Раздел настроек для модуля
Для реализации простого блока настроек необходимо реализовать 3 класса, наследованные от GlobalSettingsBase, GlobalSettingsModuleBase и GlobalSettingsModuleControllerBase. Примеры классов приведены ниже. Для просмотра более подробного примера можно воспользоваться данной статьей.
Пример класса, наследованного от класса GlobalSettingsBase
public class Settings : GlobalSettingsBase
{
/// <summary>
/// Определяет, что пароль не изменен
/// </summary>
public const string PASSWORD_NOT_CHANGED = "($PASSWORD_NOT_CHANGED$)";
public Settings()
{
DataSource = "(local)";
InitialCatalog = "BASEMESSAGES";
}
[DisplayName(typeof(@__Resources_MSSQLConnectionSettings), "DataSource")]
[Description(typeof(@__Resources_MSSQLConnectionSettings), "DataSourceDescription")]
[Required(true)] //Обязательность заполнения поля
public string DataSource { get; set; }
[DisplayName(typeof(@__Resources_MSSQLConnectionSettings), "InitialCatalog")]
[Description(typeof(@__Resources_MSSQLConnectionSettings), "InitialCatalogDescription")]
[Required(true)] //Обязательность заполнения поля
public string InitialCatalog { get; set; }
[DisplayName(typeof(@__Resources_MSSQLConnectionSettings), "UserId")]
[Description(typeof(@__Resources_MSSQLConnectionSettings), "UserIdDescription")]
[Required(true)] //Обязательность заполнения поля
public string UserId { get; set; }
}
/// <summary>
/// Ресурсы
/// </summary>
internal class @__Resources_MSSQLConnectionSettings
{
public static string DataSource { get { return SR.T("DataSource"); } }
public static string DataSourceDescription { get { return SR.T("Коннект до базы"); } }
public static string InitialCatalog { get { return SR.T("InitialCatalog"); } }
public static string InitialCatalogDescription { get { return SR.T("Имя базы данных"); } }
public static string UserId { get { return SR.T("Имя пользователя"); } }
public static string UserIdDescription { get { return SR.T("Имя пользователя для подключения к БД"); } }
}
Пример класса, наследованного от класса GlobalSettingsModuleBase
[Component]
public class SettingsModule : GlobalSettingsModuleBase<Settings>
{
public static Guid UID = new Guid("{658A7D31-873B-4aa1-B183-54EE55DE0EAD}");
public override Guid ModuleGuid
{
get { return UID; }
}
/// <summary>
/// Название модуля
/// </summary>
public override string ModuleName
{
get { return SR.T("Настройки подключения к базе MSSQL для отправки сообщений"); }
}
}
Пример класса, наследованного от класса GlobalSettingsModuleControllerBase
[Component(Order = 260)]
public class SettingsModuleController : GlobalSettingsModuleControllerBase<Settings, SettingsModule>
{
public SettingsModuleController(SettingsModule module)
: base(module)
{
}
}<br>
Для применения настроек в Вашем модуле, необходимо загрузить настройки: var settings = Locator.GetService<SettingsModule>();
Дальше Вы можете использовать значения настроек в Вашей реализации.
Для реализации более сложного отображения настроек можно воспользоваться следующей статьей, в которой описано как реализовать собственные настройки с пользовательским отображением формы просмотра, редактирования настроек.