|
||
The workflow handler allows you to handle the following events:
•OnBeforeCheckOut - before document is checked out
•OnAfterCheckOut - after document is checked out
•OnBeforeCheckIn - before document is checked in
•OnAfterCheckIn - after document is checked in
•OnBeforeApprove - before document is approved
•OnAfterApprove - after document is approved
•OnBeforeReject - before document is rejected
•OnAfterReject - after document is rejected
•OnBeforePublish - before document is published
•OnAfterPublish - after document is published
When the document is published, the order of the events is following:
1.OnBeforeApprove
2.OnBeforePublish
3.OnAfterPublish
4.OnAfterApprove
The following example shows how to send an e-mail with news document content when it's published:
1.Open the CustomWorkflowHandler class and put the following code at the beginning of the file. It adds the reference to the namespaces we will use to handle the event:
[C#]
using CMS.DocumentEngine; using CMS.GlobalHelper; using CMS.EmailEngine; using CMS.WorkflowEngine; |
2.Put the following code inside the OnAfterPublish method:
[C#]
// type the document as TreeNode TreeNode newsDoc = (TreeNode)treeNodeObj;
// handle the event only for news items if (newsDoc.NodeClassName.ToLower() == "cms.news") { // get content of the inserted news item and send it by e-mail EmailMessage email = new EmailMessage(); email.From = "admin@domain.com"; email.Recipients = "admin@domain.com"; email.Subject = ValidationHelper.GetString(newsDoc.GetValue("NewsTitle"), ""); email.Body = ValidationHelper.GetString(newsDoc.GetValue("NewsSummary"), ""); EmailSender.SendEmail(email); } |
3.Set the From and Recipients e-mail addresses to you e-mail address.
4.Compile and run the project.
5.Configure your project so that it uses workflow for news items and create and publish a news item. You should receive the content of the news item by e-mail.
If you need to get the name of the workflow step (for example in the OnAfterApprove event), you need to use code like this:
[C#]
CMS.WorkflowEngine.WorkflowStepInfo previousStep = (CMS.WorkflowEngine.WorkflowStepInfo) previousStepObj; string stepCodeName = previousStep.StepName; |