SharePoint 2010/2013 Ribbon API

SharePoint 2010/2013 Ribbon API
SharePoint Ribbon. Использование ColorPicker'а
SharePoint Ribbon. Создание многоуровневого меню

На codeplex опубликована бета-версия QASPRibbon - API для SharePoint Ribbon. Есть версии как для SharePoint 2010, так и для SharePoint 2013. К сожалению нет родного API от Microsoft для удобного построения своих элементов на рибоне. Все элементы рибона должны быть описаны в виде XML. Что крайне неудобно. QASPRibbon создан для того, чтобы инкапсулировать генерацию такого XML и заменить её использованием простых классов.

SharePoint Ribbon

QASPRibbon может работать практически со всеми элементами рибона, имеет свойства, позволяющие реализовать обработку событий на стороне клиента, а также возможность обработки событий на стороне сервера.

Вот контролы, которые поддерживаются бета-версией QASPRibbon. В скобках указаны ссылки на описание классов QASPRibbon, соответствующий элементам рибона.

Ribbon-контейнеры

Tab (RibbonTab). Отдельная закладка на ленте. Дочерними элементами могут быть только группы (RibbonGroup).

RibbonContextualGroup (ContextualGroup). Определяет контекстную группу закладок. Инициализация и отображения контекстных групп происходит при передаче фокуса веб-части, в которое определена группа. Дочерними элементами могут быть закладки (RibbonTab).

Group (RibbonGroup). Определяет группу элементов в закладке. На уровне группы определяется разметка, используемая для расположения дочерних элементов (одна строка, две строки, три строки). SharePoint поддерживает использование различных разметок в пределах одной группы, но в бета-версии QASPRibbon есть такое ограничение. Может быть в дальнейшем появится и такая возможность.

Gallery (RibbonGallery). Определяет галерею кнопок-картинок. Может быть использована только в качестве единственного дочернего элемента секции меню (RibbonMenuSection). Дочерними элементами могут быть только элементы RibbonGalleryButton.

MenuSection (RibbonMenuSection). Секция меню. Любой меню-подобный контрол в рибоне (SplitButton, MRUSplitButton, DropDown, FlyOuAnchor) должен иметь по крайней мере одну секцию меню. На уровне секии задается режим отображения (только текст, текст и картинка 16x16px, текст и картинка 32x32px).

Strib (RibbonStrip). Используется для отображения группы контролов в виде одного контрола (родительский контрол воспринимает Strip-контейнер как один контрол). Дочерние контролы в Strip'е располагаются по горизонтали.

QAT (RibbonQAT). Панель кнопок, расположенная слева и справа над рибонов. QAT - Quick Access Toolbar. В SharePoint 2010/2013 регистрировать эти кнопки нельзя (XML-декларация нигде не обрабатывается), поэтому этот механизм реализован окольными путями.

Ribbon-контролы

Button (RibbonButton). Самая обычная кнопка. Может быть использована как внутри группы элементов, так и в качестве дочернего элемента секции меню. Может отображаться как картика 32x32px с текстом, картика 16x16px с текстом, просто картинка 16x16px или просто текст.

CheckBox (RibbonCheckBox). Обычный HTML-элемент checkbox с подписью.

ColorPicker (RibbonColorPicker). Контрол выбора цветов и/или стилей.

ComboBox (RibbonComboBox). Котрол предназначенный для выбора одного из предложенных значений. Позволяет использовать ручной ввод с включенным (или выключенным) автокомплит. Также допускает возможность указывать свои значения.

DropDown (RibbonDropDown). Котрол предназначенный для выбора одного из предложенных значений.

FlyoutAnchor(RibbonFlyoutAnchor). Кнопка, предназначенная для вызова ниспадающего меню.

Label(RibbonLabel). Самый простой элемент - лейбл для контрола. Может быть как с картинкой так и без.

MRUSplitButton(RibbonMRUSplitButton). Кнопка + ниспадающее меню. Очень похоже на SplitButton, но в отличии от неё, основная кнопка может быть только выбрана из тех, что представлены в меню. MRU означает Most Recently Used.

Spinner(RibbonSpinner). Контрол, предназначенный для выбора чилового значения из указанного диапазона.

SplitButton(RibbonSplitButton). Кнопка, совмещающая в себе кнопку и ниспадающее меню, аналогичное FlyouAnhcor'у. При это кнопка отдельно, меню отдельно.

TextBox(RibbonTextBox). Обычное текстовое поле.

ToggleButton(RibbonToggleButton). Кнопка, имеющая два состояния: включена/выключена.

Использование QASPRibbon на проекте

Для использования QASPRibbon достаточно добавить в проект ссылку на сборку QASPRibbon.dll. При построении WSP-пакетов надо указать эту сборку на вкладке "Advanced" в дизайнере пакета. Все клиентские скрипты генерируются на лету и добавляются на страницу.

Регистрировать свои рибон-элементы можно отовсюду, где будет доступна текущая страница (она необходима для получения ссылка на текущий рибон). Это может быть как веб-часть, так и простой контрол.

Первоисточник

QASPRibbon обязан своему появлению Fluent Ribbon API, функциональность которого постепенно наращивалась и в итоге была переписана полностью ввиду ограниченности изначального проекта.

Что будет потом

В дальнейшем будет реализована возможность использовать элемент InsertTable для вставки таблиц, валидация, а также сохранение состояния элементов рибона.

Виталий Жуков

Виталий Жуков

SharePoint архитектор, разработчик, тренер, Microsoft MVP (Office Development). Более 15 лет опыта работы с SharePoint, Dynamics CRM, Office 365, и другими продуктами и сервисами Microsoft.

Смотрите также

SharePoint 2013 Ribbon API. Версия 15.1

SharePoint 2013 Ribbon API. Версия 15.1

SharePoint Ribbon API. Версия 14.1

SharePoint Ribbon API. Версия 14.1