/// <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); }
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) + "×tamp=" + 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); } } } }