1: private readonly HttpContext _current;
2:
3: public ItemAddingRedirectHandler()
4: {
5: _current = HttpContext.Current;
6: }
7:
8: /// <summary>
9: /// Redirects the user to the edit page
10: /// </summary>
11: /// <param name="properties">Contains list event properties</param>
12: [SharePointPermission(SecurityAction.LinkDemand, ObjectModel = true)]
13: public override void ItemAdding(SPItemEventProperties properties)
14: {
15: var eventHandlerClassName = this.GetType().FullName;
16: Trace.TraceInformation("[TIES]: Entering event handler " + eventHandlerClassName);
17: try
18: {
19: EventFiringEnabled = false;
20:
21: // get the list which item to be added
22: var objsite = new SPSite(properties.SiteId);
23: var objweb = objsite.OpenWeb(properties.RelativeWebUrl);
24: var objlist = objweb.Lists[properties.ListId];
25:
26: var itemToAdd = objlist.Items.Add();
27: //get item values from event receiver properties
28: foreach (SPField field in properties.List.Fields)
29: {
30: var val = properties.AfterProperties[field.InternalName];
31: if (val != null && val.ToString() != string.Empty)
32: itemToAdd[field.Id] = val;
33: }
34:
35: //add item to list
36: itemToAdd.Update();
37: EventFiringEnabled = true;
38:
39: //redirect it to new destination (default Edit Form)
40: var urlParams = "?Id=" + itemToAdd.ID;
41: var editFormUrl = objlist.DefaultEditFormUrl + urlParams;
42: Trace.TraceInformation("[TIES]: Leaving event handler " + eventHandlerClassName);
43: SPUtility.Redirect(editFormUrl, SPRedirectFlags.Trusted, _current);
44:
45: }
46: catch (ThreadAbortException tex)//Catch, this will happen as the thread is aborted
47: {
48: Trace.TraceInformation("[TIES]: Error in event handler " + eventHandlerClassName + tex.Message + tex.StackTrace);
49: }
50: catch (Exception ex)
51: {
52: Trace.TraceInformation("[TIES]: Error in event handler " + eventHandlerClassName + ex.Message + ex.StackTrace);
53: properties.Cancel = true;
54: properties.ErrorMessage = "Error in redirect event";
55: }
56: finally
57: {
58: EventFiringEnabled = true;
59: }
60: }