Добавление пункта в левое меню

В данной статье описано как добавить свой пункт в левое меню с помощью модуля.

 
Внимание!
Работа с пунктами меню, может быть реализована через интерфейс в веб-части. Совершайте манипуляции с меню в рамках модуля, только в том случае если данный модуль будет использован на других конфигурациях, чтобы не настраивать меню вручную.

Для того чтобы добавить пункт в левое меню, требуется создать компонент реализующий точку расширения 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, и другими точками расширения.

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