Hi,
Created custom fields, custom content type and custom aspx and then attached custom aspx page as template for custom content type then added content type a library.I am able add new item using conetnt type template without no issues.
Now I have created a event reciever(Sandboxed solution) to break inheritance and add new permissions for when item added, but it is not working and I am not able debug the code. The same code is working for a list.
Can anybody help me out to resolve this issue?
Any help would be greatly appreciated.
See my code:
/// <summary>
/// An item was added.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
try
{
if (properties.ListTitle == "TestEvent")
{
AddCustomPermissions(properties);
}
//base.ItemAdded(properties);
}
catch (Exception ex)
{
properties.Status =
SPEventReceiverStatus.CancelWithError;
properties.ErrorMessage = ex.Message;
properties.Cancel =
true;
}
}
private void AddCustomPermissions(SPItemEventProperties properties)
{
string url = "http://site/";
string offeringGroup = "OffOwners";
//string userLoginName = "domain\\Developer";
try
{
{
using (SPSite siteCollection = new SPSite(url))
{
using (SPWeb webSite = siteCollection.OpenWeb())
{
using (SPWeb webSiteRoot = siteCollection.RootWeb)
{
string listUrl = string.Format("{0}/Lists/TestEvent", webSite.Url);
SPList list = webSite.GetList(listUrl);
//SPListItem item = list.Items[0];
SPListItem item = webSite.Lists[properties.ListId].GetItemById(properties.ListItem.ID);
webSite.AllowUnsafeUpdates =
true;
if (item["Title"] != null)
{
RemoveAllPermissions(item);
AddPermissionsToDocOwners(webSite, item);
}
SPPrincipal offeringGroupUserGroup = FindUserOrSiteGroup(siteCollection, offeringGroup);
SPRoleDefinitionCollection offeringGroupRole = webSite.RoleDefinitions;
SPRoleAssignment offeringGroupRoleAssign = new SPRoleAssignment(offeringGroupUserGroup);
offeringGroupRoleAssign.RoleDefinitionBindings.Add(offeringGroupRole["Full Control"]);
item.RoleAssignments.Add(offeringGroupRoleAssign);
item.Update();
}
}
}
}
}
catch (Exception ex)
{
//
}
}
private void AddPermissionsToDocOwners(SPWeb webSite, SPListItem item)
{
SPFieldUserValueCollection docOwnersCol = (SPFieldUserValueCollection)item["Test User"];
foreach (SPFieldUserValue docOwnersColUsers in docOwnersCol)
{
SPUser docOwnerUsers = docOwnersColUsers.User;
SPRoleDefinitionCollection webroledefinitions = webSite.RoleDefinitions;
SPRoleAssignment roleassignment = new SPRoleAssignment(docOwnerUsers);
roleassignment.RoleDefinitionBindings.Add(webroledefinitions["Contribute"]);
item.RoleAssignments.Add(roleassignment);
item.Update();
}
}
private void RemoveAllPermissions(SPListItem item)
{
try
{
//The below function Breaks the role assignment inheritance for the list and gives the current list its own copy of the role assignments
item.BreakRoleInheritance(
true);
//Get the list of Role Assignments to list item and remove one by one.
SPRoleAssignmentCollection spRoleAssColn = item.RoleAssignments;
for (int i = spRoleAssColn.Count - 1; i >= 0; i--)
{
spRoleAssColn.Remove(i);
}
}
catch (Exception ex)
{
//
}
}
private SPPrincipal FindUserOrSiteGroup(SPSite site, string userOrGroup)
{
SPPrincipal myUser = null;
if (SPUtility.IsLoginValid(site, userOrGroup))
{
myUser = site.RootWeb.EnsureUser(userOrGroup);
}
else
{
foreach (SPGroup grp in site.RootWeb.SiteGroups)
{
if (grp.Name.ToUpper(System.Globalization.CultureInfo.InvariantCulture) == userOrGroup.ToUpper(System.Globalization.CultureInfo.InvariantCulture))
{
myUser = grp;
break;
}
}
}
return myUser;
}
/// <summary>
/// An item was updated.
/// </summary>
public override void ItemUpdated(SPItemEventProperties properties)
{
base.ItemUpdated(properties);
}
}
}AA.