SharePoint 2016. Извещения мозаикой
В SharePoint 2016 появилась возможность Извещения мозаикой (Announcement Tiles) ранее доступная только в SharePoint Online. Функционально они идентичны.
Активация
Фича доступна в разделе Возможности сайта, но при её активации возникает ошибка (как в on-premise так и в Office 365):
Исключение выбрасывается ресивером и к обновлению сайта отношение не имеет. Смотрим ресивер Microsoft.SharePoint.Portal.AnnouncementTilesFeatureReceiver и видим причину в строке 16:
- public override void FeatureActivated(SPFeatureReceiverProperties properties)
- {
- ULS.SendTraceTag(0x2d3160, ULSCat.msoulscat_SPS_AnnouncementTiles, ULSTraceLevel.High, "FeatureActivated: START: AnnouncementTilesFeatureReceiver");
- if ((properties.Feature.Parent == null) || !(properties.Feature.Parent is SPWeb))
- {
- throw new ArgumentException("AnnouncementTilesFeatureReceiver: the parent of the feature is not an SPWeb as expected.");
- }
- SPWeb parent = properties.Feature.Parent as SPWeb;
- if (parent == null)
- {
- ULS.SendTraceTag(0x2d3161, ULSCat.msoulscat_SPS_AnnouncementTiles, ULSTraceLevel.High, "FeatureActivating: AnnouncementTilesReceiver could not resolve the scope of the activated feature to a web.");
- throw new InvalidOperationException("AnnouncementTilesReceiver.FeatureActivated: Web not found.");
- }
- try
- {
- if (parent.WebTemplateId != 54)
- {
- throw new SPException(SPResource.GetString(CultureInfo.CurrentUICulture, "FeatureUnsupportedInCurrentCompatibilityLevel", new object[0]));
- }
- ULS.SendTraceTag(0x2d3162, ULSCat.msoulscat_SPS_AnnouncementTiles, ULSTraceLevel.Monitorable, "AnnouncementTilesFeatureReceiver: Updating default page on MySite host to add AnnouncementTiles webpart on Web = [{0}]", new object[] { parent.Url });
- AddAnnouncementTilesWebPartToMySiteHostDefaultPage(parent, CreateAnnouncementTilesWebPart());
- }
- catch (Exception exception)
- {
- ULS.SendTraceTag(0x2d3163, ULSCat.msoulscat_SPS_AnnouncementTiles, ULSTraceLevel.High, "FeatureActivating: AnnouncementTilesFeatureReceiver Error: AnnouncementTilesFeature Activation - Exception [" + exception.ToString() + "]");
- throw;
- }
- }
Шаблон сайта с ID=54 - это MySite (SPSMSITEHOST#0). Т.е. фичу можно активировать только на персональном сайте. При активации будет создан список для хранения плиток и добавлена веб-часть на главную страницу персонального сайта.
Извещения
Никаких типов содержимого специальных не создается. Только поля:
- Announcement Title
- Announcement Description
- URL
- Image
- Start Date
- End Date
- Priority
Сам список извещений:
Веб-часть
Веб-часть извещений отображает только 5 элементов из списка, отбирая их следующим SPQuery:
- <Query>
- <Where>
- <And>
- <Or>
- <IsNull>
- <FieldRef Name="StartDate" />
- </IsNull>
- <Leq>
- <FieldRef Name="StartDate" />
- <Value Type="DateTime">
- <Today />
- </Value>
- </Leq>
- </Or>
- <Or>
- <IsNull>
- <FieldRef Name="EndDate" />
- </IsNull>
- <Geq>
- <FieldRef Name="EndDate" />
- <Value Type="DateTime">
- <Today />
- </Value>
- </Geq>
- </Or>
- </And>
- </Where>
- <OrderBy Override="TRUE">
- <FieldRef Name="Priority" Ascending="True"/>
- <FieldRef Name="Created" Ascending="False"/>
- </OrderBy>
- </Query>
Самое "приятное" - это пейджинг в один элемент на странице. Это хорошо подходит при размещении веб-части в правой зоне. Но перемещение веб-части в более широкую зону приводит к не очень симпатичному результату:
Уведомления по почте имеют свой формат:
В итоге можно сделать вывод, что Извещения мозаикой появились в SharePoint 2016 не потому что это замечательная фича, а просто потому что она есть в Office 365.
Feature Definition
Содержимое фичи и её свойства можно посмотреть в обновленном разделе SPаргалки: