[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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [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
1 2 3 4 5 6 7 8 9 | [Component(Order = 260)] public class SettingsModuleController : GlobalSettingsModuleControllerBase<Settings, SettingsModule> { public SettingsModuleController(SettingsModule module) : base (module) { } } |
Для применения настроек в Вашем модуле, необходимо загрузить настройки: var settings = Locator.GetService<SettingsModule>();
Дальше Вы можете использовать значения настроек в Вашей реализации.
Для реализации более сложного отображения настроек можно воспользоваться следующей статьей, в которой описано как реализовать собственные настройки с пользовательским отображением формы просмотра, редактирования настроек.