[ELMA3] Добавление пункта в левое меню
В данной статье описано как добавить свой пункт в левое меню с помощью модуля.
Внимание!
Работа с пунктами меню, может быть реализована через интерфейс в веб-части. Совершайте манипуляции с меню в рамках модуля, только в том случае если данный модуль будет использован на других конфигурациях, чтобы не настраивать меню вручную.
Для того чтобы добавить пункт в левое меню, требуется создать компонент реализующий точку расширения IMenuItemsProvider.
[Component] public class MyMenuItemProvider : IMenuItemsProvider { public void Items(MenuItemFactory factory) { factory.Action<HomeController>(c => c.Index()).Order(100).Container("left"); } public List<string> LocalizedItemsNames { get { return new List<string> { SR.T("Мой пункт меню") }; } } public List<string> LocalizedItemsDescriptions { get { return new List<string> { SR.T("Пункт левого меню добавленный с помощью модуля") }; } } }
IMenuItemsProvider
Items – метод, в который в качестве параметра приходит MenuItemFactory, в приведенном выше примере, на пункт меню навешивается ссылка на действие Index, контроллера HomeController, также указан параметр Container("left"), для того чтобы добавить пункт именно в левое меню, также указан параметр Order(100), который определяет место по порядку, которое займет Ваш пункт меню. Для того чтобы данный пункт меню корректно работал, требуется действие контроллера пометить атрибутом [ContentItem], в нем также указать местоположение иконок, название пункта меню и др.
[ContentItem(Name = "Мой пункт меню", Image16 = RouteProvider.ImagesFolder + "code.png", Image24 = RouteProvider.ImagesFolder + "code.png", Image32 = RouteProvider.ImagesFolder + "code.png")] public ActionResult Index() { return View(); }
Пример
Во вложениях к данной статье, приведен пример веб-модуля ELMA с уже реализованным IMenuItemsProvider, и другими точками расширения.