How to create custom Submit posting action handler to send email for MCMS 2002
Recently a customer came up with an issue and wanted to create a custom submit action button handler in CMS 2002 and send email to the editor/moderator. The requirement was that the user should be able to select which editor or moderator the email needs to be sent. The customer was following the article available at https://msdn2.microsoft.com/en-us/library/ms964282.aspx
But the code given in the article does not do Posting.Submit() nor does it handles the PostBack events in JavaScript. It just uses the redirect which do not solve our purpose. Researched a little and dig deeper into the MCMS belly and created the following code to achieve customer’s requirements.
Just compile this code into a Control and replace the CMSConsole:SubmitAction (Microsoft.ContentManagement.WebControls.ConsoleControls.SubmitAction) from the ConsoleContext.ascx with the below given SubmitAction control and you are all set to go !
1: using System;
2: using System.Data;
3: using System.Configuration;
4: using System.Web.UI;
5: using System.Web.UI.WebControls;
6: using System.Web.Mail;
7: using Microsoft.ContentManagement.Publishing;
8: using Microsoft.ContentManagement.WebControls;
9: using Microsoft.ContentManagement.WebControls.ConsoleControls;
10:
11: namespace MySubmitEmail
12: {
13: /// <summary>
14: /// Summary description for MSSubmitEmail
15: /// </summary>
16: public class MSSubmitEmail : SubmitAction
17: {
18: protected override void PerformActionBehavior()
19: {
20:
21: string sEmail = this.Page.Request.QueryString.Get("email").ToString();
22:
23: if(CmsHttpContext.Current.Mode != PublishingMode.Update)
24: {
25: if(this.Page.Request.QueryString.Get("email") == null)
26: {
27: this.Page.Response.Redirect(CmsHttpContext.Current.Posting.UrlModeUpdate + "&email=someid@email.local",true);
28: }
29: else
30: {
31: this.Page.Response.Redirect(CmsHttpContext.Current.Posting.UrlModeUpdate,true);
32: }
33: }
34:
35: CmsHttpContext.Current.Posting.Submit();
36: CmsHttpContext.Current.CommitAll();
37: base.PerformActionBehavior();
38:
39: this.Page.Response.Redirect(CmsHttpContext.Current.Posting.UrlModeUnpublished,true);
40: }
41:
42: public override string Text
43: {
44: get
45: {
46: return "Submit with email";
47: }
48: set
49: {
50: base.Text = value;
51: }
52: }
53:
54: public override string ActionJavascript
55: {
56: get
57: {
58: string sJavaScript;
59: string sURL = "";
60:
61: sJavaScript = "var sDLGResult;"
62: + "sDLGResult = window.showModalDialog"
63: + "('/select.html'," + "'','scroll:no;dialogHeight:250px;"
64: + "dialogWidth:500px;edge:sunken;"
65: + "center:Yes;help:No;resizable:No;"
66: + "status:No;');"
67: + "if (sDLGResult!='Cancelled')"
68: + "{ alert(sDLGResult); ";
69:
70: sURL = this.UrlPostback;
71:
72: if(this.Page.Request.QueryString.Get("email") == null)
73: {
74: if(! (this.UrlPostback.ToString().IndexOf("&email=") > 0) )
75: sURL += "&email=";
76:
77: sJavaScript += "CMS_preparePostbackUrl('" + sURL + "' + sDLGResult);" + this.Page.GetPostBackEventReference(this, "");
78: }
79: else
80: {
81: sJavaScript += "CMS_preparePostbackUrl('" + sURL + "');" + this.Page.GetPostBackEventReference(this, "");
82: }
83:
84: //We dont need to do the navigate, we need a postback
85: //sJavaScript += "window.navigate(window.location + '&chan=' + sDLGResult);"
86:
87: sJavaScript += "}";
88: return sJavaScript;
89: }
90: }
91: }
92: }
Happy Coding…
Comments
- Anonymous
May 29, 2009
PingBack from http://asp-net-hosting.simplynetdev.com/how-to-create-custom-submit-posting-action-handler-to-send-email-for-mcms-2002/