SharePoint Ribbon API. Версия 14.1

На codeplex опубликована новая версия SharePoint Ribbon API для SharePoint 2010. Нововведения следующие:

  • Локализация. Теперь реализована поддержка локализации аналогично стандартному функционалу SharePoint;
  • Quick Access Toolbar (QAT). Теперь можно добавлять свои кнопки в QAT-панель;
  • Исправлены некоторые баги.

Так как сейчас много решений, основанных на SharePoint 2010 и все больше новых решений разрабатывается на SharePoint 2013, то поддерживаться будут две версии QASPRibbon: 14.* - для SharePoint 2010 и 15.* - для SharePoint 2013.

Локализация

Локализация доступна для всех свойств контролов, значения которых отображаются пользователю. Ссылка на значения из ресурсных файлов задается примерно так:

$Resources:ИМЯ_РЕСУРСНОГО_ФАЙЛА, ИМЯ_ЗНАЧЕНИЯ

Например, если в проект добавлен ресурсный файл MyProjectResources[.Ru-ru].res, который содержит текстовое значение MyStringValue, то ссылка на него при инициализации кнопки (RibbonButton) будет выглядеть примерно следующим образом:

  1. // Id кнопки. Должно быть уникальным в пределах группы
  2. var buttonId = "ButtonId";
  3. // Название кнопки. Значение из ресурсов
  4. var buttonTitle = "$Resources:MyProjectResources, MyStringValue"
  5. // Кнопка для ленты
  6. var button = new RibbonButton(buttonId, buttonTitle);

Локализация также доступна для всплывающих подсказок (RibbonToolTip).

Ribbon QAT (Quick Access Toolbar)

Помимо локализации в новой версии доступна регистрация кнопок на панели быстрого доступа (QAT). В sandbox-решениях такой возможности нет. Связано это с отсутствием реализации в родном API SharePoint'а.

SharePoint Ribbon

Для большей ясности можно посмотреть реализацию класса Microsoft.Web.CommandUI.RibbonRenderer, который отвечает за генерацию HTML-кода ленты в SharePoint.

Класс ленты в SharePoint (Microsoft.SharePoint.WebControls.SPRibbon) унаследован от класса Microsoft.Web.CommandUI.Ribbon из сборки Microsoft.Web.CommandUI в разметке master-страниц SharePoint это выглядит примерно вот так (вырезано лишнее):

  1. <SharePoint:SPRibbon runat="server">
  2.     <SharePoint:SPRibbonPeripheralContent Location="TabRowLeft">
  3.         <SharePoint:PageStateActionButton/>
  4.     </SharePoint:SPRibbonPeripheralContent>
  5.     <SharePoint:SPRibbonPeripheralContent Location="TabRowRight">
  6.     </SharePoint:SPRibbonPeripheralContent>
  7. </SharePoint:SPRibbon>

На ленте присутствуют два контрола-близнеца, отличающихся лишь свойством Location, которое может принимать только одно из следующих значений: "TabRowLeft", "TabRowRight", "QATRowCenter", "QATRowRight". Т.е. реализация этих контролов возможна. Даже в схеме ленты эти элементы описаны. Отсутствует механизм рендеринга. Но контрол SPRibbonPeripheralContent является унаследованным от обычного контрола (WebControl), что позволяет нам использовать его как стандартный контейнер, что и реализовано в SharePoint Ribbon API.

Регистрация кнопок в QAT

Для добавления кнопок на панель быстрого запуска в SharePoint Ribbon API реализованы следующие классы:

  • RibbonQAT - является контейнером для всех кнопок, подлежащих добавлению в панель быстрого запуска, не зависимо от того слева они будут располагаться или справа;
  • RibbonQATButton - кнопка панели быстрого запуска. Унаследована от стандартного контрола ImageButton, и все стандартные его свойства и обработчики также доступны.

Следующий код регистрирует три кнопки на панели быстрого запуска, две слева и одну справа:

  1. // Кнопка 1
  2. var qatBtn = new RibbonQATButton
  3.     {
  4.         Location = RibbonQATLocation.Left,
  5.         ImageUrl = "/_layouts/images/addressbook.gif",
  6.     };
  7. // Кнопка 2
  8. var qatBtn2 = new RibbonQATButton
  9.     {
  10.         Location = RibbonQATLocation.Left,
  11.         ImageUrl = "/_layouts/images/ONE16.GIF",
  12.     };
  13. // Кнопка 3
  14. var qatBtn3 = new RibbonQATButton
  15. {
  16.     Location = RibbonQATLocation.Right,
  17.     ImageUrl = "/_layouts/images/PERMLINK.PNG",
  18. };
  19. // Панель быстрого запуска
  20. var qat = new RibbonQAT
  21.     {
  22.         Controls = new[] {qatBtn, qatBtn2, qatBtn3}
  23.     };
  24. // Регистрируем панель быстрого запуска
  25. RibbonManager.Current.AddQATToPage(qat, Page);

Функциональность здесь отсутствует как таковая, для большей простоты примера.

Результат в браузере:

SharePoint Ribbon API QAT Buttons

Отступ кнопки справа обусловлен наличием контейнера для кнопок панели разработчика (developer dashboard).

Пользуемся!

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

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

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

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

SharePoint 2010/2013 Ribbon API

SharePoint 2010/2013 Ribbon API

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

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