[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. Вы можете использовать этот пример для ознакомления.