using System; using System.Data; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Linq; using CMS.CMSHelper; using CMS.FormControls; using CMS.GlobalHelper; using CMS.UIControls; using CMS.WorkflowEngine; using CMS.SettingsProvider; using CMS.EmailEngine; public partial class CMSModules_Workflows_Controls_UI_WorkflowStep_Emails : CMSUserControl { #region "Variables" private WorkflowStepInfo mWorkflowStep = null; private WorkflowInfo mWorkflow = null; #endregion #region "Properties" /// /// Workflow step ID /// public int WorkflowStepID { get; set; } /// /// Workflow step /// public WorkflowStepInfo WorkflowStep { get { if (mWorkflowStep == null) { mWorkflowStep = WorkflowStepInfoProvider.GetWorkflowStepInfo(WorkflowStepID); } return mWorkflowStep; } } /// /// Workflow /// public WorkflowInfo Workflow { get { if (mWorkflow == null) { mWorkflow = WorkflowInfoProvider.GetWorkflowInfo(WorkflowStep.StepWorkflowID); } return mWorkflow; } } /// /// Indicates if the control should perform the operations. /// public override bool StopProcessing { get { return base.StopProcessing; } set { base.StopProcessing = value; ucApprove.StopProcessing = value; ucReadyApproval.StopProcessing = value; ucReject.StopProcessing = value; } } /// /// Indicates if the control is used on the live site. /// public override bool IsLiveSite { get { return base.IsLiveSite; } set { base.IsLiveSite = value; ucApprove.IsLiveSite = value; ucReadyApproval.IsLiveSite = value; ucReject.IsLiveSite = value; } } #endregion #region "Page events" protected override void OnInit(EventArgs e) { base.OnInit(e); // Register save event ComponentEvents.RequestEvents.RegisterForEvent(ComponentEvents.SAVE, (s, args) => { SaveData(); }); } protected void Page_Load(object sender, EventArgs e) { if (WorkflowStepID <= 0) { StopProcessing = true; return; } ucApprove.TemplateType = EmailTemplateMacros.EmailType.WorkflowEmail; ucReadyApproval.TemplateType = EmailTemplateMacros.EmailType.WorkflowEmail; ucReject.TemplateType = EmailTemplateMacros.EmailType.WorkflowEmail; pnlSettings.GroupingText = GetString("general.general"); pnlTemplates.GroupingText = GetString("workflow.templates"); chkEmails.NotSetChoice.Text = chkReadyApproval.NotSetChoice.Text = chkApprove.NotSetChoice.Text = chkReject.NotSetChoice.Text = GetString("general.workflowsettings") + " (##DEFAULT##)"; chkEmails.SetDefaultValue(Workflow.SendEmails(CMSContext.CurrentSiteName, WorkflowEmailTypeEnum.Unknown)); chkEmails.AutoPostBack = true; chkEmails.CheckedChanged += SendNotification_Changed; chkApprove.SetDefaultValue(Workflow.SendEmails(CMSContext.CurrentSiteName, WorkflowEmailTypeEnum.Approved)); chkApprove.AutoPostBack = true; chkApprove.CheckedChanged += SendApproveNotification_Changed; chkReadyApproval.SetDefaultValue(Workflow.SendEmails(CMSContext.CurrentSiteName, WorkflowEmailTypeEnum.ReadyForApproval)); chkReadyApproval.AutoPostBack = true; chkReadyApproval.CheckedChanged += SendReadyApprovalNotification_Changed; chkReject.SetDefaultValue(Workflow.SendEmails(CMSContext.CurrentSiteName, WorkflowEmailTypeEnum.Rejected)); chkReject.AutoPostBack = true; chkReject.CheckedChanged += SendRejectNotification_Changed; ucApprove.CurrentSelector.TextBoxSelect.WatermarkText = Workflow.GetEmailTemplateName(WorkflowEmailTypeEnum.Approved); ucReadyApproval.CurrentSelector.TextBoxSelect.WatermarkText = Workflow.GetEmailTemplateName(WorkflowEmailTypeEnum.ReadyForApproval); ucReject.CurrentSelector.TextBoxSelect.WatermarkText = Workflow.GetEmailTemplateName(WorkflowEmailTypeEnum.Rejected); if (!RequestHelper.IsPostBack()) { chkEmails.InitFromThreeStateValue(WorkflowStep, "StepSendEmails"); chkApprove.InitFromThreeStateValue(WorkflowStep, "StepSendApproveEmails"); chkReadyApproval.InitFromThreeStateValue(WorkflowStep, "StepSendReadyForApprovalEmails"); chkReject.InitFromThreeStateValue(WorkflowStep, "StepSendRejectEmails"); ucApprove.Value = WorkflowStep.StepApprovedTemplateName; ucReadyApproval.Value = WorkflowStep.StepReadyForApprovalTemplateName; ucReject.Value = WorkflowStep.StepRejectedTemplateName; pnlTemplates.Enabled = ValidationHelper.GetBoolean(chkEmails.GetActualValue(), true); ucReadyApproval.Enabled = ValidationHelper.GetBoolean(chkReadyApproval.GetActualValue(), true); ucApprove.Enabled = ValidationHelper.GetBoolean(chkApprove.GetActualValue(), true); ucReject.Enabled = ValidationHelper.GetBoolean(chkReject.GetActualValue(), true); } bool documents = Workflow.IsDocumentWorkflow; plcApprove.Visible = documents; } protected void SendNotification_Changed(object sender, EventArgs e) { pnlTemplates.Enabled = ValidationHelper.GetBoolean(chkEmails.GetActualValue(), true); } protected void SendReadyApprovalNotification_Changed(object sender, EventArgs e) { ucReadyApproval.Enabled = ValidationHelper.GetBoolean(chkReadyApproval.GetActualValue(), true); } protected void SendApproveNotification_Changed(object sender, EventArgs e) { ucApprove.Enabled = ValidationHelper.GetBoolean(chkApprove.GetActualValue(), true); } protected void SendRejectNotification_Changed(object sender, EventArgs e) { ucReject.Enabled = ValidationHelper.GetBoolean(chkReject.GetActualValue(), true); } /// /// Saves data /// public void SaveData() { if (WorkflowStep != null) { chkEmails.SetThreeStateValue(WorkflowStep, "StepSendEmails"); chkApprove.SetThreeStateValue(WorkflowStep, "StepSendApproveEmails"); chkReadyApproval.SetThreeStateValue(WorkflowStep, "StepSendReadyForApprovalEmails"); chkReject.SetThreeStateValue(WorkflowStep, "StepSendRejectEmails"); WorkflowStep.StepApprovedTemplateName = ValidationHelper.GetString(ucApprove.Value, null); WorkflowStep.StepReadyForApprovalTemplateName = ValidationHelper.GetString(ucReadyApproval.Value, null); WorkflowStep.StepRejectedTemplateName = ValidationHelper.GetString(ucReject.Value, null); // Save workflow info WorkflowStepInfoProvider.SetWorkflowStepInfo(WorkflowStep); ShowChangesSaved(); } } #endregion }