[ELMA3] Добавление кнопки в тулбар
Данныя статья рассказывает о том, как добавить кнопки в тулбар на страницу ELMA с помощью модуля.
Изменения в версии 3.5
В новой версии системы ELMA, была реализована возможность настройки тулбаров через веб-интерфейс. Реализация добавления кнопки в тулбар с помощью модуля, нужно лишь в том случае, если Вы разрабатывайте свой модуль, который будет внедрятся в другие конфигурации.
Для того чтобы добавить кнопку в тулбар, требуется создать компонент реализующий точку расширения IActionItemProvider.
[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><br>Добавлено с помощью реализации точки расширения"), }; } }
IActionItemProvider
Данная точка расширения содержит два метода:
InsertItems – добавляет новый элемент (IActionItem) в тулбар. Данный метод возвращает список элементов IActionItem. В качестве входных параметров в метод приходит корневой элемент и HtmlHelper.
GetItems – данный метод не будет вызван автоматически, в нем можно вернуть NotImplementedException или пустую коллекцию. В представленном выше примере в данном метода создается непосредственно кнопка (ActionToolbarItem).
Во вложениях к данной статье, прикреплен пример веб-модуля ELMA с уже реализованной точкой расширения IActionItemProvider. Вы можете использовать этот пример для ознакомления.