コード例 #1
0
    /// <summary>
    /// Loads content from specific newsletter template.
    /// </summary>
    private void LoadContent()
    {
        EmailTemplate emailTemplate = EmailTemplateProvider.GetEmailTemplate(templateId);

        if ((emailTemplate == null) || string.IsNullOrEmpty(emailTemplate.TemplateBody))
        {
            return;
        }

        // Remove security parameters from macros
        string templateText = MacroResolver.RemoveSecurityParameters(emailTemplate.TemplateBody, true, null);

        if (!RequestHelper.IsPostBack() && (issue != null))
        {
            // Load content of editable regions
            IssueHelper.LoadRegionsContents(ref regionsContents, issue.IssueText);
        }

        CMSEditableRegion editableRegion = null;
        LiteralControl    before         = null;
        int count        = 0;
        int textStart    = 0;
        int editRegStart = templateText.IndexOf("$$", textStart);

        // Apply CSS e-mail template style
        HTMLHelper.AddToHeader(this.Page, CSSHelper.GetCSSFileLink(EmailTemplateProvider.GetStylesheetUrl(emailTemplate.TemplateName)));

        while (editRegStart >= 0)
        {
            count++;

            before = new LiteralControl();
            // Get template text surrounding editable regions - make links absolute
            before.Text = URLHelper.MakeLinksAbsolute(templateText.Substring(textStart, (editRegStart - textStart)));
            plcContent.Controls.Add(before);

            // End of region
            editRegStart += 2;
            textStart     = editRegStart;
            if (editRegStart < templateText.Length - 1)
            {
                int editRegEnd = templateText.IndexOf("$$", editRegStart);
                if (editRegEnd >= 0)
                {
                    string   region = templateText.Substring(editRegStart, editRegEnd - editRegStart);
                    string[] parts  = (region + ":" + ":").Split(':');

                    try
                    {
                        string name = parts[0];
                        if (!string.IsNullOrEmpty(name.Trim()))
                        {
                            int width  = ValidationHelper.GetInteger(parts[1], 0);
                            int height = ValidationHelper.GetInteger(parts[2], 0);

                            editableRegion            = new CMSEditableRegion();
                            editableRegion.ID         = name;
                            editableRegion.RegionType = CMSEditableRegionTypeEnum.HtmlEditor;
                            editableRegion.ViewMode   = ViewModeEnum.Edit;

                            editableRegion.DialogHeight = height;
                            editableRegion.DialogWidth  = width;

                            editableRegion.WordWrap = false;
                            editableRegion.HtmlAreaToolbarLocation = "Out:CKEditorToolbar";
                            editableRegion.RegionTitle             = name;
                            editableRegion.UseStylesheet           = false;
                            editableRegion.HTMLEditorCssStylesheet = EmailTemplateProvider.GetStylesheetUrl(emailTemplate.TemplateName);
                            editableRegion.HtmlAreaToolbar         = "Newsletter";
                            editableRegion.HtmlEditor.MediaDialogConfig.UseFullURL = true;
                            editableRegion.HtmlEditor.LinkDialogConfig.UseFullURL  = true;
                            editableRegion.HtmlEditor.QuickInsertConfig.UseFullURL = true;

                            editableRegion.LoadContent(ValidationHelper.GetString(regionsContents[name.ToLower()], ""));

                            plcContent.Controls.Add(editableRegion);

                            textStart = editRegEnd + 2;
                        }
                    }
                    catch
                    {
                    }
                }
            }
            editRegStart = templateText.IndexOf("$$", textStart);
        }

        before      = new LiteralControl();
        before.Text = URLHelper.MakeLinksAbsolute(templateText.Substring(textStart));

        plcContent.Controls.Add(before);
    }
