private async Task <EmailTemplateInfo> GetTemplateAsync(EmailMessageParams args) { var response = new EmailTemplateInfo(); var application = await GetApplicationAsync(args.ApplicationId); if (application == null) { return(response); } response.ApplicationName = application.Name; response.SenderAddress = application.SenderAddress; response.SenderName = application.SenderName; var transports = (await GetTransportsAsync(args.ApplicationId)).ToArray(); response.TransportQueue = new Queue <ITransportDefinition>(transports); if (args.TemplateId.HasValue) { response.Template = await GetTemplateAsync(args.TemplateId.Value, args.GetCulture()); } else { response.Template = new EmailTemplate(args.Subject, args.GetBody(), args.GetCulture()); } return(response); }
private static void RegisterAttachments(Page page, ObjectEditMenu menu, EmailTemplateInfo emailTemplate) { const string ATTACHMENTS_ACTION_CLASS = "attachments-header-action"; // Register attachments count update module ScriptHelper.RegisterModule(page, "CMS/AttachmentsCountUpdater", new { Selector = "." + ATTACHMENTS_ACTION_CLASS, Text = ResHelper.GetString("general.attachments") }); // Prepare metafile dialog URL var metaFileDialogUrl = UrlResolver.ResolveUrl(@"~/CMSModules/AdminControls/Controls/MetaFiles/MetaFileDialog.aspx"); var query = string.Format("?objectid={0}&objecttype={1}&siteid={2}", emailTemplate.TemplateID, EmailTemplateInfo.OBJECT_TYPE, emailTemplate.TemplateSiteID); metaFileDialogUrl += string.Format("{0}&category={1}&hash={2}", query, ObjectAttachmentsCategories.TEMPLATE, QueryHelper.GetHash(query)); var attachCount = GetAttachmentsCount(emailTemplate); var attachmentsCaption = ResHelper.GetString("general.attachments"); // Add attachments action menu.AddExtraAction(new HeaderAction { Text = attachmentsCaption + (attachCount > 0 ? " (" + attachCount + ")" : string.Empty), Tooltip = attachmentsCaption, OnClientClick = string.Format(@"if (modalDialog) {{modalDialog('{0}', 'Attachments', '700', '500');}}", metaFileDialogUrl) + " return false;", Enabled = !SynchronizationHelper.UseCheckinCheckout || emailTemplate.Generalized.IsCheckedOutByUser(MembershipContext.AuthenticatedUser), CssClass = ATTACHMENTS_ACTION_CLASS, ButtonStyle = ButtonStyle.Default }); }
/// <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); }
private void EnsureFirstTemplateSelection(EmailTemplateInfo template) { if (ucTemplateSelector.SelectedId.Equals(0)) { ucTemplateSelector.SelectedId = template?.TemplateID ?? 0; } }
/// <summary> /// Gets and bulk updates issue templates. Called when the "Get and bulk update templates" button is pressed. /// Expects the CreateIssueTemplate method to be run first. /// </summary> private bool GetAndBulkUpdateIssueTemplates() { // Prepare the parameters string where = "TemplateName LIKE N'MyNewIssueTemplate%'"; // Get the data DataSet templates = EmailTemplateInfoProvider.GetEmailTemplates(where, null); if (!DataHelper.DataSourceIsEmpty(templates)) { // Loop through the individual items foreach (DataRow templateDr in templates.Tables[0].Rows) { // Create object from DataRow EmailTemplateInfo modifyTemplate = new EmailTemplateInfo(templateDr); // Update the properties modifyTemplate.TemplateDisplayName = modifyTemplate.TemplateDisplayName.ToUpper(); // Save the changes EmailTemplateInfoProvider.SetEmailTemplateInfo(modifyTemplate); } return(true); } return(false); }
protected override void OnPreInit(EventArgs e) { isDialog = QueryHelper.GetBoolean("editonlycode", false); if (isDialog) { // Check hash var settings = new HashSettings("") { Redirect = false }; if (!QueryHelper.ValidateHash("hash", "saved;name;templateid;selectorid;tabmode;siteid;selectedsiteid", settings, true)) { URLHelper.Redirect(AdministrationUrlHelper.GetErrorPageUrl("dialogs.badhashtitle", "dialogs.badhashtext")); } string templateName = QueryHelper.GetString("name", String.Empty); EmailTemplateInfo templateInfo = EmailTemplateInfo.Provider.Get(templateName, SiteID); if (templateInfo != null) { EditedObject = templateInfo; } MasterPageFile = "~/CMSMasterPages/UI/Dialogs/ModalDialogPage.master"; } base.OnPreInit(e); }
protected void Page_Load(object sender, EventArgs e) { editElem.SiteId = SiteID; editElem.SelectedSiteId = SelectedSiteID; if (isDialog) { string templateName = QueryHelper.GetString("name", String.Empty); EmailTemplateInfo emailTemplate = EmailTemplateProvider.GetEmailTemplate(templateName, SiteID); if (emailTemplate != null) { EditedObject = emailTemplate; } RegisterEscScript(); RegisterModalPageScripts(); var master = CurrentMaster as ICMSModalMasterPage; if (master != null) { // Register the Save and close button as the form submit button HeaderActions.Visible = false; editElem.EditForm.SubmitButton.Visible = false; master.Save += (s, ea) => editElem.EditForm.SaveData(null); master.ShowSaveAndCloseButton(); master.SetSaveResourceString("general.create"); } } }
private void SendEmail() { EmailMessage msg = new CMS.EmailEngine.EmailMessage(); EmailTemplateInfo eti = EmailTemplateProvider.GetEmailTemplate("Membership.ChangedPassword", CMSContext.CurrentSiteID); string pswd = passStrength.Text.Trim(); ui = UserInfoProvider.GetUserInfo(CurrentUser.UserName); if (ui != null) { if (eti != null) { MacroResolver mcr = new MacroResolver(); // Macros string[,] macros = new string[5, 2]; macros[0, 0] = "UserName"; macros[0, 1] = ui.UserName; macros[1, 0] = "Password"; macros[1, 1] = pswd; ContextResolver resolver = MacroContext.CurrentResolver; resolver.SourceParameters = macros; resolver.EncodeResolvedValues = true; msg.EmailFormat = EmailFormatEnum.Both; msg.From = "*****@*****.**"; msg.Recipients = CurrentUser.Email; msg.Subject = "Changement de mot de passe - Servranx"; EmailSender.SendEmailWithTemplateText(SiteContext.CurrentSiteName, msg, eti, resolver, true); } } }
protected void Page_Load(object sender, EventArgs e) { lblErrorMessage.Visible = false; emailTemplateInfo = EditedObject as EmailTemplateInfo; if (emailTemplateInfo == null) { pnlAvailability.Visible = false; return; } // Initialize newsletter selector var where = new WhereCondition() .WhereEquals("NewsletterSource", NewsletterSource.TemplateBased) .WhereEquals("NewsletterSiteID", SiteContext.CurrentSiteID); usNewsletters.WhereCondition = where.ToString(true); if (!RequestHelper.IsPostBack()) { LoadNewsletterTemplateBindings(); } usNewsletters.OnSelectionChanged += usNewsletters_OnSelectionChanged; }
/// <summary> /// 修改EmailTemplateInfo /// </summary> /// <param name="emailtemplate"></param> /// <returns></returns> public static int UpdateEmailTemplate(EmailTemplateInfo emailtemplate) { string sql = @"UPDATE [EmailTemplate] SET Title=@Title, Template=@Template, ValueIdentifier=@ValueIdentifier, Explanation=@Explanation, IsSystem=@IsSystem, IsHtml=@IsHtml, CreateTime=@CreateTime, UserId=@UserId, LastEditUserId=@LastEditUserId, LastEditTime=@LastEditTime WHERE Id=@Id"; var par = new DynamicParameters(); par.Add("@Id", emailtemplate.Id, DbType.Int32); par.Add("@Title", emailtemplate.Title, DbType.String); par.Add("@Template", emailtemplate.Template, DbType.AnsiString); par.Add("@ValueIdentifier", emailtemplate.ValueIdentifier, DbType.String); par.Add("@Explanation", emailtemplate.Explanation, DbType.String); par.Add("@IsSystem", emailtemplate.IsSystem, DbType.Boolean); par.Add("@IsHtml", emailtemplate.IsHtml, DbType.Boolean); par.Add("@CreateTime", emailtemplate.CreateTime, DbType.DateTime); par.Add("@UserId", emailtemplate.UserId, DbType.Int32); par.Add("@LastEditUserId", emailtemplate.LastEditUserId, DbType.Int32); par.Add("@LastEditTime", emailtemplate.LastEditTime, DbType.DateTime); return(DapWrapper.InnerExecuteSql(DbConfig.ArticleManagerConnString, sql, par)); }
/// <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); }
protected void Page_Load(object sender, EventArgs e) { // Check "Modify" permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.EmailTemplates", "Modify")) { RedirectToAccessDenied("CMS.EmailTemplates", "Modify"); } // Prepare site query string siteQuery = null; if (SiteID > 0) { siteQuery = "?siteid=" + SiteID; } if (SelectedSiteID > 0) { siteQuery = "?selectedsiteid=" + SelectedSiteID; } EmailTemplateInfo templateInfo = (EmailTemplateInfo)EditedObject; // Check that edited template belongs to selected site if ((SiteID > 0) && (templateInfo != null) && (templateInfo.TemplateSiteID != SiteID)) { RedirectToAccessDenied(null); } SetBreadcrumb(0, GetString("EmailTemplate_Edit.EmailTemplates"), ResolveUrl("List.aspx" + siteQuery), "_parent", null); }
/// <summary> /// Deletes issue template. Called when the "Delete template" button is pressed. /// Expects the CreateIssueTemplate method to be run first. /// </summary> private bool DeleteIssueTemplate() { // Get the issue template EmailTemplateInfo deleteTemplate = EmailTemplateInfoProvider.GetEmailTemplateInfo("MyNewIssueTemplate", SiteContext.CurrentSiteID); // Delete the issue template EmailTemplateInfoProvider.DeleteEmailTemplateInfo(deleteTemplate); return(deleteTemplate != null); }
/// <summary> /// Deletes unsubscription template. Called when the "Delete template" button is pressed. /// Expects the CreateUnsubscriptionTemplate method to be run first. /// </summary> private bool DeleteUnsubscriptionTemplate() { // Get the unsubscription template EmailTemplateInfo deleteTemplate = EmailTemplateInfoProvider.GetEmailTemplateInfo("MyNewUnsubscriptionTemplate", SiteContext.CurrentSiteID); // Delete the unsubscription template EmailTemplateInfoProvider.DeleteEmailTemplateInfo(deleteTemplate); return(deleteTemplate != null); }
/// <summary> /// Load data of edited email template from DB into textboxes. /// </summary> /// <param name="templateInfo">EmailTemplateInfo object</param> protected void LoadData(EmailTemplateInfo templateInfo) { txtDisplayName.Text = templateInfo.TemplateDisplayName; txtCodeName.Text = templateInfo.TemplateName; txtSubject.Text = templateInfo.TemplateSubject; txtBcc.Text = templateInfo.TemplateBcc; txtCc.Text = templateInfo.TemplateCc; txtFrom.Text = templateInfo.TemplateFrom; txtText.Text = templateInfo.TemplateText; txtPlainText.Text = templateInfo.TemplatePlainText; drpEmailType.Value = templateInfo.TemplateType; }
private void SendMail(string mail, IEnumerable <ProductBookModel> list) { SiteInfo currentSite = SiteContext.CurrentSite; ContextResolver resolver = MacroContext.CurrentResolver; string emailSubject = null; EmailTemplateInfo template = null; template = EmailTemplateProvider.GetEmailTemplate("SendProductLinkDownload", currentSite.SiteName); emailSubject = EmailHelper.GetSubject(template, "Demande de contact"); //mail type if (template != null) { ev.LogEvent("I", DateTime.Now, "Template!=null ", (template != null).ToString()); resolver.SourceParameters = null; EmailMessage email = new EmailMessage(); email.EmailFormat = EmailFormatEnum.Default; email.From = EmailHelper.GetSender(template, SettingsKeyInfoProvider.GetStringValue(currentSite.SiteName + ".CMSAdminEmailAddress")); email.Recipients = mail; StringBuilder sb = new StringBuilder(); foreach (var produit in list) { string str = "<br/> <b>" + produit.productname + "</b> (" + produit.fileUrl + ")"; sb = sb.AppendLine(str); } ev.LogEvent("I", DateTime.Now, "Template ", sb.ToString()); string templatetext = template.TemplateText.Replace("#Product", sb.ToString()); email.Body = resolver.ResolveMacros(templatetext); resolver.EncodeResolvedValues = false; email.PlainTextBody = resolver.ResolveMacros(template.TemplatePlainText); email.Subject = resolver.ResolveMacros(emailSubject); email.CcRecipients = template.TemplateCc; email.BccRecipients = template.TemplateBcc; try { MetaFileInfoProvider.ResolveMetaFileImages(email, template.TemplateID, EmailObjectType.EMAILTEMPLATE, MetaFileInfoProvider.OBJECT_CATEGORY_TEMPLATE); // Send the e-mail immediately EmailSender.SendEmail(currentSite.SiteName, email, true); } catch (Exception ex) { ev.LogEvent("E", DateTime.Now, "SendMail ", ex.Message); } } }
protected void InitActions() { EmailTemplateInfo emailTemplate = (EmailTemplateInfo)EditedObject; if ((emailTemplate != null) && (emailTemplate.TemplateID > 0)) { ObjectEditMenu menu = (ObjectEditMenu)ControlsHelper.GetChildControl(Page, typeof(ObjectEditMenu)); if (menu != null) { EmailTemplateEditExtender.RegisterEditPageHeaderActions(Page, menu, emailTemplate); } } }
protected void Page_Load(object sender, EventArgs e) { InitTabs("Content"); SetTab(0, GetString("general.general"), CMSContext.ResolveMacros("NewsletterTemplate_Edit.aspx?templateid={%EditedObject.TemplateID%}&tabmode={?tabmode?}"), "SetHelpTopic('helpTopic','newsletter_template_general')"); // Add newsletter - template binding tab for ordinary newsletter template EmailTemplateInfo emailTemplate = (EmailTemplateInfo)EditedObject; if ((emailTemplate != null) && (emailTemplate.TemplateType == EmailTemplateType.Issue)) { SetTab(1, GetString("newsletter.templatenewsletter"), CMSContext.ResolveMacros("Tab_Newsletters.aspx?templateid={%EditedObject.TemplateID%}&tabmode={?tabmode?}"), "SetHelpTopic('helpTopic','template_newsletters')"); } }
private string BindEmailBody <T>(EmailTemplateInfo emailTemplate, T viewModel) { var service = Engine.Razor; if (!String.IsNullOrEmpty(_layoutTemplateName)) { service.AddTemplate("layout", LayoutTemplate.TemplateText); } service.AddTemplate("template", emailTemplate.TemplateText); service.Compile("template"); var emailHtmlBody = service.Run("template", typeof(T), viewModel); return(emailHtmlBody); }
/// <summary> /// Sends new registration notification e-mail to administrator. /// </summary> private void SendRegistrationNotification(UserInfo ui) { var currentSiteName = SiteContext.CurrentSiteName; // Notify administrator if ((ui != null) && !String.IsNullOrEmpty(currentSiteName) && (ShoppingCartControl.SendNewRegistrationNotificationToAddress != "")) { EmailTemplateInfo mEmailTemplate = null; MacroResolver resolver = MembershipResolvers.GetRegistrationResolver(ui); if (SettingsKeyInfoProvider.GetBoolValue(currentSiteName + ".CMSRegistrationAdministratorApproval")) { mEmailTemplate = EmailTemplateProvider.GetEmailTemplate("Registration.Approve", currentSiteName); } else { mEmailTemplate = EmailTemplateProvider.GetEmailTemplate("Registration.New", currentSiteName); } if (mEmailTemplate == null) { // Email template not exist EventLogProvider.LogEvent(EventType.ERROR, "RegistrationForm", "GetEmailTemplate", eventUrl: RequestContext.RawURL); } else { // Initialize email message EmailMessage message = new EmailMessage(); message.EmailFormat = EmailFormatEnum.Default; message.From = EmailHelper.GetSender(mEmailTemplate, ECommerceSettings.SendEmailsFrom(currentSiteName)); message.Subject = GetString("RegistrationForm.EmailSubject"); message.Recipients = ShoppingCartControl.SendNewRegistrationNotificationToAddress; message.Body = mEmailTemplate.TemplateText; try { // Add template metafiles to e-mail EmailHelper.ResolveMetaFileImages(message, mEmailTemplate.TemplateID, EmailTemplateInfo.OBJECT_TYPE, ObjectAttachmentsCategories.TEMPLATE); // Send e-mail EmailSender.SendEmailWithTemplateText(currentSiteName, message, mEmailTemplate, resolver, false); } catch { // Email sending failed EventLogProvider.LogEvent(EventType.ERROR, "Membership", "RegistrationEmail"); } } } }
/// <summary> /// Creates and sends unsubscription e-mail. /// </summary> /// <param name="subscriber">Subscriber object</param> /// <param name="news">Newsletter object</param> /// <param name="subscription">Subscription object</param> /// <param name="siteName">Site name</param> protected void SendUnsubscriptionRequest(Subscriber subscriber, Newsletter news, SubscriberNewsletterInfo subscription, string siteName) { // Get global e-mail template with unsubscription request EmailTemplateInfo et = CMS.EmailEngine.EmailTemplateProvider.GetEmailTemplate("newsletter.unsubscriptionrequest", siteName); if (et != null) { // Get subscriber member SortedDictionary <int, Subscriber> subscribers = SubscriberProvider.GetSubscribers(subscriber, 1, 0); foreach (KeyValuePair <int, Subscriber> item in subscribers) { // Get 1st subscriber's member Subscriber sb = item.Value; string body = et.TemplateText; string plainBody = et.TemplatePlainText; // Resolve newsletter macros (first name, last name etc.) IssueHelper ih = new IssueHelper(); if (ih.LoadDynamicFields(sb, news, subscription, null, false, siteName, null, null, null)) { body = ih.ResolveDynamicFieldMacros(body); plainBody = ih.ResolveDynamicFieldMacros(plainBody); } // Create e-mail EmailMessage msg = new EmailMessage(); msg.EmailFormat = EmailFormatEnum.Default; msg.From = EmailHelper.GetSender(et, news.NewsletterSenderEmail); msg.Recipients = sb.SubscriberEmail; msg.BccRecipients = et.TemplateBcc; msg.CcRecipients = et.TemplateCc; msg.Subject = ResHelper.LocalizeString(et.TemplateSubject); msg.Body = URLHelper.MakeLinksAbsolute(body); msg.PlainTextBody = URLHelper.MakeLinksAbsolute(plainBody); // Add attachments and send e-mail MetaFileInfoProvider.ResolveMetaFileImages(msg, et.TemplateID, EmailObjectType.EMAILTEMPLATE, MetaFileInfoProvider.OBJECT_CATEGORY_TEMPLATE); EmailSender.SendEmail(siteName, msg); } } else { // Log missing template EventLogProvider ev = new EventLogProvider(); ev.LogEvent(EventLogProvider.EVENT_TYPE_ERROR, DateTime.Now, "UnsubscriptionRequest", "Unsubscription request e-mail template is missing."); } }
private void SendEmail(string templateName, MacroResolver resolver, string emailTo) { CMS.EmailEngine.EmailMessage msg = new CMS.EmailEngine.EmailMessage(); EmailTemplateInfo emailTemplate = EmailTemplateProvider.GetEmailTemplate(templateName, SiteContext.CurrentSiteID); msg.EmailFormat = EmailFormatEnum.Both; msg.From = emailTemplate.TemplateFrom; msg.Recipients = emailTo; if (resolver != null) { msg.Body = resolver.ResolveMacros(emailTemplate.TemplateText); } EmailSender.SendEmailWithTemplateText(SiteContext.CurrentSiteName, msg, emailTemplate, null, true); }
private void InitHeaderActions() { EmailTemplateInfo emailTemplate = Control.EditedObject as EmailTemplateInfo; if ((emailTemplate != null) && (emailTemplate.TemplateID > 0)) { Page page = Control.Page; ObjectEditMenu menu = (ObjectEditMenu)ControlsHelper.GetChildControl(page, typeof(ObjectEditMenu)); if (menu != null) { RegisterEditPageHeaderActions(page, menu, emailTemplate); } } }
protected void btnUnsubscribe_click(object sender, EventArgs ea) { // Validate email if (String.IsNullOrEmpty(email) || !ValidationHelper.IsEmail(email)) { ShowError(GetString("om.contact.enteremail")); return; } // Delete subscription if email is valid if (rsi != null) { if (rsi.ReportSubscriptionEmail.Trim() != email) { ShowError(GetString("reportsubscription.emailnotmatch")); return; } ReportSubscriptionInfoProvider.DeleteReportSubscriptionInfo(rsi.ReportSubscriptionID); ShowInformation(GetString("reportsubscription.unsubscription.success")); btnUnsubscribe.Visible = false; pnlInfo.Visible = false; // Send info about successful unsubscription to set email String siteName = SiteContext.CurrentSiteName; EmailTemplateInfo eti = EmailTemplateProvider.GetEmailTemplate("Reporting_Unsubscription_template", siteName); if (eti != null) { // Create email EmailMessage em = new EmailMessage(); em.EmailFormat = EmailFormatEnum.Default; em.From = String.IsNullOrEmpty(eti.TemplateFrom) ? EmailHelper.Settings.NotificationsSenderAdress(siteName) : eti.TemplateFrom;; em.Recipients = rsi.ReportSubscriptionEmail; em.Subject = eti.TemplateSubject; em.BccRecipients = eti.TemplateBcc; em.CcRecipients = eti.TemplateCc; MacroResolver resolver = ReportSubscriptionSender.CreateSubscriptionMacroResolver(ri, rsi, SiteContext.CurrentSite, em.Recipients); em.Body = resolver.ResolveMacros(eti.TemplateText); em.PlainTextBody = resolver.ResolveMacros(eti.TemplatePlainText); EmailHelper.ResolveMetaFileImages(em, eti.TemplateID, EmailTemplateInfo.OBJECT_TYPE, ObjectAttachmentsCategories.TEMPLATE); EmailSender.SendEmail(siteName, em); } } }
private string FormatEmailMessage(EmailTemplateInfo emailTemplateInfo, string formData) { var result = emailTemplateInfo.MessageTemplate; var dynData = JsonConvert.DeserializeObject <Dictionary <string, dynamic> >(formData); //result = result.Replace("{ApplicationName}", form.ApplicationName); StringBuilder fields = new StringBuilder(); foreach (var key in dynData.Keys) { // check if the value is not null or empty. if (!string.IsNullOrEmpty(dynData[key])) { var fieldStr = emailTemplateInfo.FieldTemplate; fieldStr = fieldStr.Replace("{Name}", key); fieldStr = fieldStr.Replace("{Value}", HttpUtility.UrlEncode(dynData[key])); fields.Append(fieldStr); } } result = result.Replace("{Fields}", fields.ToString()); result = result.Replace("%40", "@"); // Decode '@' result = result.Replace("%27", "'"); // Decode apostrophe result = result.Replace("%91", "'"); // Decode apostrophe result = result.Replace("%92", "'"); // Decode apostrophe result = result.Replace("%24", "$"); // Decode '$' result = result.Replace("%20", " "); // Decode ' ' result = result.Replace("+", " "); // Decode ' ' result = result.Replace("%21", "!"); // Decode ' ' result = result.Replace("%2E", "."); // Decode ' ' result = result.Replace("%3F", "?"); // Decode ' ' result = result.Replace("%2C", ","); // Decode ',' result = result.Replace("%28", "("); // Decode ' ' result = result.Replace("%29", ")"); // Decode ' ' return(result); }
protected void Page_Load(object sender, EventArgs e) { if (isDialog) { string templateName = QueryHelper.GetString("name", String.Empty); EmailTemplateInfo emailTemplate = EmailTemplateProvider.GetEmailTemplate(templateName, SiteID); if (emailTemplate != null) { EditedObject = emailTemplate; } RegisterEscScript(); RegisterModalPageScripts(); } SetTab(0, GetString("general.general"), "Tab_General.aspx" + RequestContext.CurrentQueryString, String.Empty); }
public static List <EmailTemplateInfo> GetEmailTemplateInfo(SqlConnection sqlConnection) { try { List <EmailTemplateInfo> emailtemplateInfos = new List <EmailTemplateInfo>(); string sql = "Select ID,[LibraryName],[To],Cc,[From],FromPWD,BodyHeader,BodyFooter,Subject,[Index],[SqlViewName],[AlertInDays] from EmailTemplate"; Console.WriteLine("Fields relevent to each library were selected."); SqlCommand cmd = new SqlCommand(sql, sqlConnection); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { EmailTemplateInfo emailTemplateInfo = new EmailTemplateInfo() { ID = (int)reader["ID"], LibraryName = (string)reader["LibraryName"], To = (string)reader["To"], Cc = (string)reader["Cc"], From = (string)reader["From"], FromPWD = (string)reader["FromPWD"], BodyHeader = (string)reader["BodyHeader"], BodyFooter = (string)reader["BodyFooter"], Subject = (string)reader["Subject"], Index = (string)reader["Index"], SqlViewName = (string)reader["SqlViewName"], AlertinDays = (string)reader["AlertInDays"] }; emailtemplateInfos.Add(emailTemplateInfo); Console.WriteLine("Adding relevent data of library to the entity."); } reader.Close(); Console.WriteLine("Executed Reader was closed."); return(emailtemplateInfos); } catch (Exception ex) { bool text = false; Print("GetEmailTemplateInfo", "Error : " + ex, text); throw ex; } }
/// <summary> /// Gets and updates issue template. Called when the "Get and update template" button is pressed. /// Expects the CreateIssueTemplate method to be run first. /// </summary> private bool GetAndUpdateIssueTemplate() { // Get the issue template EmailTemplateInfo updateTemplate = EmailTemplateInfoProvider.GetEmailTemplateInfo("MyNewIssueTemplate", SiteContext.CurrentSiteID); if (updateTemplate != null) { // Update the properties updateTemplate.TemplateDisplayName = updateTemplate.TemplateDisplayName.ToLower(); // Save the changes EmailTemplateInfoProvider.SetEmailTemplateInfo(updateTemplate); return(true); } return(false); }
/// <summary> /// Load data of editing emailTemplate. /// </summary> /// <param name="emailTemplateObj">EmailTemplate object</param> protected void LoadData(EmailTemplateInfo emailTemplateObj) { if (emailTemplateObj != null) { htmlTemplateBody.ResolvedValue = emailTemplateObj.TemplateBody; txtTemplateName.Text = emailTemplateObj.TemplateName; txtTemplateHeader.Value = emailTemplateObj.TemplateHeader; txtTemplateFooter.Value = emailTemplateObj.TemplateFooter; txtTemplateDisplayName.Text = emailTemplateObj.TemplateDisplayName; txtTemplateStyleSheetText.Text = emailTemplateObj.TemplateStylesheetText; // Display temaplate subject only for 'subscription' and 'unsubscription' template types if (emailTemplateObj.TemplateType != EmailTemplateType.Issue) { txtTemplateSubject.Text = emailTemplateObj.TemplateSubject; } } }
public async Task SendEmailAsync(EmailTemplateInfo emailTemplateInfo, string formData) { _logger.LogInformation("Sending form data through Sendgrid"); //SendGrid example var apiKey = emailApiKey; var client = new SendGridClient(apiKey); var from = new EmailAddress(emailTemplateInfo.FromEmail, emailTemplateInfo.FromName); //var subject = "Sending with SendGrid is Fun"; var to = new EmailAddress(emailTemplateInfo.ToEmail, emailTemplateInfo.ToName); //var plainTextContent = message; var htmlContent = FormatEmailMessage(emailTemplateInfo, formData); var msg = MailHelper.CreateSingleEmail(from, to, emailTemplateInfo.Subject, null, htmlContent); msg.AddCategory(emailTemplateInfo.Subject); var response = await client.SendEmailAsync(msg); _logger.LogInformation("Finished sending form data through Sendgrid"); }
protected void Page_Load(object sender, EventArgs e) { templateId = QueryHelper.GetInteger("templateid", 0); if (templateId <= 0) { pnlAvailability.Visible = false; return; } EditedObject = emailTemplateInfo = EmailTemplateInfoProvider.GetEmailTemplateInfo(templateId); // Initialize newsletter selector usNewsletters.WhereCondition = String.Format("NewsletterSiteID={0} AND NewsletterType='{1}' AND NewsletterTemplateID<>{2}", CMSContext.CurrentSiteID, SqlHelperClass.GetSafeQueryString(NewsletterType.TemplateBased), emailTemplateInfo.TemplateID); if (!RequestHelper.IsPostBack()) { LoadSiteBindings(); } usNewsletters.OnSelectionChanged += usSites_OnSelectionChanged; }
protected void Page_Load(object sender, EventArgs e) { emailTemplateInfo = EditedObject as EmailTemplateInfo; if (emailTemplateInfo == null) { pnlAvailability.Visible = false; return; } // Initialize newsletter selector var where = new WhereCondition() .WhereEquals("NewsletterType", NewsletterType.TemplateBased) .WhereEquals("NewsletterSiteID", SiteContext.CurrentSiteID) .WhereNotEquals("NewsletterTemplateID", emailTemplateInfo.TemplateID); usNewsletters.WhereCondition = where.ToString(expand: true); if (!RequestHelper.IsPostBack()) { LoadSiteBindings(); } usNewsletters.OnSelectionChanged += usSites_OnSelectionChanged; }
/// <summary> /// Initializes HTML editor's settings. /// </summary> protected void InitHTMLEditor(EmailTemplateInfo emailTemplateObj) { htmlTemplateBody.AutoDetectLanguage = false; htmlTemplateBody.DefaultLanguage = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName; htmlTemplateBody.ToolbarSet = "Newsletter"; htmlTemplateBody.LinkDialogConfig.UseFullURL = true; htmlTemplateBody.QuickInsertConfig.UseFullURL = true; if ((emailTemplateObj != null) && (emailTemplateObj.TemplateType == EmailTemplateType.DoubleOptIn)) { htmlTemplateBody.ResolverName = "NewsletterOptInResolver"; } else { htmlTemplateBody.ResolverName = "NewsletterResolver"; } DialogConfiguration config = htmlTemplateBody.MediaDialogConfig; config.UseFullURL = true; config.MetaFileObjectID = (emailTemplateObj != null) ? emailTemplateObj.TemplateID : 0; config.MetaFileObjectType = NewsletterObjectType.NEWSLETTERTEMPLATE; config.MetaFileCategory = MetaFileInfoProvider.OBJECT_CATEGORY_TEMPLATE; config.HideAttachments = false; }
/// <summary> /// Creates issue template. Called when the "Create template" button is pressed. /// </summary> private bool CreateIssueTemplate() { // Create new issue template object EmailTemplateInfo newTemplate = new EmailTemplateInfo(); // Set the properties newTemplate.TemplateDisplayName = "My new issue template"; newTemplate.TemplateName = "MyNewIssueTemplate"; newTemplate.TemplateType = EmailTemplateType.Issue; newTemplate.TemplateBody = "<p>My new issue template body</p><p>$$content:800:600$$</p>"; newTemplate.TemplateHeader = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>Newsletter</title><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /></head><body>"; newTemplate.TemplateFooter = "</body></html>"; newTemplate.TemplateSiteID = SiteContext.CurrentSiteID; // Save the issue template EmailTemplateInfoProvider.SetEmailTemplateInfo(newTemplate); return true; }
/// <summary> /// Initializes HTML editor's settings. /// </summary> protected void InitHTMLEditor(EmailTemplateInfo emailTemplateObj) { htmlTemplateBody.AutoDetectLanguage = false; htmlTemplateBody.DefaultLanguage = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName; htmlTemplateBody.ToolbarSet = "Newsletter"; if ((emailTemplateObj != null) && (emailTemplateObj.TemplateType == EmailTemplateType.DoubleOptIn)) { htmlTemplateBody.ResolverName = "NewsletterOptInResolver"; } else { htmlTemplateBody.ResolverName = "NewsletterResolver"; } DialogConfiguration config = htmlTemplateBody.MediaDialogConfig; config.MetaFileObjectID = (emailTemplateObj != null) ? emailTemplateObj.TemplateID : 0; config.MetaFileObjectType = EmailTemplateInfo.OBJECT_TYPE; config.MetaFileCategory = ObjectAttachmentsCategories.TEMPLATE; config.HideAttachments = false; }
/// <summary> /// Sets data to database. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { string errorMessage = new Validator().NotEmpty(txtTemplateDisplayName.Text.Trim(), GetString("general.requiresdisplayname")) .NotEmpty(txtTemplateName.Text.Trim(), GetString("NewsletterTemplate_Edit.ErrorEmptyName")) .IsCodeName(txtTemplateName.Text.Trim(), GetString("General.ErrorCodeNameInIdentifierFormat")).Result; if (String.IsNullOrEmpty(errorMessage)) { int siteId = CMSContext.CurrentSiteID; // TemplateName must to be unique EmailTemplateInfo emailTemplateObj = EmailTemplateInfoProvider.GetEmailTemplateInfo(txtTemplateName.Text.Trim(), siteId); // If templateName value is unique if (emailTemplateObj == null) { string type; int typeValue = Convert.ToInt32(drpTemplateType.SelectedValue); switch (typeValue) { default: case 0: type = "D"; // Double opt-in break; case 1: type = "I"; // Issue break; case 2: type = "S"; // Subscription break; case 3: type = "U"; // Unsubscription break; } // Create new item -> insert emailTemplateObj = new EmailTemplateInfo(); emailTemplateObj.TemplateType = type; emailTemplateObj.TemplateBody = string.Empty; emailTemplateObj.TemplateName = txtTemplateName.Text.Trim(); emailTemplateObj.TemplateHeader = "<html>\n<head>\n</head>\n<body>"; emailTemplateObj.TemplateFooter = "</body>\n</html>"; emailTemplateObj.TemplateDisplayName = txtTemplateDisplayName.Text.Trim(); emailTemplateObj.TemplateSiteID = siteId; EmailTemplateInfoProvider.SetEmailTemplateInfo(emailTemplateObj); URLHelper.Redirect("NewsletterTemplate_Edit.aspx?templateid=" + Convert.ToString(emailTemplateObj.TemplateID) + "&saved=1"); } else { lblError.Visible = true; lblError.Text = GetString("NewsletterTemplate_Edit.TemplateNameExists"); } } else { lblError.Visible = true; lblError.Text = errorMessage; } }
/// <summary> /// Actions handler. /// </summary> protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e) { switch (e.CommandName.ToLowerCSafe()) { case "save": // Check 'Manage templates' permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "managetemplates")) { RedirectToCMSDeskAccessDenied("cms.newsletter", "managetemplates"); } string errorMessage = null; // Check template code name if (!ValidationHelper.IsCodeName(txtTemplateName.Text)) { errorMessage = GetString("General.ErrorCodeNameInIdentifierFormat"); } else { // Check code and display name for emptiness errorMessage = new Validator().NotEmpty(txtTemplateDisplayName.Text, GetString("general.requiresdisplayname")).NotEmpty(txtTemplateName.Text, GetString("NewsletterTemplate_Edit.ErrorEmptyName")).Result; } if (string.IsNullOrEmpty(errorMessage)) { // TemplateName must to be unique EmailTemplateInfo emailTemplateObj = EmailTemplateInfoProvider.GetEmailTemplateInfo(txtTemplateName.Text.Trim(), CMSContext.CurrentSiteID); // If templateName value is unique if ((emailTemplateObj == null) || (emailTemplateObj.TemplateID == templateid)) { // If templateName value is unique -> determine whether it is update or insert if ((emailTemplateObj == null)) { // Get EmailTemplate object by primary key emailTemplateObj = EmailTemplateInfoProvider.GetEmailTemplateInfo(templateid); if (emailTemplateObj == null) { // Create new item -> insert emailTemplateObj = new EmailTemplateInfo(); } } // Check region names validity bool isValidRegionName = true; bool isValid = true; string templateBody = htmlTemplateBody.ResolvedValue.Trim(); EmailTemplateHelper.ValidateEditableRegions(templateBody, out isValid, out isValidRegionName, null); if (isValid) { if (isValidRegionName) { // Set template object emailTemplateObj.TemplateBody = templateBody; emailTemplateObj.TemplateName = txtTemplateName.Text.Trim(); emailTemplateObj.TemplateHeader = ValidationHelper.GetString(txtTemplateHeader.Value, "").Trim(); emailTemplateObj.TemplateFooter = ValidationHelper.GetString(txtTemplateFooter.Value, "").Trim(); emailTemplateObj.TemplateDisplayName = txtTemplateDisplayName.Text.Trim(); emailTemplateObj.TemplateStylesheetText = txtTemplateStyleSheetText.Text.Trim(); // Set temaplte subject only for 'subscription' and 'unsubscription' template types if (plcSubject.Visible) { emailTemplateObj.TemplateSubject = txtTemplateSubject.Text.Trim(); } // Save the template object and display info message EmailTemplateInfoProvider.SetEmailTemplateInfo(emailTemplateObj); ShowChangesSaved(); // Reload header if changes were saved if (TabMode) { ScriptHelper.RefreshTabHeader(Page, null); } } else { ShowError(GetString("NewsletterTemplate_Edit.EditableRegionNameError")); } } else { ShowError(GetString("NewsletterTemplate_Edit.EditableRegionError")); } } else { ShowError(GetString("NewsletterTemplate_Edit.TemplateNameExists")); } } else { ShowError(errorMessage); } break; } }
/// <summary> /// Load data of edited email template from DB into textboxes. /// </summary> /// <param name="templateInfo">EmailTemplateInfo object</param> protected void LoadData(EmailTemplateInfo templateInfo) { txtDisplayName.Text = templateInfo.TemplateDisplayName; txtCodeName.Text = templateInfo.TemplateName; txtSubject.Text = templateInfo.TemplateSubject; txtBcc.Text = templateInfo.TemplateBcc; txtCc.Text = templateInfo.TemplateCc; txtFrom.Text = templateInfo.TemplateFrom; txtText.Text = templateInfo.TemplateText; txtPlainText.Text = templateInfo.TemplatePlainText; drpEmailType.SelectedValue = templateInfo.TemplateType; // Init attachment storage AttachmentList.ObjectID = templateInfo.TemplateID; AttachmentList.ObjectType = EmailObjectType.EMAILTEMPLATE; AttachmentList.Category = MetaFileInfoProvider.OBJECT_CATEGORY_TEMPLATE; if (this.SiteID != 0) { AttachmentList.SiteID = this.SiteID; } }
/// <summary> /// Save button action. /// </summary> protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e) { switch (e.CommandName.ToLower()) { case "lnksave_click": txtDisplayName.Text = txtDisplayName.Text.Trim(); txtCodeName.Text = txtCodeName.Text.Trim(); txtSubject.Text = txtSubject.Text.Trim(); // Find whether required fields are not empty string result = new Validator().NotEmpty(txtDisplayName.Text, GetString("EmailTemplate_Edit.FillDisplayNameField")) .NotEmpty(txtCodeName.Text, GetString("EmailTemplate_Edit.FillCodeNameField")) .IsCodeName(txtCodeName.Text, GetString("general.invalidcodename")) .Result; // Check validity of entered e-mails if (!String.IsNullOrEmpty(txtFrom.Text) && !ValidationHelper.AreEmails(txtFrom.Text)) { result = GetString("EmailTemplate_Edit.InvalidFrom"); } else if (!String.IsNullOrEmpty(txtBcc.Text) && !ValidationHelper.AreEmails(txtBcc.Text)) { result = GetString("EmailTemplate_Edit.InvalidBcc"); } else if (!String.IsNullOrEmpty(txtCc.Text) && !ValidationHelper.AreEmails(txtCc.Text)) { result = GetString("EmailTemplate_Edit.InvalidCc"); } if (String.IsNullOrEmpty(result)) { string siteName = null; if (this.SiteID != 0) { // Get site name for non-global templates SiteInfo site = SiteInfoProvider.GetSiteInfo(this.SiteID); if (site != null) { siteName = site.SiteName; } } // Try to get template by template name and site name EmailTemplateInfo templateInfo = EmailTemplateProvider.GetEmailTemplate(txtCodeName.Text, siteName); // Find if codename of the email template is unique for the site if ((templateInfo == null) || (templateInfo.TemplateID == this.EmailTemplateID) || ((templateInfo.TemplateSiteID == 0) && (this.SiteID > 0))) { // Get object if (templateInfo == null) { templateInfo = EmailTemplateProvider.GetEmailTemplate(this.EmailTemplateID); if (templateInfo == null) { templateInfo = new EmailTemplateInfo(); } } templateInfo.TemplateID = EmailTemplateID; templateInfo.TemplateDisplayName = txtDisplayName.Text; templateInfo.TemplateName = txtCodeName.Text; templateInfo.TemplateSubject = txtSubject.Text; templateInfo.TemplateFrom = txtFrom.Text; templateInfo.TemplateBcc = txtBcc.Text; templateInfo.TemplateCc = txtCc.Text; templateInfo.TemplateText = txtText.Text; templateInfo.TemplatePlainText = txtPlainText.Text; templateInfo.TemplateSiteID = SiteID; templateInfo.TemplateType = drpEmailType.SelectedValue; // Save (insert/update) EmailTemplateInfo object EmailTemplateProvider.SetEmailTemplate(templateInfo); // Handle redirection string redirectToUrl = "~/CMSModules/EmailTemplates/Pages/Edit.aspx?templateid=" + templateInfo.TemplateID.ToString() + "&saved=1&tabmode=" + QueryHelper.GetInteger("tabmode", 0); if (this.GlobalTemplate) { redirectToUrl += "&selectedsiteid=0"; } else if (QueryHelper.GetInteger("selectedsiteid", 0) != 0) { redirectToUrl += "&selectedsiteid=" + QueryHelper.GetInteger("selectedsiteid", 0); } else if (this.SiteID > 0) { redirectToUrl += "&siteid=" + this.SiteID; } URLHelper.Redirect(redirectToUrl); } else { lblError.Visible = true; lblError.ResourceString = "EmailTemplate_Edit.UniqueCodeName"; } } else { lblError.Visible = true; lblError.Text = result; } break; } }
public void Save(bool closeOnSave) { // Check modify permission RaiseOnCheckPermissions(PERMISSION_MODIFY, this); txtDisplayName.Text = txtDisplayName.Text.Trim(); txtCodeName.Text = txtCodeName.Text.Trim(); txtSubject.Text = txtSubject.Text.Trim(); // Find whether required fields are not empty string result = new Validator().NotEmpty(txtDisplayName.Text, GetString("EmailTemplate_Edit.FillDisplayNameField")) .NotEmpty(txtCodeName.Text, GetString("EmailTemplate_Edit.FillCodeNameField")) .IsCodeName(txtCodeName.Text, GetString("general.invalidcodename")) .Result; // Check validity of entered e-mails if (!String.IsNullOrEmpty(txtFrom.Text) && !ValidationHelper.AreEmails(txtFrom.Text)) { result = GetString("EmailTemplate_Edit.InvalidFrom"); } else if (!String.IsNullOrEmpty(txtBcc.Text) && !ValidationHelper.AreEmails(txtBcc.Text)) { result = GetString("EmailTemplate_Edit.InvalidBcc"); } else if (!String.IsNullOrEmpty(txtCc.Text) && !ValidationHelper.AreEmails(txtCc.Text)) { result = GetString("EmailTemplate_Edit.InvalidCc"); } if (String.IsNullOrEmpty(result)) { string siteName = null; if (SiteID != 0) { // Get site name for non-global templates SiteInfo site = SiteInfoProvider.GetSiteInfo(SiteID); if (site != null) { siteName = site.SiteName; } } // Try to get template by template name and site name EmailTemplateInfo templateInfo = EmailTemplateProvider.GetEmailTemplate(txtCodeName.Text, siteName); // Find if codename of the email template is unique for the site if ((templateInfo == null) || (templateInfo.TemplateID == EmailTemplateID) || ((templateInfo.TemplateSiteID == 0) && (SiteID > 0))) { bool isInsert = false; // Get object if (templateInfo == null) { templateInfo = EmailTemplateProvider.GetEmailTemplate(EmailTemplateID); if (templateInfo == null) { templateInfo = new EmailTemplateInfo(); isInsert = true; } } templateInfo.TemplateID = EmailTemplateID; templateInfo.TemplateDisplayName = txtDisplayName.Text; templateInfo.TemplateName = txtCodeName.Text; templateInfo.TemplateSubject = txtSubject.Text; templateInfo.TemplateFrom = txtFrom.Text; templateInfo.TemplateBcc = txtBcc.Text; templateInfo.TemplateCc = txtCc.Text; templateInfo.TemplateText = txtText.Text; templateInfo.TemplatePlainText = txtPlainText.Text; templateInfo.TemplateSiteID = SiteID; templateInfo.TemplateType = ValidationHelper.GetString(drpEmailType.Value, null); // Save (insert/update) EmailTemplateInfo object EmailTemplateProvider.SetEmailTemplate(templateInfo); CMSContext.EditedObject = templateInfo; if (isInsert) { pnlObjectLocking.ObjectManager.ObjectType = null; CMSObjectManager.CheckOutNewObject(this.Page); } // Handle redirection RedirectOnSave(templateInfo, closeOnSave); } else { ShowError(GetString("EmailTemplate_Edit.UniqueCodeName")); } } else { ShowError(result); } }
/// <summary> /// Processes the stylesheet. /// </summary> protected void ProcessStylesheet() { // Newsletter template stylesheet if (!string.IsNullOrEmpty(newsletterTemplateName)) { // Get the template et = EmailTemplateInfoProvider.GetEmailTemplateInfo(newsletterTemplateName, SiteContext.CurrentSiteID); if (et != null) { // Create the output file outputFile = new CMSOutputResource { Name = RequestContext.URL.ToString(), Data = HTMLHelper.ResolveCSSUrls(et.TemplateStylesheetText, SystemContext.ApplicationPath), Etag = et.TemplateName }; } } }
protected void Page_Load(object sender, EventArgs e) { // Initialize HTML editor txtText.Editor.EnableViewState = false; txtText.Editor.EditorMode = EditorModeEnum.Advanced; txtText.Editor.Language = LanguageEnum.HTMLMixed; txtText.Editor.Height = new Unit("400px"); txtText.Editor.Width = new Unit("100%"); // Initialize Plain Text editor txtPlainText.Editor.EnableViewState = false; txtPlainText.Editor.EditorMode = EditorModeEnum.Advanced; txtPlainText.Editor.Language = LanguageEnum.Text; txtPlainText.Editor.Height = new Unit("400px"); txtPlainText.Editor.Width = new Unit("100%"); txtPlainText.Editor.FullScreenParentElementID = txtText.Editor.FullScreenParentElementID = "divContent"; if (TemplateType == null) { drpEmailType.DropDown.AutoPostBack = true; } else { drpEmailType.DropDown.Enabled = false; drpEmailType.Value = EmailTemplateMacros.GetEmailTypeString(TemplateType.Value); } // Initialize required field validators RequiredFieldValidatorDisplayName.ErrorMessage = GetString("EmailTemplate_Edit.FillDisplayNameField"); RequiredFieldValidatorCodeName.ErrorMessage = GetString("EmailTemplate_Edit.FillCodeNameField"); // Register save button handler pnlObjectLocking.ObjectManager.OnSaveData += new EventHandler<SimpleObjectManagerEventArgs>(ObjectManager_OnSaveData); pnlObjectLocking.ObjectManager.OnAfterAction += new EventHandler<SimpleObjectManagerEventArgs>(ObjectManager_OnAfterAction); if (EmailTemplateID > 0) { // Get email template info of specified 'templateid' templateInfo = EmailTemplateProvider.GetEmailTemplate(EmailTemplateID); EditedObject = templateInfo; // Get SiteID of the template SiteID = templateInfo.TemplateSiteID; // Check if user is assigned to web site if (!CMSContext.CurrentUser.IsGlobalAdministrator) { if (!CMSContext.CurrentUser.IsInSite(SiteInfoProvider.GetSiteName(SiteID))) { // Disable object for user EditedObject = null; } } // Fill the form if (!RequestHelper.IsPostBack()) { // Load data to the form LoadData(templateInfo); // Show message that the email template was created or updated successfully. if (QueryHelper.GetBoolean("saved", false)) { ShowChangesSaved(); // Reload header if changes were saved if ((Page is CMSPage) && ((CMSPage)Page).TabMode) { ScriptHelper.RefreshTabHeader(Page, null); } } } // Register paste attachment script RegisterPasteScript(); } else { pnlObjectLocking.ObjectManager.ObjectType = PredefinedObjectType.EMAILTEMPLATE; } // Get correct MacroResolver ContextResolver resolver = EmailTemplateMacros.GetEmailTemplateResolver(EmailTemplateMacros.GetEmailTypeEnum(ValidationHelper.GetString(drpEmailType.Value, ""))); txtText.Resolver = resolver; txtPlainText.Resolver = resolver; // Disable display name and code name editation when editing item from selector txtDisplayName.Enabled = txtCodeName.Enabled = !EditMode || !DialogMode; macroSelectorElm.Resolver = resolver; macroSelectorElm.ShowMacroTreeAbove = true; macroSelectorElm.ExtendedTextAreaElem = txtText.Editor.EditorID; macroSelectorElm.TextAreaID = txtText.Editor.ClientID; macroSelectorPlain.Resolver = resolver; macroSelectorPlain.ShowMacroTreeAbove = true; macroSelectorPlain.ExtendedTextAreaElem = txtPlainText.Editor.EditorID; macroSelectorPlain.TextAreaID = txtPlainText.Editor.ClientID; InitHeaderActions(EmailTemplateID, SiteID); }
/// <summary> /// Gets and bulk updates issue templates. Called when the "Get and bulk update templates" button is pressed. /// Expects the CreateIssueTemplate method to be run first. /// </summary> private bool GetAndBulkUpdateIssueTemplates() { // Prepare the parameters string where = "TemplateName LIKE N'MyNewIssueTemplate%'"; // Get the data DataSet templates = EmailTemplateInfoProvider.GetEmailTemplates(where, null); if (!DataHelper.DataSourceIsEmpty(templates)) { // Loop through the individual items foreach (DataRow templateDr in templates.Tables[0].Rows) { // Create object from DataRow EmailTemplateInfo modifyTemplate = new EmailTemplateInfo(templateDr); // Update the properties modifyTemplate.TemplateDisplayName = modifyTemplate.TemplateDisplayName.ToUpper(); // Save the changes EmailTemplateInfoProvider.SetEmailTemplateInfo(modifyTemplate); } return true; } return false; }
/// <summary> /// Creates unsubscription template. Called when the "Create template" button is pressed. /// </summary> private bool CreateUnsubscriptionTemplate() { // Create new unsubscription template object EmailTemplateInfo newTemplate = new EmailTemplateInfo(); // Set the properties newTemplate.TemplateDisplayName = "My new unsubscription template"; newTemplate.TemplateName = "MyNewUnsubscriptionTemplate"; newTemplate.TemplateType = EmailTemplateType.Unsubscription; newTemplate.TemplateBody = "My new unsubscription template body"; newTemplate.TemplateHeader = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>Newsletter</title><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /></head><body>"; newTemplate.TemplateFooter = "</body></html>"; newTemplate.TemplateSiteID = CMSContext.CurrentSiteID; // Save the unsubscription template EmailTemplateInfoProvider.SetEmailTemplateInfo(newTemplate); return true; }
private void RedirectOnSave(EmailTemplateInfo templateInfo, bool closeOnSave) { StringBuilder redirectUrl = new StringBuilder(); redirectUrl.Append(URLHelper.ResolveUrl(RefreshPageURL), "?saved=1&tabmode=", QueryHelper.GetInteger("tabmode", 0)); if (GlobalTemplate) { redirectUrl.Append("&selectedsiteid=0"); } else if (QueryHelper.GetInteger("selectedsiteid", 0) != 0) { redirectUrl.Append("&selectedsiteid=", QueryHelper.GetInteger("selectedsiteid", 0)); } else if (SiteID > 0) { redirectUrl.Append("&siteid=" + SiteID); } // Selector ID in query means dialog mode string selector = QueryHelper.GetString("selectorid", string.Empty); if (!string.IsNullOrEmpty(selector)) { // Add dialog specific query parameters redirectUrl.Append("&editonlycode=1"); redirectUrl.Append("&name=", templateInfo.TemplateName, "&selectorid=", selector); string type = null; if (TemplateType != null) { type = "&templatetype=" + EmailTemplateMacros.GetEmailTypeString(TemplateType.Value); redirectUrl.Append(type); } redirectUrl.Append("&hash=", QueryHelper.GetHash("?editonlycode=1" + type)); ScriptHelper.RegisterWOpenerScript(Page); StringBuilder script = new StringBuilder(); if (!EditMode) { // Add selector refresh script.Append(@" if (wopener) {{ wopener.US_SelectNewValue_", selector, "('", templateInfo.TemplateName, @"'); }}"); } if (closeOnSave) { script.AppendLine("CloseDialog();"); } else { script.Append(@" window.name = '", selector, @"'; window.open('", URLHelper.UrlEncodeQueryString(redirectUrl.ToString()), "', window.name);"); } ScriptHelper.RegisterStartupScript(this, GetType(), "UpdateSelector", script.ToString(), true); } else { // Add UI specific query parameters redirectUrl.Append("&templateid=", templateInfo.TemplateID); URLHelper.Redirect(URLHelper.UrlEncodeQueryString(redirectUrl.ToString())); } }