[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, и другими точками расширения.