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).

Пользуемся!


Поделиться

Коментарии