[ELMA3] Добавление пункта в левое меню
В данной статье описано как добавить свой пункт в левое меню с помощью модуля.
Внимание!
Работа с пунктами меню, может быть реализована через интерфейс в веб-части. Совершайте манипуляции с меню в рамках модуля, только в том случае если данный модуль будет использован на других конфигурациях, чтобы не настраивать меню вручную.
Для того чтобы добавить пункт в левое меню, требуется создать компонент реализующий точку расширения IMenuItemsProvider.
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 | [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], в нем также указать местоположение иконок, название пункта меню и др.
1 2 3 4 5 6 7 8 | [ContentItem(Name = "Мой пункт меню" , Image16 = RouteProvider.ImagesFolder + "code.png" , Image24 = RouteProvider.ImagesFolder + "code.png" , Image32 = RouteProvider.ImagesFolder + "code.png" )] public ActionResult Index() { return View(); } |
Пример
Во вложениях к данной статье, приведен пример веб-модуля ELMA с уже реализованным IMenuItemsProvider, и другими точками расширения.