SPAlert срабатывает при публикации страницы определенного типа контента
Может кто-нибудь, пожалуйста, дайте мне знать, как вызвать оповещение только тогда, когда в MOSS опубликована страница определенного типа контента?
Требуется настроить оповещения в библиотеке страниц сайта публикации для отправки уведомлений, когда кто-то создал страницу с использованием определенного типа контента и опубликовал страницу. Мне удалось вызвать предупреждение для страниц, созданных с использованием типа контента. И отдельно, когда страница публикуется с использованием CAML в SPAlert.Filter
имущество.
Но когда я объединяю запросы, используя CAML <And></And>
оповещения перестают вызывать любые уведомления.
Кто-нибудь знает, почему это происходит? И правильный способ использования CAML <And>
в SPAlert.Filter
?
Мой код:
SPUser user = SPContext.Current.Web.CurrentUser;
SPWeb web = SPContext.Current.Web;
SPAlert alert = user.Alerts.Add();
alert.Filter = "<Query><And><Eq><FieldRef Name='ContentType' /><Value Type='Text'>CUSTOM_PAGE_CONTENT_TYPE</Value></Eq><Eq><FieldRef Name='_ModerationStatus' /><Value Type='Integer'>0</Value></Eq></And></Query>";
alert.Title = "Alert Title";
alert.AlertType = SPAlertType.List;
alert.EventType = SPEventType.All;
alert.List = web.Lists["Pages"];
alert.AlertFrequency = SPAlertFrequency.Immediate;
alert.AlwaysNotify = true;
alert.Update(true);
Заранее спасибо, Ризи.
2 ответа
Попробуй это:
<Query>
<Where>
<And>
<Eq>
<FieldRef Name='ContentType' />
<Value Type='Text'>CUSTOM_PAGE_CONTENT_TYPE</Value>
</Eq>
<Eq>
<FieldRef Name='_ModerationStatus' />
<Value Type='ModStat'>Approved</Value>
</Eq>
</And>
</Where>
</Query>
Вам нужен элемент Where между Query и And. Кроме того, используйте тип ModStat вместо Integer для ModerationStatus.
На самом деле, свойство SPAlert.Filter не должно иметь <Where>
Элемент XML. Удалите это из XML-фрагмента фильтра, и оно должно работать.
Установите второй флажок Примечание на этой странице: http://msdn.microsoft.com/en-us/library/bb802961(v=office.12).aspx