/// <summary> /// Creates static newsletter. Called when the "Create newsletter" button is pressed. /// </summary> private bool CreateStaticNewsletter() { EmailTemplateInfo subscriptionTemplate = EmailTemplateInfoProvider.GetEmailTemplateInfo("MyNewSubscriptionTemplate", SiteContext.CurrentSiteID); EmailTemplateInfo unsubscriptionTemplate = EmailTemplateInfoProvider.GetEmailTemplateInfo("MyNewUnsubscriptionTemplate", SiteContext.CurrentSiteID); EmailTemplateInfo myNewIssueTemplate = EmailTemplateInfoProvider.GetEmailTemplateInfo("MyNewIssueTemplate", SiteContext.CurrentSiteID); if ((subscriptionTemplate != null) && (unsubscriptionTemplate != null) && (myNewIssueTemplate != null)) { // Create new static newsletter object NewsletterInfo newNewsletter = new NewsletterInfo(); // Set the properties newNewsletter.NewsletterDisplayName = "My new static newsletter"; newNewsletter.NewsletterName = "MyNewStaticNewsletter"; newNewsletter.NewsletterType = NewsletterType.TemplateBased; newNewsletter.NewsletterSubscriptionTemplateID = subscriptionTemplate.TemplateID; newNewsletter.NewsletterUnsubscriptionTemplateID = unsubscriptionTemplate.TemplateID; newNewsletter.NewsletterTemplateID = myNewIssueTemplate.TemplateID; newNewsletter.NewsletterSenderName = "Sender name"; newNewsletter.NewsletterSenderEmail = "*****@*****.**"; newNewsletter.NewsletterSiteID = SiteContext.CurrentSiteID; // Save the static newsletter NewsletterInfoProvider.SetNewsletterInfo(newNewsletter); return(true); } return(false); }
/// <summary> /// Creates dynamic newsletter. Called when the "Create newsletter" button is pressed. /// </summary> private bool CreateDynamicNewsletter() { EmailTemplateInfo subscriptionTemplate = EmailTemplateInfoProvider.GetEmailTemplateInfo("MyNewSubscriptionTemplate", SiteContext.CurrentSiteID); EmailTemplateInfo unsubscriptionTemplate = EmailTemplateInfoProvider.GetEmailTemplateInfo("MyNewUnsubscriptionTemplate", SiteContext.CurrentSiteID); if ((subscriptionTemplate != null) && (unsubscriptionTemplate != null)) { // Create new dynamic newsletter object NewsletterInfo newNewsletter = new NewsletterInfo(); // Set the properties newNewsletter.NewsletterDisplayName = "My new dynamic newsletter"; newNewsletter.NewsletterName = "MyNewDynamicNewsletter"; newNewsletter.NewsletterType = NewsletterType.Dynamic; newNewsletter.NewsletterSubscriptionTemplateID = subscriptionTemplate.TemplateID; newNewsletter.NewsletterUnsubscriptionTemplateID = unsubscriptionTemplate.TemplateID; newNewsletter.NewsletterSenderName = "Sender name"; newNewsletter.NewsletterSenderEmail = "*****@*****.**"; newNewsletter.NewsletterDynamicURL = "http://www.google.com"; newNewsletter.NewsletterDynamicSubject = "My new dynamic issue"; newNewsletter.NewsletterSiteID = SiteContext.CurrentSiteID; // Save the dynamic newsletter NewsletterInfoProvider.SetNewsletterInfo(newNewsletter); return(true); } return(false); }
/// <summary> /// Create schedule task. /// </summary> private void CreateTask() { try { var editedObject = TypedEditedObject; TaskInfo task = new TaskInfo(); task.TaskAssemblyName = "CMS.Newsletters"; task.TaskClass = "CMS.Newsletters.DynamicNewsletterSender"; task.TaskDisplayName = GetString("DynamicNewsletter.TaskName") + editedObject.NewsletterDisplayName; task.TaskEnabled = true; task.TaskInterval = ScheduleInterval.ScheduleInterval; task.TaskLastResult = string.Empty; task.TaskName = "DynamicNewsletter." + ValidationHelper.GetCodeName(editedObject.NewsletterName, "_"); task.TaskSiteID = SiteContext.CurrentSiteID; task.TaskNextRunTime = SchedulingHelper.GetNextTime(task.TaskInterval, new DateTime(), new DateTime()); task.TaskData = editedObject.NewsletterGUID.ToString(); // Set task for processing in external service task.TaskAllowExternalService = true; task.TaskUseExternalService = (SchedulingHelper.UseExternalService && NewsletterHelper.UseExternalServiceForDynamicNewsletters(SiteContext.CurrentSiteName)); task.TaskType = ScheduledTaskTypeEnum.System; TaskInfoProvider.SetTaskInfo(task); editedObject.NewsletterDynamicScheduledTaskID = task.TaskID; NewsletterInfoProvider.SetNewsletterInfo(editedObject); Redirect(); } catch (Exception ex) { ShowError(GetString(ex.Message)); } }
/// <summary> /// Gets and bulk updates dynamic newsletters. Called when the "Get and bulk update newsletters" button is pressed. /// Expects the CreateDynamicNewsletter method to be run first. /// </summary> private bool GetAndBulkUpdateDynamicNewsletters() { // Prepare the parameters string where = "NewsletterName LIKE N'MyNewDynamicNewsletter%'"; // Get the data DataSet newsletters = NewsletterInfoProvider.GetNewsletters(where, null, 0, null); if (!DataHelper.DataSourceIsEmpty(newsletters)) { // Loop through the individual items foreach (DataRow newsletterDr in newsletters.Tables[0].Rows) { // Create object from DataRow NewsletterInfo modifyNewsletter = new NewsletterInfo(newsletterDr); // Update the properties modifyNewsletter.NewsletterDisplayName = modifyNewsletter.NewsletterDisplayName.ToUpper(); // Save the changes NewsletterInfoProvider.SetNewsletterInfo(modifyNewsletter); } return(true); } return(false); }
/// <summary> /// Gets and updates dynamic newsletter. Called when the "Get and update newsletter" button is pressed. /// Expects the CreateDynamicNewsletter method to be run first. /// </summary> private bool GetAndUpdateDynamicNewsletter() { // Get the dynamic newsletter NewsletterInfo updateNewsletter = NewsletterInfoProvider.GetNewsletterInfo("MyNewDynamicNewsletter", SiteContext.CurrentSiteID); if (updateNewsletter != null) { // Update the properties updateNewsletter.NewsletterDisplayName = updateNewsletter.NewsletterDisplayName.ToLower(); // Save the changes NewsletterInfoProvider.SetNewsletterInfo(updateNewsletter); return(true); } return(false); }
public void SetUp() { mSite = CreateSiteInfo(); SiteInfoProvider.SetSiteInfo(mSite); var emailTemplate = CreateEmailTemplateInfo(mSite.SiteID); EmailTemplateInfoProvider.SetEmailTemplateInfo(emailTemplate); mNewsletter = CreateNewsletterInfo(mSite.SiteID, emailTemplate.TemplateID); NewsletterInfoProvider.SetNewsletterInfo(mNewsletter); mNewsletterSubscriptionSettings = CreateNewsletterSubscriptionSettings(false); mNewsletterSubscriptionService = new NewsletterSubscriptionService(); Service.Use <IActivityLogService, ActivityLogServiceInMemoryFake>(); SiteContext.CurrentSite = mSite; }
/// <summary> /// Create schedule task. /// </summary> private void CreateTask() { try { var newsletter = TypedEditedObject; var task = NewsletterTasksManager.CreateOrUpdateDynamicNewsletterTask(newsletter, ScheduleInterval.TaskInterval); TaskInfoProvider.SetTaskInfo(task); newsletter.NewsletterDynamicScheduledTaskID = task.TaskID; NewsletterInfoProvider.SetNewsletterInfo(newsletter); Redirect(); } catch (Exception ex) { ShowError(GetString(ex.Message)); } }
/// <summary> /// Gets and bulk updates dynamic newsletters. Called when the "Get and bulk update newsletters" button is pressed. /// Expects the CreateDynamicNewsletter method to be run first. /// </summary> private bool GetAndBulkUpdateDynamicNewsletters() { // Get the data var newsletters = NewsletterInfoProvider.GetNewsletters().Where("NewsletterName", QueryOperator.Like, "MyNewDynamicNewsletter%"); if (newsletters.Any()) { // Loop through the individual items foreach (var newsletter in newsletters) { // Update the properties newsletter.NewsletterDisplayName = newsletter.NewsletterDisplayName.ToUpper(); // Save the changes NewsletterInfoProvider.SetNewsletterInfo(newsletter); } return(true); } return(false); }
/// <summary> /// Sets data to database. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { // Check 'configure' permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "configure")) { RedirectToCMSDeskAccessDenied("cms.newsletter", "configure"); } // Validate base inputs (newsletter display name, code name, sender name, sender e-mail) string errorMessage = new Validator().NotEmpty(txtNewsletterDisplayName.Text.Trim(), GetString("general.requiresdisplayname")).NotEmpty(txtNewsletterName.Text.Trim(), GetString("Newsletter_Edit.ErrorEmptyName")).NotEmpty(txtNewsletterSenderName.Text.Trim(), GetString("Newsletter_Edit.ErrorEmptySenderName")).NotEmpty(txtNewsletterSenderEmail.Text.Trim(), GetString("Newsletter_Edit.ErrorEmptySenderEmail")).IsEmail(txtNewsletterSenderEmail.Text.Trim(), GetString("Newsletter_Edit.ErrorEmailFormat")).IsCodeName(txtNewsletterName.Text.Trim(), GetString("general.invalidcodename")).Result; if (String.IsNullOrEmpty(errorMessage)) { if (String.IsNullOrEmpty((string)subscriptionTemplate.Value)) { // No subscription template selected lblSubscriptionError.Visible = true; return; } if (String.IsNullOrEmpty((string)unsubscriptionTemplate.Value)) { // No unsubscription template selected lblUnsubscriptionError.Visible = true; return; } if ((radTemplateBased.Checked) && (String.IsNullOrEmpty((string)issueTemplate.Value))) { // No issue template selected for template based newsletter lblIssueError.Visible = true; return; } if ((radDynamic.Checked) && (String.IsNullOrEmpty(txtNewsletterDynamicURL.Text.Trim()))) { // Dynamic URL cannot be empty ShowError(GetString("menuitem_edit.errorpageurlempty")); return; } if ((radDynamic.Checked) && (chkSchedule.Checked) && (!ScheduleInterval.CheckOneDayMinimum())) { // Problem occurred while setting schedule interval for dynamic newsletter ShowError(GetString("Newsletter_Edit.NoDaySelected")); return; } if ((radDynamic.Checked) && (chkSchedule.Checked) && (SchedulingHelper.DecodeInterval(ScheduleInterval.ScheduleInterval).StartTime == DateTime.MinValue)) { ShowError(GetString("Newsletter.IncorrectDate")); return; } // Newsletter code name must to be unique per site... NewsletterInfo newsletterObj = NewsletterInfoProvider.GetNewsletterInfo(txtNewsletterName.Text.Trim(), CMSContext.CurrentSiteID); // If newsletter code name is unique... if (newsletterObj == null) { // Create new item -> insert newsletterObj = new NewsletterInfo(); newsletterObj.NewsletterDisplayName = txtNewsletterDisplayName.Text.Trim(); newsletterObj.NewsletterName = txtNewsletterName.Text.Trim(); int selectedValue = ValidationHelper.GetInteger(subscriptionTemplate.Value, 0); if (selectedValue != 0) { newsletterObj.NewsletterSubscriptionTemplateID = selectedValue; } else { ShowError(GetString("Newsletter_Edit.NoSubscriptionTemplateSelected")); return; } selectedValue = ValidationHelper.GetInteger(unsubscriptionTemplate.Value, 0); if (selectedValue != 0) { newsletterObj.NewsletterUnsubscriptionTemplateID = selectedValue; } else { ShowError(GetString("Newsletter_Edit.NoUnsubscriptionTemplateSelected")); return; } newsletterObj.NewsletterSenderName = txtNewsletterSenderName.Text.Trim(); newsletterObj.NewsletterSenderEmail = txtNewsletterSenderEmail.Text.Trim(); if (radDynamic.Checked) { newsletterObj.NewsletterDynamicURL = txtNewsletterDynamicURL.Text.Trim(); newsletterObj.NewsletterType = NewsletterType.Dynamic; } else { selectedValue = ValidationHelper.GetInteger(issueTemplate.Value, 0); if (selectedValue != 0) { newsletterObj.NewsletterTemplateID = selectedValue; } else { ShowError(GetString("Newsletter_Edit.NoEmailTemplateSelected")); return; } newsletterObj.NewsletterType = NewsletterType.TemplateBased; } newsletterObj.NewsletterSiteID = CMSContext.CurrentSiteID; newsletterObj.NewsletterGUID = Guid.NewGuid(); newsletterObj.NewsletterLogActivity = true; newsletterObj.NewsletterEnableResending = true; try { // Create new newsletter NewsletterInfoProvider.SetNewsletterInfo(newsletterObj); if (radDynamic.Checked) { if (chkSchedule.Checked) { // Create new task to schedule the dynamic newsletter TaskInfo task = new TaskInfo(); task.TaskAssemblyName = "CMS.Newsletter"; task.TaskClass = "CMS.Newsletter.DynamicNewsletterSender"; task.TaskDisplayName = GetString("DynamicNewsletter.TaskName") + newsletterObj.NewsletterDisplayName; task.TaskEnabled = true; task.TaskInterval = ScheduleInterval.ScheduleInterval; task.TaskLastResult = string.Empty; task.TaskName = "DynamicNewsletter." + ValidationHelper.GetCodeName(newsletterObj.NewsletterName, "_"); task.TaskSiteID = CMSContext.CurrentSiteID; task.TaskNextRunTime = SchedulingHelper.GetNextTime(task.TaskInterval, new DateTime(), new DateTime()); task.TaskData = newsletterObj.NewsletterGUID.ToString(); // Set task for processing in external service task.TaskAllowExternalService = true; task.TaskUseExternalService = (SchedulingHelper.UseExternalService && NewsletterHelper.UseExternalServiceForDynamicNewsletters(CMSContext.CurrentSiteName)); task.TaskType = ScheduledTaskTypeEnum.System; TaskInfoProvider.SetTaskInfo(task); newsletterObj.NewsletterDynamicScheduledTaskID = task.TaskID; NewsletterInfoProvider.SetNewsletterInfo(newsletterObj); } } URLHelper.Redirect("Newsletter_Frameset.aspx?newsletterid=" + ValidationHelper.GetString(newsletterObj.NewsletterID, null) + "&saved=1"); } catch (Exception ex) { ShowError(GetString(ex.Message)); } } else { ShowError(GetString("Newsletter_Edit.NewsletterNameExists")); } } else { ShowError(errorMessage); } }
/// <summary> /// Saves configuration changes. /// </summary> protected void SaveData() { // Check "configure" permission if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.newsletter", "configure")) { RedirectToAccessDenied("cms.newsletter", "configure"); } string scheduledInterval = null; if (isDynamic && chkSchedule.Checked) { // Get scheduled interval for dynamic newsletter scheduledInterval = schedulerInterval.ScheduleInterval; } string errorMessage = ValidateNewsletterValues(); if (!string.IsNullOrEmpty(errorMessage)) { ShowError(errorMessage); return; } NewsletterInfo newsletterObj = NewsletterInfoProvider.GetNewsletterInfo(txtNewsletterName.Text.Trim(), SiteContext.CurrentSiteID); // Newsletter's code name must be unique if (newsletterObj != null && newsletterObj.NewsletterID != EditedNewsletter.NewsletterID) { ShowError(GetString("Newsletter_Edit.NewsletterNameExists")); return; } if (newsletterObj == null) { newsletterObj = NewsletterInfoProvider.GetNewsletterInfo(EditedNewsletter.NewsletterID); } SetNewsletterValues(newsletterObj); // Check if subscription template was selected int subscriptionTemplateValue = ValidationHelper.GetInteger(subscriptionTemplate.Value, 0); if (EditedFeedIsNewsletter() && subscriptionTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoSubscriptionTemplateSelected")); return; } newsletterObj.NewsletterSubscriptionTemplateID = subscriptionTemplateValue; // Check if double opt-in template was selected if (chkEnableOptIn.Checked) { int optInTemplateValue = ValidationHelper.GetInteger(optInSelector.Value, 0); if (optInTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoOptInTemplateSelected")); return; } newsletterObj.NewsletterOptInTemplateID = optInTemplateValue; } else { newsletterObj.NewsletterOptInTemplateID = 0; } // Check if unsubscription template was selected int unsubscriptionTemplateValue = ValidationHelper.GetInteger(unsubscriptionTemplate.Value, 0); if (unsubscriptionTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoUnsubscriptionTemplateSelected")); return; } newsletterObj.NewsletterUnsubscriptionTemplateID = unsubscriptionTemplateValue; // ID of scheduled task which should be deleted int deleteScheduledTaskId = 0; if (isDynamic) { newsletterObj.NewsletterSource = NewsletterSource.Dynamic; newsletterObj.NewsletterDynamicURL = txtNewsletterDynamicURL.Value.ToString(); newsletterObj.NewsletterDynamicSubject = radFollowing.Checked ? txtSubject.Text : string.Empty; if ((String.IsNullOrEmpty(txtNewsletterDynamicURL.Value.ToString()))) { // Dynamic URL cannot be empty ShowError(GetString("newsletter_edit.sourcepageurlempty")); return; } if (chkSchedule.Checked) { if (!schedulerInterval.CheckOneDayMinimum()) { // If problem occurred while setting schedule interval ShowError(GetString("Newsletter_Edit.NoDaySelected")); return; } TaskInterval taskInterval = SchedulingHelper.DecodeInterval(scheduledInterval); if (!DataTypeManager.IsValidDate(taskInterval.StartTime)) { ShowError(GetString("Newsletter.IncorrectDate")); return; } UpdateDynamicNewsletterTask(newsletterObj, taskInterval); } else { if (newsletterObj.NewsletterDynamicScheduledTaskID > 0) { // Store task ID for deletion deleteScheduledTaskId = newsletterObj.NewsletterDynamicScheduledTaskID; } newsletterObj.NewsletterDynamicScheduledTaskID = 0; schedulerInterval.Visible = false; } } else { newsletterObj.NewsletterSource = NewsletterSource.TemplateBased; // Check if at least one template is selected if (string.IsNullOrEmpty(ValidationHelper.GetString(usTemplates.Value, null))) { ShowError(GetString("Newsletter_Edit.NoEmailTemplateSelected")); usTemplates.Value = mCurrentTemplates; return; } SaveTemplates(); } // Save changes to DB NewsletterInfoProvider.SetNewsletterInfo(newsletterObj); if (deleteScheduledTaskId > 0) { // Delete scheduled task if schedule mail-outs were unchecked TaskInfoProvider.DeleteTaskInfo(deleteScheduledTaskId); } ShowChangesSaved(); // Update breadcrumbs ScriptHelper.RefreshTabHeader(Page, newsletterObj.NewsletterDisplayName); }
/// <summary> /// Saves configuration changes. /// </summary> protected void SaveData() { // Check "configure" permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "configure")) { RedirectToCMSDeskAccessDenied("cms.newsletter", "configure"); } string scheduledInterval = null; if (isDynamic && chkSchedule.Checked) { // Get scheduled interval for dynamic newsletter scheduledInterval = schedulerInterval.ScheduleInterval; } string errorMessage = ValidateNewsletterValues(); if (!string.IsNullOrEmpty(errorMessage)) { ShowError(errorMessage); return; } NewsletterInfo newsletterObj = NewsletterInfoProvider.GetNewsletterInfo(txtNewsletterName.Text.Trim(), CMSContext.CurrentSiteID); // Newsletter's code name must be unique if (newsletterObj != null && newsletterObj.NewsletterID != newsletterId) { ShowError(GetString("Newsletter_Edit.NewsletterNameExists")); return; } if (newsletterObj == null) { newsletterObj = NewsletterInfoProvider.GetNewsletterInfo(newsletterId); } SetNewsletterValues(newsletterObj); // Check if subscription template was selected int subscriptionTemplateValue = ValidationHelper.GetInteger(subscriptionTemplate.Value, 0); if (subscriptionTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoSubscriptionTemplateSelected")); return; } newsletterObj.NewsletterSubscriptionTemplateID = subscriptionTemplateValue; // Check if double opt-in template was selected int optInTemplateValue = ValidationHelper.GetInteger(optInSelector.Value, 0); if (newsletterObj.NewsletterEnableOptIn && optInTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoOptInTemplateSelected")); return; } newsletterObj.NewsletterOptInTemplateID = optInTemplateValue; // Check if unsubscription template was selected int unsubscriptionTemplateValue = ValidationHelper.GetInteger(unsubscriptionTemplate.Value, 0); if (unsubscriptionTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoUnsubscriptionTemplateSelected")); return; } newsletterObj.NewsletterUnsubscriptionTemplateID = unsubscriptionTemplateValue; // ID of scheduled task which should be deleted int deleteScheduledTaskId = 0; if (isDynamic) { newsletterObj.NewsletterType = NewsletterType.Dynamic; newsletterObj.NewsletterDynamicSubject = radFollowing.Checked ? txtSubject.Text : string.Empty; if ((String.IsNullOrEmpty(txtNewsletterDynamicURL.Text.Trim()))) { // Dynamic URL cannot be empty ShowError(GetString("menuitem_edit.errorpageurlempty")); return; } newsletterObj.NewsletterDynamicURL = txtNewsletterDynamicURL.Text.Trim(); if (chkSchedule.Checked) { // Set info for scheduled task TaskInfo task = GetDynamicNewsletterTask(newsletterObj); if (!schedulerInterval.CheckOneDayMinimum()) { // If problem occurred while setting schedule interval ShowError(GetString("Newsletter_Edit.NoDaySelected")); return; } if (!IsValidDate(SchedulingHelper.DecodeInterval(scheduledInterval).StartTime)) { ShowError(GetString("Newsletter.IncorrectDate")); return; } task.TaskInterval = scheduledInterval; task.TaskNextRunTime = SchedulingHelper.GetNextTime(task.TaskInterval, new DateTime(), new DateTime()); task.TaskDisplayName = GetString("DynamicNewsletter.TaskName") + newsletterObj.NewsletterDisplayName; task.TaskName = "DynamicNewsletter_" + newsletterObj.NewsletterName; // Set task for processing in external service task.TaskAllowExternalService = true; task.TaskUseExternalService = (SchedulingHelper.UseExternalService && NewsletterHelper.UseExternalServiceForDynamicNewsletters(CMSContext.CurrentSiteName)); TaskInfoProvider.SetTaskInfo(task); newsletterObj.NewsletterDynamicScheduledTaskID = task.TaskID; } else { if (newsletterObj.NewsletterDynamicScheduledTaskID > 0) { // Store task ID for deletion deleteScheduledTaskId = newsletterObj.NewsletterDynamicScheduledTaskID; } newsletterObj.NewsletterDynamicScheduledTaskID = 0; schedulerInterval.Visible = false; } } else { newsletterObj.NewsletterType = NewsletterType.TemplateBased; // Check if issue template was selected int issueTemplateValue = ValidationHelper.GetInteger(issueTemplate.Value, 0); if (issueTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoEmailTemplateSelected")); return; } newsletterObj.NewsletterTemplateID = issueTemplateValue; } // Save changes to DB NewsletterInfoProvider.SetNewsletterInfo(newsletterObj); if (deleteScheduledTaskId > 0) { // Delete scheduled task if schedule mail-outs were unchecked TaskInfoProvider.DeleteTaskInfo(deleteScheduledTaskId); } ShowChangesSaved(); // Refresh header with display name ScriptHelper.RefreshTabHeader(Page, GetString("Newsletter_Header.Configuration")); }