logo

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

Прикрепленные файлы