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

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

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