В качестве обходного пути я реализовал обработчик событий (SPItemEventReceiver) для перехвата обновлений (ItemUpdating) и удаления (ItemDeleting).
: Проверка собственности :
Он сравнивает текущего пользователя с элементом ["Автор"], чтобы определить, являются ли они владельцем, что дает им разрешение на редактирование / удаление.
: В группе модераторов :
Если это не так, то я добавил дополнительную группу пользователей для модераторов. Одним из ключей является то, что группе, хотя она и не используется нормально, должны быть назначены такие полномочия, как Contributor. SPWeb имеет IsCurrentUserMemberOfGroup для определения того, принадлежит ли пользователь группе модераторов.
//----------------------------------
//here is enough to get you started.
//----------------------------------
class DiscussionBoardItemCreated : SPItemEventReceiver
{
public override void ItemUpdating(SPItemEventProperties properties)
{
//check ContentType
// -- properties.AfterProperties["ContentType"]
//are they the owner
// -- item["Author"]
//are they in a particular user group
// -- web.IsCurrentUserMemberOfGroup(web.Groups["MyModeratorGroup"].ID)
//properties.Cancel = true -OR- false;
//properties.ErrorMessage = "" -OR- "No access";
}
}
Кроме того, вам нужно будет использовать elements.xml.
ОТ: http://koenvosters.wordpress.com/2009/07/31/howto-create-an-event-handler-for-sharepointmoss-2007/
<?xml version=“1.0“ encoding=“utf-8“ ?>
<Elements xmlns=“http://schemas.microsoft.com/sharepoint/“>
<Receivers ListTemplateId=“100“>
<Receiver>
<Name>AddingEventHandler</Name>
<Type>ItemAdding</Type>
<SequenceNumber>10000</SequenceNumber>
<Assembly>MyEventHandler, Version=1.0.0.0, Culture=neutral,PublicKeyToken=ca176e059473d6b1</Assembly>
<Class>MyEventHandler.DemoEventHandler</Class>
<Data></Data>
<Filter></Filter>
</Receiver>
</Receivers>
</Elements>