[ELMA3] Добавление кнопки в тулбар
Данныя статья рассказывает о том, как добавить кнопки в тулбар на страницу ELMA с помощью модуля.
Изменения в версии 3.5
В новой версии системы ELMA, была реализована возможность настройки тулбаров через веб-интерфейс. Реализация добавления кнопки в тулбар с помощью модуля, нужно лишь в том случае, если Вы разрабатывайте свой модуль, который будет внедрятся в другие конфигурации.
Для того чтобы добавить кнопку в тулбар, требуется создать компонент реализующий точку расширения IActionItemProvider.
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [Component] public class MyHomeToolbarButton : IActionItemProvider { /// <summary> /// Обработать корневой активный элемент /// </summary> /// <param name="rootItem">Корневой активный элемент, например, меню или тулбар</param> /// <param name="htmlHelper">Текущий хэлпер</param> public void InsertItems(IActionItem rootItem, HtmlHelper htmlHelper) { if (rootItem == null ) return ; if (rootItem.Uid != ToolbarBuilder.DefaultActionsToolbarUid) return ; var group = rootItem.Items.FirstOrDefault(item => item != null && item.Uid == "HomePageToolbarGroup" ) as ActionToolbarGroup; if (group != null ) { GetItems(rootItem, htmlHelper).ForEach(item => group.Items.Add(item)); } } /// <summary> /// Получить список активных элементов для анализа в других точках /// </summary> /// <param name="rootItem">Корневой активный элемент, например, меню или тулбар</param> /// <param name="htmlHelper">Текущий хэлпер</param> /// <returns>Список элементов</returns> public IEnumerable<IActionItem> GetItems(IActionItem rootItem, HtmlHelper htmlHelper) { if (rootItem == null ) yield break ; if (rootItem.Uid != ToolbarBuilder.DefaultActionsToolbarUid) yield break ; if (!rootItem.Items.Any(item => item is ActionToolbarGroup && item.Uid == "HomePageToolbarGroup" )) yield break ; yield return new ActionToolbarItem { Url = htmlHelper.Url().Action( "Index" , "Home" , new {area = "Elma3Module.Web" }), Text = SR.T( "Моя кнопка" ), IconUrl = RouteProvider.ImagesFolder + "code.png" , ToolTip = SR.T("<b>Кнопка в тулбар на главной странице</b> Добавлено с помощью реализации точки расширения"), }; } } |
IActionItemProvider
Данная точка расширения содержит два метода:
InsertItems – добавляет новый элемент (IActionItem) в тулбар. Данный метод возвращает список элементов IActionItem. В качестве входных параметров в метод приходит корневой элемент и HtmlHelper.
GetItems – данный метод не будет вызван автоматически, в нем можно вернуть NotImplementedException или пустую коллекцию. В представленном выше примере в данном метода создается непосредственно кнопка (ActionToolbarItem).
Во вложениях к данной статье, прикреплен пример веб-модуля ELMA с уже реализованной точкой расширения IActionItemProvider. Вы можете использовать этот пример для ознакомления.