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

 

SPSecurityTrimmedControl

Для этого в SharePoint есть элемент управления SPSecurityTrimmedControl.

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spsecuritytrimmedcontrol.aspx

Работает он примерно так:

<SharePoint:SPSecurityTrimmedControl PermissionsString="список разрешений" runat="server">

<%--Ваше содержимое %>

</SharePoint:SPSecurityTrimmedControl>

 

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

  1. AuthenticationRestrictions
  2. PageModes
  3. PermissionContext
  4. PermissionMode
  5. Permissions
  6. PermissionsString

От этого класса унаследованы различные другие классы – различные кнопки. Например, ссылки Корзина и Посмотреть весь контент сайта обладают теми же возможностями.

 

SPRibbon

Примечательно, но в классе SPRibbon (Риббон, Лента) реализованы свойства с теми же названиями, а функциональность продублирована. При этом нет общего интерфейса или класса или вспомогательного класса – функциональность продублирована.

Итак, описание свойств:

1 - AuthenticationRestrictions – режим аутентификации (http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spribbon.authenticationrestrictions.aspx )

enum AuthenticationRestrictions

  • AllUsers – все пользователи
  • AuthenticatedUsersOnly – только прошедшие проверку (аутентификацию)
  • AnonymousUsersOnly – только анонимные

2 - PageModes – режим просмотра страницы (http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spribbon.pagemodes.aspx)

enum PageModes

  • All – Все режимы страницы
  • Normal – Режим просмотра страницы
  • Design – Режим редактирования страницы

3 - PermissionContext – режим контекста разрешений (http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spribbon.permissioncontext.aspx)

enum PermissionContext

  • CurrentSite – текущий сайт
  • CurrentList – текущий список
  • CurrentItem – текущий элемент
  • RootSite – корневой сайт в семействе
  • CurrentFolder – текущая папка

4 - PermissionMode - режим проверки разрешений (http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spribbon.permissionmode.aspx)

enum PermissionMode

  • All – У пользователя должны быть все перечисленные разрешения
  • Any – Хотя бы одно разрешение

5 - Permissions – разрешения (http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spribbon.permissions.aspx)

Здесь необходимо ознакомиться со всеми гранулярными разрешениями в SharePoint:

enum SPBasePermissions - http://msdn.microsoft.com/EN-US/library/ms412690

В разметке следует использовать свойство PermissionsString (http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spribbon.permissionsstring.aspx)

Пример: PermissionsString="AddAndCustomizePages, ManageLists" (разрешения перечисляются через запятую)

 

EditModePanel

При разработке макетов для страниц публикации можно использовать панель, которая показывает контент в зависимости от режима просмотра или редактирования

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.editmodepanel.aspx

EditModePanel.PageDisplayMode Property (Edit | Display)

Работает примерно так

<PublishingWebControls:EditModePanel runat="server" id="myID1" PageDisplayMode= "Edit">

<%--контент для редактирования %>

</PublishingWebControls:EditModePanel>

 

<PublishingWebControls:EditModePanel runat="server" id="myID2" PageDisplayMode="Display">

<%--контент для просмотра %>

</PublishingWebControls:EditModePanel>

 

Из-за изменений в SharePoint 2010 контент в режиме просмотра отображается, но только тем, кто имеет права на редактирование, что создает массу проблем. Поэтому следует использовать панель совместно с еще одним классом:

AuthoringContainer (http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.authoringcontainer.aspx)

Пример:

<PublishingWebControls:AuthoringContainer DisplayAudience="ReadersOnly" runat="server">

<!—Контент для тех, кто имеет разрешение на просмотр -->

</PublishingWebControls:AuthoringContainer>

 

<PublishingWebControls:AuthoringContainer DisplayAudience="AuthorsOnly" runat="server">

<PublishingWebControls:EditModePanel runat="server" PageDisplayMode="Display">

<!—В режиме отображения для редакторов -->

</PublishingWebControls:EditModePanel>

 

<PublishingWebControls:EditModePanel runat="server" PageDisplayMode="Edit">

<!-- В режиме редактирования для редакторов -->

</PublishingWebControls:EditModePanel>

</PublishingWebControls:AuthoringContainer>

 

 

Элементы ленты и другие ссылки - CustomAction Element

http://msdn.microsoft.com/en-us/library/ms460194.aspx

При создании элементов меню, ленты, ссылок в параметрах списка, сайта и других расположениях, также можно ограничить видимость.

Атрибуты RegistrationId и RegistrationType влияют на то, к каким шаблонам списков, типов контента или расширениям файлов будут привязаны ссылки и кнопки.

Атрибут RequireSiteAdministrator указывает, нужны ли разрешения администратора семейства сайтов.

Атрибут Rights – это маска прав с указанием через запятую (http://msdn.microsoft.com/EN-US/library/ms412690)

 

При разработке дизайна старайтесь не убирать все ненужные на первый взгляд элементы из интерфейса, подумайте, кому и в каких случаях они могут понадобиться. Если имеющиеся варианты элементов управления Вам не подошли, создайте свою панель с условным отображением.