コード例 #1
0
        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);
        }
コード例 #2
0
    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
        });
    }
コード例 #3
0
    /// <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;
     }
 }
コード例 #5
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);
    }
コード例 #6
0
    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);
    }
コード例 #7
0
ファイル: New.aspx.cs プロジェクト: itymofieiev/Kentico9
    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");
            }
        }
    }
コード例 #8
0
    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);
            }
        }
    }
コード例 #9
0
    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;
    }
コード例 #10
0
ファイル: EmailTemplates.cs プロジェクト: szp11/HGShareBBS
        /// <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));
        }
コード例 #11
0
    /// <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);
    }
コード例 #12
0
ファイル: Header.aspx.cs プロジェクト: kudutest2/Kentico
    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);
    }
コード例 #13
0
    /// <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);
    }
コード例 #14
0
    /// <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);
    }
コード例 #15
0
 /// <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;
 }
コード例 #16
0
    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);
            }
        }
    }
コード例 #17
0
    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);
            }
        }
    }
コード例 #18
0
    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')");
        }
    }
コード例 #19
0
        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);
        }
コード例 #20
0
    /// <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");
                }
            }
        }
    }
コード例 #21
0
    /// <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.");
        }
    }
コード例 #22
0
    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);
    }
コード例 #23
0
    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);
            }
        }
    }
コード例 #24
0
    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);
            }
        }
    }
コード例 #25
0
        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);
        }
コード例 #26
0
    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);
    }
コード例 #27
0
        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;
            }
        }
コード例 #28
0
    /// <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);
    }
コード例 #29
0
    /// <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;
            }
        }
    }
コード例 #30
0
        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");
        }
コード例 #31
0
    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;
    }
コード例 #32
0
    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;
    }
コード例 #33
0
    /// <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;
    }
コード例 #34
0
    /// <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;
    }
コード例 #35
0
    /// <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;
    }
コード例 #36
0
    /// <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;
            }
        }
    }
コード例 #37
0
    /// <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;
        }
    }
コード例 #38
0
    /// <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;
        }
    }
コード例 #39
0
    /// <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;
        }
    }
コード例 #40
0
    /// <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;
        }
    }
コード例 #41
0
 /// <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;
 }
コード例 #42
0
    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);
        }
    }
コード例 #43
0
 /// <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
             };
         }
     }
 }
コード例 #44
0
    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);
    }
コード例 #45
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;
    }
コード例 #46
0
    /// <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;
    }
コード例 #47
0
    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()));
        }
    }