SharePoint онлайн - как включить jslink по умолчанию для всех списков?
Кто-нибудь нашел способ автоматического добавления URL-адреса jslink в списки по умолчанию вместо необходимости вручную добавлять URL-адрес в каждый список при их создании? В конечном итоге мы хотели бы иметь jslink по умолчанию для каждого типа приложений, к которым имеют доступ редакторы.
2 ответа
Да, Крис О'Брайен прекрасно описал это здесь: http://www.sharepointnutsandbolts.com/2013/01/using-jslink-to-change-ui-of-sharepoint_20.html
Короткая история - вы должны создать шаблон списка и определить там jslink, чтобы все списки, основанные на этом шаблоне, имели бы ссылку js. Если вы по какой-либо причине не хотите связывать списки с шаблонами, вам следует изучить получатели событий. (для Списка созданных событий.)
Другое решение - написать собственный код для обновления всех ваших страниц. На этой странице Тобиас Циммергрен показывает код обновления JSLink с помощью PowerShell: PowerShell: настройка свойства JSLink веб-части
Я лично использую C# CSOM для обновления JSLink на всех запрашиваемых страницах. Вот пример кода, который обновляет JSLink на одной странице (для простоты я убрал обработку исключений и всю логику не-счастливого пути):
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.WebParts;
void UpdateWebPart(ClientContext webpartContext, string RelativeUrl, string JSLink)
{
File page = webpartContext.Web.GetFileByServerRelativeUrl(RelativeUrl);
LimitedWebPartManager wpm = page.GetLimitedWebPartManager(PersonalizationScope.Shared);
webpartContext.Load(page);
webpartContext.Load(wpm.WebParts, wps => wps.Include(w => w.WebPart.Title, w => w.WebPart.Properties));
webpartContext.ExecuteQuery();
if (wpm.WebParts.Count > 0)
{
// You can find your WebPart inside wpm.WebParts e.g. by Title. On each page I have only 1 WebPart, so I just take the first.
WebPartDefinition wpd = wpm.WebParts[0];
WebPart myWP = wpd.WebPart;
if ((string)myWP.Properties["JSLink"] != JSLink)
{
myWP.Properties["JSLink"] = JSLink;
wpd.SaveWebPartChanges();
webpartContext.ExecuteQuery();
}
}
}
- webpartContext - это SharePoint ClientContext, созданный ранее.
- RelativeUrl выглядит примерно так: "/Lists/Sample%20Tasks/AllItems.aspx"
- JSLink - это новое значение для JSLink WebPart, которое вы хотите обновить