[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>();
Дальше Вы можете использовать значения настроек в Вашей реализации.
Для реализации более сложного отображения настроек можно воспользоваться следующей статьей, в которой описано как реализовать собственные настройки с пользовательским отображением формы просмотра, редактирования настроек.