Новый сайт группы SharePoint. Как это работает
Новый сайт группы, который был выпущен для SharePoint Online, становится доступен в SharePoint 2019 Server.
Доступность нового типа сайта в on-premise SharePoint делает возможным изучить его и разобраться как он работает и чем по сути является.
Я просмотрел новый сборки и файлы (конфигурация, XML-определения и т.д.). Теперь я могу рассказать и показать что под капотом.
Сайт группы
Новый сайт группы - это новая конфигурация существующего шаблона сайта SharePoint - STS. Идентификатор нового сайта - STS#3. Давайте пройдемся по списку сайтов на основе шаблона STS:
STS#0 - Классический сайт группы.
STS#1 - Пустой сайт. Стал скрытым начиная с выходом SharePoint 2016.
STS#2 - Рабочая область документа. Устаревший шаблон сайта, выпущенный вместе с MOSS 2007 для совместной работы над документами. Скрытый и устаревший шаблон. Никогда его не используйте.
STS#3 - Новый сайт группы, которому посвящен этот пост.
Новый шаблон сайта группы может быть использован только для создания корневого сайта коллекции сайтов, по крайне мере через веб-интерфейс. Вы можете всегда использовать PowerShell для создания дочернего сайта на основе нового шаблона (STS#3):
New-SPWeb -Url https://sharepoint/subsite -Template STS#3 -Name "Новый сайт группы"
Отличия нового шаблона от старого
В чем разница между классическим сайтом группы и новым?
В таблице ниже содержится информация о возможностях, которые используются этим шаблонами сайтов:
Область | Возможность | Классический сайт группы | Новый сайт группы |
---|---|---|---|
Site | Basic Web Parts | ✔ | ✔ |
Site | Трехэтапный рабочий процесс | ✔ | ✔ |
Web | Document Library instance | ✔ | ✔ |
Web | Списки для совместной работы группы пользователей | ✔ | ✔ |
Web | Site Notebook | ✔ | ✔ |
Web | Document Library instance | ✔ | ✔ |
Web | Mobility Shortcut URL | ✔ | ✘ |
Web | Домашняя вики-страница | ✔ | ✘ |
Web | Приступая к работе | ✔ | ✘ |
Web | Стратегия минимального скачивания | ✔ | ✘ |
Web | Groupify Button | ✔ | ✘ |
Site | Site Page Resources | ✘ | ✔ |
Site | Веб-приложение Access | ✘ | ✔ |
Site | Ratings | ✘ | ✔ |
Web | Default SPGroups SiteMaster | ✘ | ✔ |
Web | Default SPGroups Async | ✘ | ✔ |
Web | MUIWeb | ✘ | ✔ |
Web | Страницы сайта | ✘ | ✔ |
Web | Group Homepage | ✘ | ✔ |
Как видно разница велика. Даже классический сайт группы был изменен и отличается от сайта групп в SharePoint 2016. Стратегия минимальной загрузки (MDS) больше не используется.
Мы будем скучать по этому сообщению.
Страницы сайта
Новый сайт группы использует новые страницы, которые описываются специальным типом содержимого (ContenTypeID - 0x0101009D1CB255DA76424F860D91F20E6C4118):
Свойства Создание содержимого холста и Содержимое макета страницы используются для хранения содержимого страницы. Вот такая страница:
хранится таком виде:
<div>
<div data-sp-canvascontrol="" data-sp-canvasdataversion="1.0" data-sp-controldata="">
<div data-sp-rte="">
<p>SharePoint 2019 Preview</p>
</div>
</div>
<div data-sp-canvascontrol="" data-sp-canvasdataversion="1.0" data-sp-controldata="">
<div data-sp-webpart="" data-sp-webpartdataversion="1.2" data-sp-webpartdata="">
<div data-sp-componentid="">{GUID}</div>
<div data-sp-htmlproperties="">
<div data-sp-prop-name="title" data-sp-searchableplaintext="true"></div>
<div data-sp-prop-name="persons[0].name" data-sp-searchableplaintext="true">Vitaly Zhukov</div>
<div data-sp-prop-name="persons[0].email" data-sp-searchableplaintext="true"></div>
<img data-sp-prop-name="persons[0].imageUrl" src="/_layouts/15/userphoto.aspx?size=L&amp;accountname=dev%5cvitaly"
/>
</div>
</div>
</div>
<div data-sp-canvascontrol="" data-sp-canvasdataversion="1.0" data-sp-controldata=""></div>
</div>
Атрибут data-sp-controldata содержит JSON-данные для отображения содержимого:
{
"id": "cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",
"instanceId": "cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",
"title": "Title Region",
"description": "Title Region Description",
"serverProcessedContent": {
"htmlStrings": {},
"searchablePlainTexts": {},
"imageSources": {},
"links": {}
},
"dataVersion": "1.4",
"properties": {
"title": "page",
"textAlignCenter": false,
"imageSourceType": 4,
"layoutType": "FullWidthImage",
"textAlignment": "Left",
"showKicker": false,
"showPublishDate": false,
"kicker": ""
}
}
Атрибут data-sp-webpartdata содержит свойства веб-части в формате JSON:
{
"id": "7f718435-ee4d-431c-bdbf-9c4ff326f46e",
"instanceId": "075b6015-60a7-4a7b-bfbc-61dedcec4607",
"title": "People",
"description": "Display selected people and their profiles",
"serverProcessedContent": {
"htmlStrings": {},
"searchablePlainTexts": {
"title": "",
"persons[0].name": "Vitaly Zhukov",
"persons[0].email": ""
},
"imageSources": {
"persons[0].imageUrl": "/_layouts/15/userphoto.aspx?size=L&accountname=dev\\vitaly"
},
"links": {}
},
"dataVersion": "1.2",
"properties": {
"layout": 2,
"persons": [
{
"id": "i:0#.w|dev\\vitaly",
"upn": "DEV\\vitaly",
"role": "",
"department": "",
"phone": "",
"sip": ""
}
]
}
}
Document Library instance
Эта фича просто размещает ссылку на библиотеку общих документов на панели быстрого запуска.
Default SPGroups
Возможности Default SPGroups* создаются группы безопасности и ассоциируют их с сайтом.
Домашняя страница группы
Домашняя страница группы создает домашнюю страницу на основе файла home.aspx, который содержится в фиче. Содержимое этого файла:
<%@ Assembly Name="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>
<%@ Page Language="C#" Inherits="Microsoft.SharePoint.WebControls.ClientSidePage" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<!--no-store-props-->
Пустой файл. Сама страница унаследована от класса Microsoft.SharePoint.WebControls.ClientSidePage:
Это новый класс для SharePoint. И он абсолютно пуст:
public class ClientSidePage : ClientSidePageBase
{
}
Выводы
Новый сайт группы для SharePoint является частью new experience (ранее modern UI). Не осталось ни единого функционала, работающего "по-старому":
Вики-страницы. SharePoint не лучшая платформа для создания вики. Просто создавать страницы и ссылки между ними можно и без вики.
Отдельное представление для мольных устройств. Современные веб-приложения используют адаптивную верстку. Отдельное представление для мобильных устройств просто не за чем.
Стратегия минимальной загрузки. Весь динамически формируемый контент отрисовывается на клиентской стороне.
Приступая к работе. Старый вводный курс по работе с порталом, которым не пользовался никто. Бесполезная фича.
Новый сайт группы - хороший шаг вперед. И нет никакой поддержки старого функционала для обеспечения обратной совместимости.