Как мне установить целевую аудиторию по умолчанию для события календаря в Sharepoint?
-
16-09-2019 - |
Вопрос
У меня есть некоторые опасения по поводу подхода, который я использую для централизации календаря в MOSS.Сценарий заключается в том, что существует 1 календарь для Предприятия, и События фильтруются с помощью таргетинга на аудиторию.Включить таргетинг на аудиторию в календаре довольно просто, моя проблема возникает, когда клиент хочет автоматически заполнить это событие значением по умолчанию в разделе "Целевые аудитории".
Например, если менеджер магазина публикует событие, целевой аудиторией будет только магазин, аналогично, если менеджер округа публикует событие, это будет относиться только к магазинам в его / ее районе.Идея состоит в том, чтобы выбрать группу по умолчанию из рекламы или даже Глобальной аудитории, если это необходимо, чтобы “настроить по умолчанию” Целевую аудиторию в зависимости от того, кто создает мероприятие.
Я предполагаю, что мне нужно будет использовать класс AudienceManager и обработчик событий, чтобы добиться этого.
Могу ли я настроить Целевую аудиторию с помощью jQuery для группы объявлений?Нужно ли мне переопределять обработчик событий, такой как ItemAdding, чтобы перейти и извлечь группу?
Похоже, что это был бы довольно распространенный запрос при использовании целевой аудитории с помощью события календаря, но я потратил довольно много времени, пытаясь найти примеры, и ничего не добился.
Решение
Мое лучшее предположение заключается в том, что вам действительно следует использовать ItemEventReceiver , переопределяющий события ItemAdding и ItemUpdating (в случае редактирования элемента?), оба вызывающие один и тот же метод SetAudience , в этом методе вы устанавливаете аудиторию на основе SPContext.Current.Web.CurrentUser и групп, в которых он находится, или, возможно, какого-то пользовательского уровня разрешений, который вы создаете
Неполный код:
protected override ItemAdding(properties)
{
SetAudience(properties.ListItem)
}
protected override ItemUpdating(properties)
{
SetAudience(properties.ListItem)
}
private void SetAudience(SPListItem item)
{
// get current user's groups
// check if user is a member of store managers / district managers group
// get all audiences below this user (i.e. all stores in district or single store
// add relevant audiences to item
}
}