protected void btnSend_Click(object sender, EventArgs e) { // Check 'Modify' permission if (!CheckPermissions("cms.eventmanager", "Modify")) { return; } txtSenderName.Text = txtSenderName.Text.Trim(); txtSenderEmail.Text = txtSenderEmail.Text.Trim(); txtSubject.Text = txtSubject.Text.Trim(); // Validate the fields string errorMessage = new Validator().NotEmpty(txtSenderName.Text, GetString("Events_SendEmail.EmptySenderName")) .NotEmpty(txtSenderEmail.Text, GetString("Events_SendEmail.EmptySenderEmail")) .NotEmpty(txtSubject.Text, GetString("Events_SendEmail.EmptyEmailSubject")) .IsEmail(txtSenderEmail.Text, GetString("Events_SendEmail.InvalidEmailFormat")) .Result; if (!String.IsNullOrEmpty(errorMessage)) { lblError.Visible = true; lblError.Text = errorMessage; return; } string subject = txtSubject.Text; string emailBody = htmlEmail.ResolvedValue; // Get event node data TreeProvider mTree = new TreeProvider(); TreeNode node = mTree.SelectSingleNode(EventID); if (node != null && String.Equals(node.NodeClassName, "cms.bookingevent", StringComparison.InvariantCultureIgnoreCase)) { // Initialize macro resolver MacroResolver resolver = new MacroResolver(); resolver.KeepUnresolvedMacros = true; resolver.SourceData = new object[] { node }; // Resolve e-mail body and subject macros and make links absolute emailBody = resolver.ResolveMacros(emailBody); emailBody = URLHelper.MakeLinksAbsolute(emailBody); subject = TextHelper.LimitLength(resolver.ResolveMacros(subject), 450); // EventSendEmail manages sending e-mails to all attendees EventSendEmail ese = new EventSendEmail(EventID, CMSContext.CurrentSiteName, subject, emailBody, txtSenderName.Text.Trim(), txtSenderEmail.Text.Trim()); lblInfo.Visible = true; lblInfo.Text = GetString("Events_SendEmail.EmailSent"); } }
/// <summary> /// Sends e-mail to all attendees. /// </summary> protected void Send() { // Check 'Modify' permission if (!CheckPermissions("cms.eventmanager", "Modify")) { return; } txtSenderName.Text = txtSenderName.Text.Trim(); txtSenderEmail.Text = txtSenderEmail.Text.Trim(); txtSubject.Text = txtSubject.Text.Trim(); // Validate the fields string errorMessage = new Validator().NotEmpty(txtSenderName.Text, GetString("Events_SendEmail.EmptySenderName")) .NotEmpty(txtSenderEmail.Text, GetString("Events_SendEmail.EmptySenderEmail")) .NotEmpty(txtSubject.Text, GetString("Events_SendEmail.EmptyEmailSubject")) .IsEmail(txtSenderEmail.Text, GetString("Events_SendEmail.InvalidEmailFormat")) .Result; if (!String.IsNullOrEmpty(errorMessage)) { ShowError(errorMessage); return; } string subject = txtSubject.Text; string emailBody = htmlEmail.ResolvedValue; // Get event node data TreeProvider mTree = new TreeProvider(); DocTreeNode node = mTree.SelectSingleNode(EventID); if (node != null && CMSString.Equals(node.NodeClassName, "cms.bookingevent", true)) { // Initialize macro resolver MacroResolver resolver = MacroResolver.GetInstance(); resolver.Settings.KeepUnresolvedMacros = true; resolver.SetAnonymousSourceData(node); // Add named source data resolver.SetNamedSourceData("Event", node); // Event date string macro DateTime eventDate = ValidationHelper.GetDateTime(node.GetValue("EventDate"), DateTimeHelper.ZERO_TIME); DateTime eventEndDate = ValidationHelper.GetDateTime(node.GetValue("EventEndDate"), DateTimeHelper.ZERO_TIME); bool isAllDay = ValidationHelper.GetBoolean(node.GetValue("EventAllDay"), false); string[,] macro = new string[1, 2]; macro[0, 0] = "eventdatestring"; macro[0, 1] = EventProvider.GetEventDateString(eventDate, eventEndDate, isAllDay, TimeZoneHelper.GetTimeZoneInfo(SiteContext.CurrentSite), SiteContext.CurrentSiteName); resolver.SetNamedSourceData(macro); // Resolve e-mail body and subject macros and make links absolute emailBody = resolver.ResolveMacros(emailBody); emailBody = URLHelper.MakeLinksAbsolute(emailBody); subject = TextHelper.LimitLength(resolver.ResolveMacros(subject), 450); // EventSendEmail manages sending e-mails to all attendees EventSendEmail ese = new EventSendEmail(EventID, SiteContext.CurrentSiteName, subject, emailBody, txtSenderName.Text.Trim(), txtSenderEmail.Text.Trim()); ShowConfirmation(GetString("Events_SendEmail.EmailSent")); } }
/// <summary> /// Sends e-mail to all attendees. /// </summary> protected void Send() { // Check 'Modify' permission if (!CheckPermissions("cms.eventmanager", "Modify")) { return; } txtSenderName.Text = txtSenderName.Text.Trim(); txtSenderEmail.Text = txtSenderEmail.Text.Trim(); txtSubject.Text = txtSubject.Text.Trim(); // Validate the fields string errorMessage = new Validator().NotEmpty(txtSenderName.Text, GetString("Events_SendEmail.EmptySenderName")) .NotEmpty(txtSenderEmail.Text, GetString("Events_SendEmail.EmptySenderEmail")) .NotEmpty(txtSubject.Text, GetString("Events_SendEmail.EmptyEmailSubject")) .IsEmail(txtSenderEmail.Text, GetString("Events_SendEmail.InvalidEmailFormat")) .Result; if (!String.IsNullOrEmpty(errorMessage)) { ShowError(errorMessage); return; } string subject = txtSubject.Text; string emailBody = htmlEmail.ResolvedValue; // Get event node data TreeProvider mTree = new TreeProvider(); DocTreeNode node = mTree.SelectSingleNode(EventID); if (node != null && CMSString.Equals(node.NodeClassName, "cms.bookingevent", true)) { // Initialize macro resolver ContextResolver resolver = ContextResolver.GetInstance(); resolver.KeepUnresolvedMacros = true; resolver.SourceData = new object[] { node }; // Add named source data resolver.SetNamedSourceData("Event", node); // Event date string macro DateTime eventDate = ValidationHelper.GetDateTime(node.GetValue("EventDate"), DateTimeHelper.ZERO_TIME); DateTime eventEndDate = ValidationHelper.GetDateTime(node.GetValue("EventEndDate"), DateTimeHelper.ZERO_TIME); bool isAllDay = ValidationHelper.GetBoolean(node.GetValue("EventAllDay"), false); string[,] macro = new string[1, 2]; macro[0, 0] = "eventdatestring"; macro[0, 1] = EventProvider.GetEventDateString(eventDate, eventEndDate, isAllDay, TimeZoneHelper.GetSiteTimeZoneInfo(CMSContext.CurrentSite), CMSContext.CurrentSiteName); resolver.SourceParameters = macro; // Resolve e-mail body and subject macros and make links absolute emailBody = resolver.ResolveMacros(emailBody); emailBody = URLHelper.MakeLinksAbsolute(emailBody); subject = TextHelper.LimitLength(resolver.ResolveMacros(subject), 450); // EventSendEmail manages sending e-mails to all attendees EventSendEmail ese = new EventSendEmail(EventID, CMSContext.CurrentSiteName, subject, emailBody, txtSenderName.Text.Trim(), txtSenderEmail.Text.Trim()); ShowConfirmation(GetString("Events_SendEmail.EmailSent")); } }