コード例 #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        pnlHeader.Visible = !TabMode;

        // Get site ID from context
        siteId = CMSContext.CurrentSiteID;

        rfvTemplateDisplayName.ErrorMessage = GetString("general.requiresdisplayname");
        rfvTemplateName.ErrorMessage        = GetString("NewsletterTemplate_Edit.ErrorEmptyName");

        ScriptHelper.RegisterSaveShortcut(lnkSave, null, false);
        ScriptHelper.RegisterSpellChecker(this);

        // Control initializations
        string varsScript = string.Format("var emptyNameMsg = '{0}'; \nvar emptyWidthMsg = '{1}'; \nvar emptyHeightMsg = '{2}'; \nvar spellURL = '{3}'; \n",
                                          GetString("NewsletterTemplate_Edit.EmptyNameMsg"),
                                          GetString("NewsletterTemplate_Edit.EmptyWidthMsg"),
                                          GetString("NewsletterTemplate_Edit.EmptyHeightMsg"),
                                          CMSContext.ResolveDialogUrl("~/CMSModules/Content/CMSDesk/Edit/SpellCheck.aspx"));

        ltlScript.Text = ScriptHelper.GetScript(varsScript);

        // Set fields to be checked by Spell Checker
        string spellCheckScript = string.Format("if (typeof(spellCheckFields)==='undefined') {{var spellCheckFields = new Array();}} spellCheckFields.push('{0}');",
                                                htmlTemplateBody.ClientID);

        ScriptHelper.RegisterStartupScript(this, typeof(string), this.ClientID, ScriptHelper.GetScript(spellCheckScript));

        // Set button properties
        imgSave.ImageUrl       = GetImageUrl("CMSModules/CMS_Content/EditMenu/save.png");
        imgSpellCheck.ImageUrl = GetImageUrl("CMSModules/CMS_Content/EditMenu/spellcheck.png");
        mSave                       = GetString("general.save");
        mSpellCheck                 = GetString("spellcheck.title");
        lnkSpellCheck.ToolTip       = GetString("EditMenu.SpellCheck");
        lnkSpellCheck.OnClientClick = "checkSpelling(spellURL); return false;";

        AttachmentTitle.TitleText = GetString("general.attachments");

        string currentEmailTemplate = GetString("NewsletterTemplate_Edit.NewItemCaption");

        EmailTemplate emailTemplateObj = null;

        // Get emailTemplate ID from querystring
        templateid = QueryHelper.GetInteger("templateid", 0);
        if (templateid > 0)
        {
            emailTemplateObj = EmailTemplateProvider.GetEmailTemplate(templateid);

            currentEmailTemplate = emailTemplateObj.TemplateDisplayName;

            macroSelectorElm.Resolver          = EmailTemplateMacros.NewsletterResolver;
            macroSelectorElm.JavaScripFunction = "InsertHTML";

            AttachmentList.ObjectID              = emailTemplateObj.TemplateID;
            AttachmentList.SiteID                = siteId;
            AttachmentList.ObjectType            = NewsletterObjectType.NEWSLETTERTEMPLATE;
            AttachmentList.Category              = MetaFileInfoProvider.OBJECT_CATEGORY_TEMPLATE;
            AttachmentList.AllowPasteAttachments = true;

            // Display editable region section only for e-mail templates of type "Issue template"
            if (emailTemplateObj.TemplateType == EmailTemplateType.Issue)
            {
                pnlEditableRegion.Visible       = true;
                btnInsertEditableRegion.Visible = true;
                lblInsertEditableRegion.Visible = true;
            }
            else
            {
                plcSubject.Visible = true;
            }

            // Init CSS styles every time during page load
            htmlTemplateBody.EditorAreaCSS = EmailTemplateProvider.GetStylesheetUrl(emailTemplateObj.TemplateName) + "&timestamp=" + DateTime.Now.Millisecond;
        }

        // Initializes page title control
        string[,] pageTitleTabs = new string[2, 3];
        pageTitleTabs[0, 0]     = GetString("NewsletterTemplate_Edit.ItemListLink");
        pageTitleTabs[0, 1]     = "~/CMSModules/Newsletters/Tools/Templates/NewsletterTemplate_List.aspx";
        pageTitleTabs[0, 2]     = "newslettersContent";
        pageTitleTabs[1, 0]     = currentEmailTemplate;
        pageTitleTabs[1, 1]     = string.Empty;
        pageTitleTabs[1, 2]     = string.Empty;
        PageTitle.Breadcrumbs   = pageTitleTabs;

        if (!RequestHelper.IsPostBack())
        {
            // Initialize dialog
            LoadData(emailTemplateObj);
            FillFieldsList(emailTemplateObj);

            // Initialize HTML editor
            InitHTMLEditor();

            // Show that the emailTemplate was created or updated successfully
            if (QueryHelper.GetBoolean("saved", false))
            {
                lblInfo.Visible = true;
                lblInfo.Text    = GetString("General.ChangesSaved");

                // Reload header if changes were saved
                if (TabMode)
                {
                    ScriptHelper.RefreshTabHeader(Page, null);
                }
            }
        }
    }