Как ограничить редактирование в SP List только собственными пунктами? - PullRequest
2 голосов
/ 24 февраля 2012

Я ищу возможность определить следующие параметры для списка Sharepoint.Я знаю, что это можно сделать из интерфейса, но как сделать, если из XML или кода?Могу ли я установить это где-нибудь в Определении списка или Экземпляре списка:

  • Участники должны иметь возможность создавать элементы, но не должны иметь возможность изменять или удалять элементы других пользователей (но редактировать собственные элементы).- да).

  • Утверждающие, администраторы сайтов и администраторы семейств сайтов должны иметь полный контроль над всеми элементами

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Триккс, это одно из решений, но ты заставил меня задуматься.Оказывается, мне нужна была WriteSecurity.Я добавил функцию приемника, и в FeatureActivated я установил SPList.WriteSecurity = 2 в этом списке.

Я нашел этот документ MSDN, http://msdn.microsoft.com/en-us/library/dd588628(v=office.11).aspxЯ полагаю, это можно установить в коде, но где?

Я добавил эту часть в schema.xml в ListDefinition, как и в документации, но это не работает.После развертывания и создания нового списка я перехожу в «Параметры списка» -> «Дополнительные параметры» и проверяю «Создание и редактирование доступа».Тем не менее, отмечен первый вариант, а не второй.

1 голос
/ 25 февраля 2012

Скорее всего, вы ищете свойство RoleAssignments, доступное для большинства областей.

Предположим, вы могли бы начать с чего-то подобного

private void DoStuff() 
{
    SPList list = web.Lists["MyList"];

    // Create custom role
    SPRoleDefinitionCollection roles = web.RoleDefinitions;
    SPRoleDefinition roleDefinition = roles["Contribute"];
    roleDefinition.BasePermissions = SPBasePermissions.AddListItems |
        SPBasePermissions.BrowseDirectories |
        SPBasePermissions.EditListItems |
        SPBasePermissions.DeleteListItems |
        SPBasePermissions.AddDelPrivateWebParts;
    roleDefinition.Update();

    //Creates a new role assignment for a group
    SPGroup myGroup = web.SiteGroups["Team Site Members"];
    SPRoleAssignmentCollection roleAssignments = web.RoleAssignments;

    // SPRoleAssignment accepts a SPPrincipal which can be a SPUser or SPGroup
    SPRoleAssignment roleAssignment = new SPRoleAssignment(myGroup);

    //add a new role definition to the bound role definitions for the role assignment
    SPRoleDefinitionBindingCollection roleDefBindings = roleAssignment.RoleDefinitionBindings;
    roleDefBindings.Add(roles["Contribute"]);

    //Add the new role assignment to the collection of role assignments for the site.
    roleAssignments.Add(roleAssignment);

    // Stop inheriting permissions
    list.BreakRoleInheritance(true);
    list.RoleAssignments.Add(roleAssignment);
    list.Update();
}
...