public void GetIssueType_Existing_Labels_FalsePositive() { var falsePositive = new Issue { Labels = new[] { new Label { Name = "Type: False Positive" } } }; IssueHelper.GetIssueType(falsePositive).Should().Be(IssueType.FalsePositive); }
public void GetIssueType_Case_Insensitive() { var task = new Issue { Labels = new[] { new Label { Name = "type: task" } } }; IssueHelper.GetIssueType(task).Should().Be(IssueType.Hidden); }
public void GetIssueType_Existing_Labels_Performance() { var falseNegative = new Issue { Labels = new[] { new Label { Name = "Type: Performance" } } }; IssueHelper.GetIssueType(falseNegative).Should().Be(IssueType.Performance); }
public void GetIssueType_Existing_Labels_BugFix() { var bug = new Issue { Labels = new[] { new Label { Name = "Type: Bug" } } }; IssueHelper.GetIssueType(bug).Should().Be(IssueType.BugFix); }
public void GetIssueType_Existing_Labels_NewRule() { var newFeature = new Issue { Labels = new[] { new Label { Name = "Type: New Feature" } } }; IssueHelper.GetIssueType(newFeature).Should().Be(IssueType.NewRule); }
public void GetIssueType_Existing_Labels_Improvement() { var improvement = new Issue { Labels = new[] { new Label { Name = "Type: Improvement" } } }; IssueHelper.GetIssueType(improvement).Should().Be(IssueType.Improvement); }
public void GetIssueType_Existing_Labels_Task() { var task = new Issue { Labels = new[] { new Label { Name = "Type: Task" } } }; IssueHelper.GetIssueType(task).Should().Be(IssueType.Hidden); }
public override void CheckTask() { if (!enableCheck) { return; } // +-----------------------------------------------------+ // | | Platform | Major | Minor | // +-----------------------------------------------------+ // | Windows 95 | Win32Windows | 4 | 0 | // | Windows 98 | Win32Windows | 4 | 10 | // | Windows Me | Win32Windows | 4 | 90 | // | Windows NT 4.0 | Win32NT | 4 | 0 | // | Windows 2000 | Win32NT | 5 | 0 | // | Windows XP | Win32NT | 5 | 1 | // | Windows 2003 | Win32NT | 5 | 2 | // | Windows Vista | Win32NT | 6 | 0 | // | Windows 2008 | Win32NT | 6 | 0 | // | Windows 7 | Win32NT | 6 | 1 | // | Windows 2008 R2 | Win32NT | 6 | 1 | // | Windows 8 | Win32NT | 6 | 2 | // | Windows 8.1 | Win32NT | 6 | 3 | // | Windows 10 | Win32NT | 10 | 0 | // +-----------------------------------------------------+ // // // Issue applies to windows 7 only. var version = IssueHelper.GetRealOSVersion(); if (version.Major != 6 || version.Minor != 1) { SetSeverity(IssueSeverity.None, 0, program); enableCheck = false; return; } // KB3033929 supplies wintrust.dll 6.1.7601.22948, we need this version or later. var fileVersion = IssueHelper.GetFileVersion(Environment.SpecialFolder.System, "wintrust.dll"); var installed = fileVersion >= new Version(6, 1, 7601, 22948); if (!installed) { var bits = Environment.Is64BitOperatingSystem ? "64-bit" : "32-bit"; SetSeverity( IssueSeverity.Critical, 1, string.Format("Old WinTrust {0}. Install {1} for Windows 7 {2}", fileVersion, program, bits) ); return; } SetSeverity(IssueSeverity.None); enableCheck = false; }
private void InitTestGroupSlider(IssueInfo parentIssue, ABTestInfo abTest, bool forceReload) { var variants = IssueHelper.GetIssueVariants(parentIssue, null); ucGroupSlider.Variants = variants; ucGroupSlider.NumberOfSubscribers = GetNumberOfSubscribers(parentIssue, variants); if (forceReload || !ucGroupSlider.Enabled) { ucGroupSlider.CurrentSize = abTest?.TestSizePercentage ?? DEFAULT_TEST_GROUP_SIZE_PERCENTAGE; } ucGroupSlider.ReloadData(forceReload); }
private string GetUniqueClicksRate(DataRowView rowView) { var issueSentEmails = DataHelper.GetIntValue(rowView.Row, "IssueSentEmails"); if (issueSentEmails == 0) { return string.Empty; } var issueId = ValidationHelper.GetInteger(DataHelper.GetDataRowViewValue(rowView, "IssueID"), 0); var clicks = IssueHelper.GetIssueTotalUniqueClicks(issueId); var delivered = GetDelivered(rowView.Row); return FormatRate(clicks, delivered); }
public override void CheckTask() { var installed = IssueHelper.IsInstalled(program1Rx, false); if (!installed) { SetSeverity( IssueSeverity.Critical, 1, string.Format("Install " + program1) ); return; } SetSeverity(IssueSeverity.None); }
/// <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(SubscriberInfo subscriber, NewsletterInfo news, SubscriberNewsletterInfo subscription, string siteName) { // Get global e-mail template with unsubscription request EmailTemplateInfo et = EmailTemplateProvider.GetEmailTemplate("newsletter.unsubscriptionrequest", siteName); if (et != null) { // Get subscriber member SortedDictionary <int, SubscriberInfo> subscribers = SubscriberInfoProvider.GetSubscribers(subscriber, 1, 0); foreach (KeyValuePair <int, SubscriberInfo> item in subscribers) { // Get 1st subscriber's member SubscriberInfo 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."); } }
public void GetIssueType_Multiple_Labels() { var task = new Issue { Labels = new[] { new Label { Name = "Type: False Positive" }, new Label { Name = "Type: Bug" } } }; // The first label determines the type IssueHelper.GetIssueType(task).Should().Be(IssueType.FalsePositive); }
/// <summary> /// Gets a clickable click links counter based on the values from datasource. /// </summary> /// <param name="rowView">A <see cref="DataRowView" /> that represents one row from UniGrid's source</param> private string GetUniqueClicks(DataRowView rowView) { var issueSentEmails = DataHelper.GetIntValue(rowView.Row, "IssueSentEmails"); if (issueSentEmails == 0) { return string.Empty; } var issueId = ValidationHelper.GetInteger(DataHelper.GetDataRowViewValue(rowView, "IssueID"), 0); var clicks = IssueHelper.GetIssueTotalUniqueClicks(issueId); if (clicks <= 0) { return ZERO; } var url = ApplicationUrlHelper.GetElementDialogUrl(ModuleName.NEWSLETTER, "Newsletter.Issue.Reports.Clicks", issueId); return $@"<a href=""#"" onclick=""modalDialog('{url}', 'NewsletterTrackedLinks', '1000px', '700px'); return false;"">{clicks}</a>"; }
/// <summary> /// Initializes controls /// </summary> protected void InitControls(bool forceReload) { grdElem.GridOptions.ShowSelection = ShowSelectionColumn; pMOut.Visible = EnableMailoutTimeSetting; if (EnableMailoutTimeSetting) { if (forceReload || (drpAllSelected.Items.Count <= 0)) { drpAllSelected.Items.Clear(); if (ShowSelectionColumn) { drpAllSelected.Items.Add(new ListItem(GetString("general.selectall"), DDLIST_SETALL)); drpAllSelected.Items.Add(new ListItem(GetString("newsletterissue_send.selected"), DDLIST_SETSELECTED)); } List <IssueABVariantItem> items = IssueHelper.GetIssueVariants(ParentIssueID, "IssueMailoutTime IS NULL"); if ((items != null) && (items.Count > 0)) { foreach (IssueABVariantItem item in items) { drpAllSelected.Items.Add(new ListItem(item.IssueVariantName, item.IssueID.ToString())); } } } // Hide entire panel if no variant available if (drpAllSelected.Items.Count <= 0) { pMOut.Visible = false; } } if (UseGroupingText) { pnlMailout.GroupingText = GetString("newsletterissue_send.schedulemailout"); } else { pnlMailout.GroupingText = GetString("newsletterissue_send.testresults"); } }
public override void CheckTask() { // This issue check applies only for 64-bit OS. if (!Environment.Is64BitOperatingSystem) { SetSeverity(IssueSeverity.None); return; } var installed = IssueHelper.IsInstalled(program1Rx, false); if (!installed) { SetSeverity( IssueSeverity.Critical, 1, string.Format("Install " + program1) ); return; } SetSeverity(IssueSeverity.None); }
/// <summary> /// Creates and sends unsubscription e-mail. /// </summary> /// <param name="subscriber">Subscriber to be unsubscribed</param> /// <param name="news">Newsletter object</param> /// <param name="siteName">Name of site that subscriber is being unsubscribed from</param> protected void SendUnsubscriptionRequest(SubscriberInfo subscriber, NewsletterInfo news, string siteName) { var emailTemplate = EmailTemplateProvider.GetEmailTemplate("newsletter.unsubscriptionrequest", siteName); if (emailTemplate == null) { EventLogProvider.LogEvent(EventType.ERROR, "UnsubscriptionRequest", "Unsubscription request e-mail template is missing."); return; } string body = emailTemplate.TemplateText; string plainBody = emailTemplate.TemplatePlainText; // Resolve newsletter macros (first name, last name etc.) var issueHelper = new IssueHelper(); if (issueHelper.LoadDynamicFields(subscriber, news, null, null, false, siteName, null, null, null)) { body = issueHelper.ResolveDynamicFieldMacros(body, news); plainBody = issueHelper.ResolveDynamicFieldMacros(plainBody, news); } // Create e-mail var subscriberEmailRetriever = Service <ISubscriberEmailRetriever> .Entry(); var emailMessage = new EmailMessage { EmailFormat = EmailFormatEnum.Default, From = EmailHelper.GetSender(emailTemplate, news.NewsletterSenderEmail), Recipients = subscriberEmailRetriever.GetSubscriberEmail(subscriber.SubscriberID), BccRecipients = emailTemplate.TemplateBcc, CcRecipients = emailTemplate.TemplateCc, Subject = ResHelper.LocalizeString(emailTemplate.TemplateSubject), Body = URLHelper.MakeLinksAbsolute(body), PlainTextBody = URLHelper.MakeLinksAbsolute(plainBody) }; // Add attachments and send e-mail EmailHelper.ResolveMetaFileImages(emailMessage, emailTemplate.TemplateID, EmailTemplateInfo.OBJECT_TYPE, ObjectAttachmentsCategories.TEMPLATE); EmailSender.SendEmail(siteName, emailMessage); }
protected void Page_Load(object sender, EventArgs e) { var issue = (IssueInfo)UIContext.EditedObject; if ((issue == null) || (issue.IssueSiteID != SiteContext.CurrentSiteID)) { return; } var newsletter = NewsletterInfoProvider.GetNewsletterInfo(issue.IssueNewsletterID); var issueHelper = new IssueHelper(); var script = newsletter.NewsletterType == EmailCommunicationTypeEnum.Newsletter ? GetPreviewScriptForNewsletter(issue, newsletter, issueHelper) : GetPreviewScriptForCampaign(issue, newsletter, issueHelper); ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "PreviewData", ScriptHelper.GetScript(script)); if (!RequestHelper.IsPostBack()) { ScriptHelper.RegisterStartupScript(this, typeof(string), "LoadPreview" + ClientID, ScriptHelper.GetScript("pageLoad();")); } }
private void InitHeaderActions() { var hdrActions = CurrentMaster.HeaderActions; hdrActions.ActionsList.Clear(); if (IssueEditingEnabled && !IssueHelper.IsWinnerSelected(Issue)) { hdrActions.ActionsList.Add(new SaveAction()); } if (IssueEditingEnabled && CanIssueBeSent) { var variants = GetIssueVariants(Issue); var variantNamesWithUnfilledRequiredWidgetProperties = GetVariantNamesWithUnfilledRequiredWidgetProperties(variants); var variantNamesWithMissingWidgetDefinition = GetVariantNamesWithMissingWidgetDefinition(variants); var isValidDefinition = !variantNamesWithUnfilledRequiredWidgetProperties.Any() && !variantNamesWithMissingWidgetDefinition.Any(); AddSendHeaderAction(hdrActions, isValidDefinition, ButtonStyle.Default); if (!isValidDefinition) { var invalidVariantNames = variantNamesWithUnfilledRequiredWidgetProperties.Union(variantNamesWithMissingWidgetDefinition); MessagesPlaceHolder.AddError(string.Format(GetString("newsletter.issue.send.variantwidgeterror"), string.Join(", ", invalidVariantNames))); } } if (IssueEditingEnabled) { hdrActions.ActionPerformed += hdrActions_OnActionPerformed; } hdrActions.ReloadData(); CurrentMaster.DisplayActionsPanel = true; }
/// <summary> /// Initializes the variants drop-down list or hides it if the issue has no variants. /// </summary> private void InitVariantDropDownList() { if (!NewsletterHelper.IsABTestingAvailable()) { return; } var variants = IssueHelper.GetIssueVariants(Issue) .Select(v => new ListItem(v.IssueVariantName, v.IssueID.ToString())).ToList(); if (variants.Any()) { foreach (var variant in variants) { drpVariantsSelector.Items.Add(variant); } drpVariantsSelector.SelectedValue = Issue.IssueID.ToString(); pnlTabs.AddCssClass("with-variants"); plcVariantSelection.Visible = true; } }
/// <summary> /// When dialog's OK button for new variant action is clicked. /// </summary> protected void btnSaveDialog_Click(object sender, EventArgs e) { if (String.IsNullOrWhiteSpace(txtVariantName.Text)) { errorMessage.Text = GetString("newsletter.variantdisplaynamemissing"); return; } try { var variantName = txtVariantName.Text.Truncate(VARIANT_NAME_SIZE); var newVariant = EmailABTestService.CreateVariant(variantName, Issue.IssueID); // If this is the first variant created (2 variants in total), make full refresh of the email builder in order to update related menu tabs var builderEventArgs = IssueHelper.GetIssueVariants(Issue).Count == 2 ? new EmailBuilderEventArgs() : new EmailBuilderEventArgs(Issue.IssueNewsletterID, newVariant.IssueID, 2); OnSave(builderEventArgs); } catch (InvalidOperationException exception) { Service.Resolve <IEventLogService>().LogException("Newsletter", "ADDVARIANT", exception); errorMessage.Text = GetString("emailbuilder.generalerror"); } }
/// <summary> /// Deletes an issue specified by its ID (if authorized). /// </summary> /// <param name="issueId">Issue's ID</param> private static void DeleteIssue(int issueId) { // Delete issue from database (if authorized) if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "authorissues")) { RedirectToCMSDeskAccessDenied("cms.newsletter", "authorissues"); } IssueInfo issue = IssueInfoProvider.GetIssueInfo(issueId); if (issue != null) { // Delete variant issues if any if (issue.IssueIsABTest && (issue.IssueVariantOfIssueID == 0)) { // Get all variants (children) and delete their mailout tasks List <IssueABVariantItem> variants = IssueHelper.GetIssueVariants(issue, null); IssueInfo issueVar = null; if ((variants != null) && (variants.Count > 0)) { foreach (IssueABVariantItem variant in variants) { issueVar = IssueInfoProvider.GetIssueInfo(variant.IssueID); if (issueVar != null) { IssueInfoProvider.DeleteMailoutTask(issueVar.IssueGUID, issueVar.IssueSiteID); } } } } // Delete issue IssueInfoProvider.DeleteMailoutTask(issue.IssueGUID, issue.IssueSiteID); IssueInfoProvider.DeleteIssueInfo(issue); } }
/// <summary> /// Initializes selector with variants of the main issue that is specified by its ID. /// </summary> /// <param name="issueId">Issue ID</param> protected void InitVariantSelector(int issueId) { if (drpVariants.Items.Count == 0) { if (AllowSelectAll) { // Add (all) option drpVariants.Items.Add(new ListItem(GetString("general.selectall"), "-1")); } // Get A/B test variants var variants = IssueHelper.GetIssueVariants(issueId); if (variants?.Count > 0) { // Initialize selector foreach (var variant in variants) { if (variant.IsWinner) { WinnerIssueID = variant.IssueID; drpVariants.Items.Add(new ListItem(variant.IssueVariantName + " " + GetString("newsletterabtest.winner"), mainIssueID.ToString())); } else { drpVariants.Items.Add(new ListItem(variant.IssueVariantName, variant.IssueID.ToString())); } } } if (!RequestHelper.IsPostBack() && drpVariants.Items.FindByValue(issueId.ToString()) != null) { // Preselect main issue drpVariants.SelectedValue = issueId.ToString(); } } }
/// <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(SubscriberInfo subscriber, NewsletterInfo news, SubscriberNewsletterInfo subscription, string siteName) { // Get global e-mail template with unsubscription request EmailTemplateInfo et = EmailTemplateProvider.GetEmailTemplate("newsletter.unsubscriptionrequest", siteName); if (et != null) { // Get subscriber member SortedDictionary<int, SubscriberInfo> subscribers = SubscriberInfoProvider.GetSubscribers(subscriber, 1, 0); foreach (KeyValuePair<int, SubscriberInfo> item in subscribers) { // Get 1st subscriber's member SubscriberInfo 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 static string GetPreviewSubject(IssueInfo issue, NewsletterInfo newsletter, IssueHelper issueHelper, SubscriberInfo subscriber, string siteName) { // Resolve dynamic field macros ({%FirstName%}, {%LastName%}, {%Email%}) return(issueHelper.LoadDynamicFields(subscriber, newsletter, null, issue, true, siteName, null, null, null) ? issueHelper.ResolveDynamicFieldMacros(issue.IssueSubject, newsletter, issue) : null); }
/// <summary> /// Loads content from specific newsletter template. /// </summary> private void LoadContent() { EmailTemplateInfo emailTemplate = EmailTemplateInfoProvider.GetEmailTemplateInfo(mTemplateID); 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; string region = null; string[] parts = null; string name = null; int width = 0; int height = 0; string toolbarLocation = "Out:CKEditorToolbar"; string toolbarSetName = "Newsletter"; int editRegStart = templateText.IndexOfCSafe("$$", textStart); int editRegEnd = 0; // Apply CSS e-mail template style HTMLHelper.AddToHeader(Page, CSSHelper.GetCSSFileLink(EmailTemplateInfoProvider.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) { editRegEnd = templateText.IndexOfCSafe("$$", editRegStart); if (editRegEnd >= 0) { region = templateText.Substring(editRegStart, editRegEnd - editRegStart); parts = (region + ":" + ":").Split(':'); try { name = parts[0]; if (!string.IsNullOrEmpty(name.Trim())) { width = ValidationHelper.GetInteger(parts[1], 0); 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 = toolbarLocation; editableRegion.RegionTitle = name; editableRegion.UseStylesheet = false; editableRegion.HTMLEditorCssStylesheet = EmailTemplateInfoProvider.GetStylesheetUrl(emailTemplate.TemplateName); if (!mReadOnly) { editableRegion.HtmlAreaToolbar = toolbarSetName; } else { editableRegion.HtmlAreaToolbar = "Disabled"; } CMSHtmlEditor editor = editableRegion.HtmlEditor; editor.AddExtraPlugin("CMSPlugins"); editor.AddExtraPlugin("autogrow"); editor.AutoGrowMinHeight = height; editor.LinkDialogConfig.UseFullURL = true; editor.QuickInsertConfig.UseFullURL = true; editor.ResolverName = "NewsletterResolver"; DialogConfiguration dialogConfig = editor.MediaDialogConfig; dialogConfig.UseFullURL = true; dialogConfig.MetaFileObjectID = (issue != null) ? issue.IssueID : 0; dialogConfig.MetaFileObjectType = (issue != null) && issue.IssueIsVariant ? NewsletterObjectType.NEWSLETTERISSUEVARIANT : NewsletterObjectType.NEWSLETTERISSUE; dialogConfig.MetaFileCategory = MetaFileInfoProvider.OBJECT_CATEGORY_ISSUE; dialogConfig.HideAttachments = false; editableRegion.LoadContent(ValidationHelper.GetString(regionsContents[name.ToLowerCSafe()], string.Empty)); plcContent.Controls.Add(editableRegion); textStart = editRegEnd + 2; } } catch { } } } editRegStart = templateText.IndexOfCSafe("$$", textStart); } before = new LiteralControl(); before.Text = URLHelper.MakeLinksAbsolute(templateText.Substring(textStart)); plcContent.Controls.Add(before); }
protected void Page_Load(object sender, EventArgs e) { InitGUI(); // Get issue ID from query string int newsletterIssueId = QueryHelper.GetInteger("issueid", 0); // Get Issue object Issue issue = IssueProvider.GetIssue(newsletterIssueId); if (issue == null) { lblError.Visible = true; lblError.Text = GetString("Newsletter_Issue_New_Preview.NoIssue"); return; } // Get specific number of subscribers subscribed to the newsletter string where = "SubscriberID IN (SELECT SubscriberID FROM Newsletter_SubscriberNewsletter WHERE NewsletterID=" + issue.IssueNewsletterID + " AND (SubscriptionApproved = 1 OR SubscriptionApproved IS NULL))"; DataSet subscribers = SubscriberProvider.GetSubscribers(where, null, MAX_PREVIEW_SUBSCRIBERS, null); string script; if (!DataHelper.DataSourceIsEmpty(subscribers)) { // Limit max subscribers count to number of rows int maxCount = subscribers.Tables[0].Rows.Count; // Generate javascript based on subscribers script = string.Format(@"newsletterIssueId ={0}; var guid = new Array({1}); var email = new Array({1}); var subject = new Array({1}); var subscribers = new Array(guid, email);", newsletterIssueId, maxCount); // Ensure correct subject culture string siteName = CMSContext.CurrentSiteName; string culture = CultureHelper.GetDefaultCulture(siteName); // Get newsletter object Newsletter news = NewsletterProvider.GetNewsletter(issue.IssueNewsletterID); // Get subject base string subjectBase = GetString("general.subject") + ResHelper.Colon; Subscriber subscriber = null; Subscriber sb = null; SortedDictionary<int, Subscriber> subMembers = null; string infoLine = null; string subject = null; IssueHelper ih = new IssueHelper(); for (int i = 0; i < maxCount; i++) { // Get subscriber subscriber = new Subscriber(subscribers.Tables[0].Rows[i]); if (subscriber != null) { // Insert subscriber GUID script = string.Format("{0} guid[{1}] = '{2}'; \n ", script, i, subscriber.SubscriberGUID); // Get subscriber's member (different for user, role or contact group subscribers) subMembers = SubscriberProvider.GetSubscribers(subscriber, 1, 0); foreach (KeyValuePair<int, Subscriber> item in subMembers) { // Get 1st subscriber's member sb = item.Value; if (sb != null) { // Create information line infoLine = ScriptHelper.GetString(sb.SubscriberEmail, false); // Add info about subscriber type if (sb.SubscriberType == SiteObjectType.USER) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.cms_user").ToLower()); } else if (sb.SubscriberType == SiteObjectType.ROLE) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.cms_role").ToLower()); } else if (sb.SubscriberType == PredefinedObjectType.CONTACTGROUP) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.om_contactgroup").ToLower()); } script = string.Format("{0} email[{1}] = '{2}'; \n ", script, i, infoLine); // Resolve dynamic field macros ({%FirstName%}, {%LastName%}, {%Email%}) if (ih.LoadDynamicFields(sb, news, null, issue, true, siteName, null, null, null)) { subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject); } // Create resolved subject subject = HTMLHelper.HTMLEncode(string.Format("{0} {1}", subjectBase, subject)); script = string.Format("{0}subject[{1}] = {2}; \n ", script, i, ScriptHelper.GetString(subject)); } } } } } else { // No subscribers? => hide 'prev' and 'next' link buttons pnlLinkButtons.Visible = false; // Generate void javascript script = string.Format(@"newsletterIssueId ={0}; var guid = new Array(1); var email = new Array(1); var subscribers = new Array(guid, email); guid[1] = 0; email[1] = 0;", newsletterIssueId); } ltlScript.Text = ScriptHelper.GetScript(script); if (!RequestHelper.IsPostBack()) { ScriptHelper.RegisterStartupScript(this, typeof(string), "LoadPreview" + ClientID, ScriptHelper.GetScript("pageLoad();")); } }
/// <summary> /// Creates and sends unsubscription e-mail. /// </summary> /// <param name="subscriber">Subscriber to be unsubscribed</param> /// <param name="news">Newsletter object</param> /// <param name="siteName">Name of site that subscriber is being unsubscribed from</param> protected void SendUnsubscriptionRequest(SubscriberInfo subscriber, NewsletterInfo news, string siteName) { var emailTemplate = EmailTemplateProvider.GetEmailTemplate("newsletter.unsubscriptionrequest", siteName); if (emailTemplate == null) { EventLogProvider.LogEvent(EventType.ERROR, "UnsubscriptionRequest", "Unsubscription request e-mail template is missing."); return; } string body = emailTemplate.TemplateText; string plainBody = emailTemplate.TemplatePlainText; // Resolve newsletter macros (first name, last name etc.) var issueHelper = new IssueHelper(); if (issueHelper.LoadDynamicFields(subscriber, news, null, null, false, siteName, null, null, null)) { body = issueHelper.ResolveDynamicFieldMacros(body, news); plainBody = issueHelper.ResolveDynamicFieldMacros(plainBody, news); } // Create e-mail var subscriberEmailRetriever = Service<ISubscriberEmailRetriever>.Entry(); var emailMessage = new EmailMessage { EmailFormat = EmailFormatEnum.Default, From = EmailHelper.GetSender(emailTemplate, news.NewsletterSenderEmail), Recipients = subscriberEmailRetriever.GetSubscriberEmail(subscriber.SubscriberID), BccRecipients = emailTemplate.TemplateBcc, CcRecipients = emailTemplate.TemplateCc, Subject = ResHelper.LocalizeString(emailTemplate.TemplateSubject), Body = URLHelper.MakeLinksAbsolute(body), PlainTextBody = URLHelper.MakeLinksAbsolute(plainBody) }; // Add attachments and send e-mail EmailHelper.ResolveMetaFileImages(emailMessage, emailTemplate.TemplateID, EmailTemplateInfo.OBJECT_TYPE, ObjectAttachmentsCategories.TEMPLATE); EmailSender.SendEmail(siteName, emailMessage); }
protected void Page_Load(object sender, EventArgs e) { // Get Issue object IssueInfo issue = (IssueInfo)CMSContext.EditedObject; if ((issue == null) || (issue.IssueSiteID != CMSContext.CurrentSiteID)) { return; } // Get newsletter object NewsletterInfo news = NewsletterInfoProvider.GetNewsletterInfo(issue.IssueNewsletterID); string subject = null; IssueHelper ih = new IssueHelper(); string siteName = CMSContext.CurrentSiteName; InitGUI(); // Get specific number of subscribers subscribed to the newsletter string where = "SubscriberID IN (SELECT SubscriberID FROM Newsletter_SubscriberNewsletter WHERE NewsletterID=" + issue.IssueNewsletterID + " AND (SubscriptionApproved=1 OR SubscriptionApproved IS NULL) AND (SubscriptionEnabled=1 OR SubscriptionEnabled IS NULL))"; DataSet subscribers = SubscriberInfoProvider.GetSubscribers(where, null, MAX_PREVIEW_SUBSCRIBERS, null); string script; if (!DataHelper.DataSourceIsEmpty(subscribers)) { // Limit max subscribers count to number of rows int maxCount = subscribers.Tables[0].Rows.Count; // Generate javascript based on subscribers script = string.Format( @"var currentSubscriberIndex = 0; var newsletterIssueId ={0}; var guid = new Array({1}); var email = new Array({1}); var subject = new Array({1}); var subscribers = new Array(guid, email);", issue.IssueID, maxCount); SubscriberInfo subscriber = null; SubscriberInfo sbMember = null; SortedDictionary<int, SubscriberInfo> subMembers = null; string infoLine = null; for (int i = 0; i < maxCount; i++) { // Get subscriber subscriber = new SubscriberInfo(subscribers.Tables[0].Rows[i]); if (subscriber != null) { // Insert subscriber GUID script = string.Format("{0} guid[{1}] = '{2}'; \n ", script, i, subscriber.SubscriberGUID); // Get subscriber's member (different for user, role or contact group subscribers) subMembers = SubscriberInfoProvider.GetSubscribers(subscriber, 1, 0, issue.IssueNewsletterID); if ((subMembers != null) && (subMembers.Count > 0)) { foreach (KeyValuePair<int, SubscriberInfo> item in subMembers) { // Get 1st subscriber's member sbMember = item.Value; if (sbMember != null) { // Create information line infoLine = ScriptHelper.GetString(sbMember.SubscriberEmail, false); // Add info about subscriber type if (sbMember.SubscriberType.EqualsCSafe(SiteObjectType.USER, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.cms_user").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(SiteObjectType.ROLE, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.cms_role").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACTGROUP, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.om_contactgroup").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACT, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.om_contact").ToLowerCSafe()); } script = string.Format("{0}email[{1}] = '{2}'; \n ", script, i, infoLine); // Resolve dynamic field macros ({%FirstName%}, {%LastName%}, {%Email%}) if (ih.LoadDynamicFields(sbMember, news, null, issue, true, siteName, null, null, null)) { subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject); } // Create resolved subject script = string.Format("{0}subject[{1}] = {2}; \n ", script, i, ScriptHelper.GetString(HTMLHelper.HTMLEncode(subject))); } } } else { script = string.Format("{0}email[{1}] = '{2}'; \n ", script, i, "(N/A)"); // Resolve dynamic field macros (newsletter and issue) if (ih.LoadDynamicFields(null, news, null, issue, true, siteName, null, null, null)) { subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject); } // Create resolved subject script = string.Format("{0}subject[{1}] = {2}; \n ", script, i, ScriptHelper.GetString(HTMLHelper.HTMLEncode(subject))); } } } } else { // Resolve dynamic field macros ({%FirstName%}, {%LastName%}, {%Email%}) in subject if (ih.LoadDynamicFields(null, news, null, issue, true, siteName, null, null, null)) { subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject); } // Generate void javascript script = string.Format( @"var currentSubscriberIndex = 0; var newsletterIssueId ={0}; var guid = new Array(1); var email = new Array(1); var subject = new Array(1); subject[0] = '{1}'; var subscribers = new Array(guid, email); guid[0] = 0; email[0] = '(N/A)';", issue.IssueID, subject); } ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "PreviewData", ScriptHelper.GetScript(script)); if (!RequestHelper.IsPostBack()) { ScriptHelper.RegisterStartupScript(this, typeof(string), "LoadPreview" + ClientID, ScriptHelper.GetScript("pageLoad();")); } }
public Query_recpt_recordFlow(IssueHelper issueHelp) { base.issueHelp = issueHelp; }
protected void Page_Load(object sender, EventArgs e) { // Get Issue object IssueInfo issue = (IssueInfo)UIContext.EditedObject; if ((issue == null) || (issue.IssueSiteID != SiteContext.CurrentSiteID)) { return; } // Get newsletter object NewsletterInfo news = NewsletterInfoProvider.GetNewsletterInfo(issue.IssueNewsletterID); string subject = null; IssueHelper ih = new IssueHelper(); string siteName = SiteContext.CurrentSiteName; // Get specific number of subscribers subscribed to the newsletter DataSet subscribers = SubscriberInfoProvider .GetSubscribers() .TopN(MAX_PREVIEW_SUBSCRIBERS) .WhereIn("SubscriberID", new IDQuery(SubscriberNewsletterInfo.OBJECT_TYPE, "SubscriberID") .WhereEquals("NewsletterID", issue.IssueNewsletterID) .Where(w => w.WhereTrue("SubscriptionApproved") .Or() .WhereNull("SubscriptionApproved")) .Where(w => w.WhereTrue("SubscriptionEnabled") .Or() .WhereNull("SubscriptionEnabled")) ); string script; if (!DataHelper.DataSourceIsEmpty(subscribers)) { // Limit max subscribers count to number of rows int maxCount = subscribers.Tables[0].Rows.Count; // Generate javascript based on subscribers script = string.Format( @"var currentSubscriberIndex = 0; var newsletterIssueId ={0}; var guid = new Array({1}); var email = new Array({1}); var subject = new Array({1}); var subscribers = new Array(guid, email);", issue.IssueID, maxCount); for (int i = 0; i < maxCount; i++) { // Get subscriber SubscriberInfo subscriber = new SubscriberInfo(subscribers.Tables[0].Rows[i]); // Insert subscriber GUID script = string.Format("{0} guid[{1}] = '{2}'; \n ", script, i, subscriber.SubscriberGUID); // Get subscriber's member (different for user, role or contact group subscribers) SortedDictionary<int, SubscriberInfo> subMembers = SubscriberInfoProvider.GetSubscribers(subscriber, 1, 0, issue.IssueNewsletterID); if ((subMembers != null) && (subMembers.Count > 0)) { foreach (KeyValuePair<int, SubscriberInfo> item in subMembers) { // Get 1st subscriber's member SubscriberInfo sbMember = item.Value; if (sbMember != null) { // Create information line string infoLine = ScriptHelper.GetString(sbMember.SubscriberEmail, false); // Add info about subscriber type if (sbMember.SubscriberType.EqualsCSafe(UserInfo.OBJECT_TYPE, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.cms_user").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(RoleInfo.OBJECT_TYPE, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.cms_role").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACTGROUP, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.om_contactgroup").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(PredefinedObjectType.PERSONA, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.personas_persona").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACT, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.om_contact").ToLowerCSafe()); } script = string.Format("{0}email[{1}] = '{2}'; \n ", script, i, HTMLHelper.HTMLEncode(infoLine)); // Resolve dynamic field macros ({%FirstName%}, {%LastName%}, {%Email%}) if (ih.LoadDynamicFields(sbMember, news, null, issue, true, siteName, null, null, null)) { subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject, news, issue); } // Create resolved subject script = string.Format("{0}subject[{1}] = {2}; \n ", script, i, ScriptHelper.GetString(HTMLHelper.HTMLEncode(subject))); } } } else { // Get generic name for external subscribers var related = BaseAbstractInfoProvider.GetInfoById(subscriber.SubscriberType, subscriber.SubscriberRelatedID); script = string.Format("{0}email[{1}] = '{2}'; \n ", script, i, HTMLHelper.HTMLEncode(TypeHelper.GetNiceObjectTypeName(subscriber.SubscriberType) + " \"" + HTMLHelper.HTMLEncode(related.Generalized.ObjectDisplayName) + "\"")); // Resolve dynamic field macros (newsletter and issue) if (ih.LoadDynamicFields(null, news, null, issue, true, siteName, null, null, null)) { subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject, news, issue); } // Create resolved subject script = string.Format("{0}subject[{1}] = {2}; \n ", script, i, ScriptHelper.GetString(HTMLHelper.HTMLEncode(subject))); } } } else { // Resolve dynamic field macros ({%FirstName%}, {%LastName%}, {%Email%}) in subject if (ih.LoadDynamicFields(null, news, null, issue, true, siteName, null, null, null)) { subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject, news, issue); } // Generate void javascript script = string.Format( @"var currentSubscriberIndex = 0; var newsletterIssueId ={0}; var guid = new Array(1); var email = new Array(1); var subject = new Array(1); subject[0] = '{1}'; var subscribers = new Array(guid, email); guid[0] = 0; email[0] = '(N/A)';", issue.IssueID, HTMLHelper.HTMLEncode(subject)); } ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "PreviewData", ScriptHelper.GetScript(script)); if (!RequestHelper.IsPostBack()) { ScriptHelper.RegisterStartupScript(this, typeof(string), "LoadPreview" + ClientID, ScriptHelper.GetScript("pageLoad();")); } }
private static bool AreAllVariantsSent(IssueInfo parentIssue) { var variants = IssueHelper.GetIssueVariants(parentIssue); return(AreAllVariantsSent(variants)); }
private string GetPreviewScriptForCampaign(IssueInfo issue, NewsletterInfo newsletter, IssueHelper issueHelper) { string currentSiteName = SiteContext.CurrentSiteName; var output = new StringBuilder(); var recipients = issue.GetRecipientsProvider() .GetMarketableRecipients() .TopN(MAX_PREVIEW_SUBSCRIBERS) .ToList(); if (!recipients.Any()) { return(InitializePreviewScriptForZeroSubscribers(issue, GetPreviewSubject(issue, newsletter, issueHelper, null, currentSiteName))); } output.AppendLine(InitializePreviewScript(issue, recipients.Count)); for (int index = 0; index < recipients.Count; index++) { var recipient = recipients[index]; var dummySubscriber = new SubscriberInfo { SubscriberFirstName = recipient.ContactFirstName, SubscriberLastName = recipient.ContactLastName, SubscriberEmail = recipient.ContactEmail }; output.AppendFormat("guid[{0}] = '{1}';", index, recipient.ContactGUID); output.AppendFormat("email[{0}] = '{1}';", index, recipient.ContactEmail); output.AppendFormat("subject[{0}] = {1};", index, ScriptHelper.GetString(HTMLHelper.HTMLEncode(GetPreviewSubject(issue, newsletter, issueHelper, dummySubscriber, currentSiteName)))); } return(output.ToString()); }
protected void Page_Load(object sender, EventArgs e) { // Get Issue object IssueInfo issue = (IssueInfo)UIContext.EditedObject; if ((issue == null) || (issue.IssueSiteID != SiteContext.CurrentSiteID)) { return; } // Get newsletter object NewsletterInfo news = NewsletterInfoProvider.GetNewsletterInfo(issue.IssueNewsletterID); string subject = null; IssueHelper ih = new IssueHelper(); string siteName = SiteContext.CurrentSiteName; // Get specific number of subscribers subscribed to the newsletter DataSet subscribers = SubscriberInfoProvider .GetSubscribers() .TopN(MAX_PREVIEW_SUBSCRIBERS) .WhereIn("SubscriberID", new IDQuery(SubscriberNewsletterInfo.OBJECT_TYPE, "SubscriberID") .WhereEquals("NewsletterID", issue.IssueNewsletterID) .Where(w => w.WhereTrue("SubscriptionApproved") .Or() .WhereNull("SubscriptionApproved")) .Where(w => w.WhereTrue("SubscriptionEnabled") .Or() .WhereNull("SubscriptionEnabled")) ); string script; if (!DataHelper.DataSourceIsEmpty(subscribers)) { // Limit max subscribers count to number of rows int maxCount = subscribers.Tables[0].Rows.Count; // Generate javascript based on subscribers script = string.Format( @"var currentSubscriberIndex = 0; var newsletterIssueId ={0}; var guid = new Array({1}); var email = new Array({1}); var subject = new Array({1}); var subscribers = new Array(guid, email);", issue.IssueID, maxCount); for (int i = 0; i < maxCount; i++) { // Get subscriber SubscriberInfo subscriber = new SubscriberInfo(subscribers.Tables[0].Rows[i]); // Insert subscriber GUID script = string.Format("{0} guid[{1}] = '{2}'; \n ", script, i, subscriber.SubscriberGUID); // Get subscriber's member (different for user, role or contact group subscribers) SortedDictionary <int, SubscriberInfo> subMembers = SubscriberInfoProvider.GetSubscribers(subscriber, 1, 0, issue.IssueNewsletterID); if ((subMembers != null) && (subMembers.Count > 0)) { foreach (KeyValuePair <int, SubscriberInfo> item in subMembers) { // Get 1st subscriber's member SubscriberInfo sbMember = item.Value; if (sbMember != null) { // Create information line string infoLine = ScriptHelper.GetString(sbMember.SubscriberEmail, false); // Add info about subscriber type if (sbMember.SubscriberType.EqualsCSafe(UserInfo.OBJECT_TYPE, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.cms_user").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(RoleInfo.OBJECT_TYPE, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.cms_role").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACTGROUP, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.om_contactgroup").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(PredefinedObjectType.PERSONA, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.personas_persona").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACT, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.om_contact").ToLowerCSafe()); } script = string.Format("{0}email[{1}] = '{2}'; \n ", script, i, HTMLHelper.HTMLEncode(infoLine)); // Resolve dynamic field macros ({%FirstName%}, {%LastName%}, {%Email%}) if (ih.LoadDynamicFields(sbMember, news, null, issue, true, siteName, null, null, null)) { subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject, news, issue); } // Create resolved subject script = string.Format("{0}subject[{1}] = {2}; \n ", script, i, ScriptHelper.GetString(HTMLHelper.HTMLEncode(subject))); } } } else { // Get generic name for external subscribers var related = BaseAbstractInfoProvider.GetInfoById(subscriber.SubscriberType, subscriber.SubscriberRelatedID); script = string.Format("{0}email[{1}] = '{2}'; \n ", script, i, HTMLHelper.HTMLEncode(TypeHelper.GetNiceObjectTypeName(subscriber.SubscriberType) + " \"" + HTMLHelper.HTMLEncode(related.Generalized.ObjectDisplayName) + "\"")); // Resolve dynamic field macros (newsletter and issue) if (ih.LoadDynamicFields(null, news, null, issue, true, siteName, null, null, null)) { subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject, news, issue); } // Create resolved subject script = string.Format("{0}subject[{1}] = {2}; \n ", script, i, ScriptHelper.GetString(HTMLHelper.HTMLEncode(subject))); } } } else { // Resolve dynamic field macros ({%FirstName%}, {%LastName%}, {%Email%}) in subject if (ih.LoadDynamicFields(null, news, null, issue, true, siteName, null, null, null)) { subject = ih.ResolveDynamicFieldMacros(issue.IssueSubject, news, issue); } // Generate void javascript script = string.Format( @"var currentSubscriberIndex = 0; var newsletterIssueId ={0}; var guid = new Array(1); var email = new Array(1); var subject = new Array(1); subject[0] = '{1}'; var subscribers = new Array(guid, email); guid[0] = 0; email[0] = '(N/A)';", issue.IssueID, HTMLHelper.HTMLEncode(subject)); } ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "PreviewData", ScriptHelper.GetScript(script)); if (!RequestHelper.IsPostBack()) { ScriptHelper.RegisterStartupScript(this, typeof(string), "LoadPreview" + ClientID, ScriptHelper.GetScript("pageLoad();")); } }
private string GetPreviewScriptForNewsletter(IssueInfo issue, NewsletterInfo newsletter, IssueHelper issueHelper) { string script; string siteName = SiteContext.CurrentSiteName; // Get specific number of subscribers subscribed to the newsletter DataSet subscribers = SubscriberInfoProvider .GetSubscribers() .TopN(MAX_PREVIEW_SUBSCRIBERS) .WhereIn("SubscriberID", new IDQuery(SubscriberNewsletterInfo.OBJECT_TYPE, "SubscriberID") .WhereEquals("NewsletterID", issue.IssueNewsletterID) .Where(w => w.WhereTrue("SubscriptionApproved") .Or() .WhereNull("SubscriptionApproved"))); if (!DataHelper.DataSourceIsEmpty(subscribers)) { // Limit max subscribers count to number of rows int maxCount = subscribers.Tables[0].Rows.Count; // Generate javascript based on subscribers script = InitializePreviewScript(issue, maxCount); for (int i = 0; i < maxCount; i++) { // Get subscriber SubscriberInfo subscriber = new SubscriberInfo(subscribers.Tables[0].Rows[i]); // Insert subscriber GUID script = string.Format("{0} guid[{1}] = '{2}'; \n ", script, i, subscriber.SubscriberGUID); // Get subscriber's member SortedDictionary <int, SubscriberInfo> subMembers = SubscriberInfoProvider.GetSubscribers(subscriber, 1); if ((subMembers != null) && (subMembers.Count > 0)) { foreach (KeyValuePair <int, SubscriberInfo> item in subMembers) { // Get 1st subscriber's member SubscriberInfo sbMember = item.Value; if (sbMember != null) { // Create information line string infoLine = ScriptHelper.GetString(sbMember.SubscriberEmail, false); // Add info about subscriber type if (sbMember.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACTGROUP, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.om_contactgroup").ToLowerCSafe()); } else if (sbMember.SubscriberType.EqualsCSafe(PredefinedObjectType.CONTACT, true)) { infoLine = string.Format("{0} ({1})", infoLine, GetString("objecttype.om_contact").ToLowerCSafe()); } script = string.Format("{0}email[{1}] = '{2}'; \n ", script, i, HTMLHelper.HTMLEncode(infoLine)); // Create resolved subject script = string.Format("{0}subject[{1}] = {2}; \n ", script, i, ScriptHelper.GetString(HTMLHelper.HTMLEncode(GetPreviewSubject(issue, newsletter, issueHelper, sbMember, siteName)))); } } } else { // Get generic name for external subscribers var related = BaseAbstractInfoProvider.GetInfoById(subscriber.SubscriberType, subscriber.SubscriberRelatedID); script = string.Format("{0}email[{1}] = '{2}'; \n ", script, i, HTMLHelper.HTMLEncode(TypeHelper.GetNiceObjectTypeName(subscriber.SubscriberType) + " \"" + HTMLHelper.HTMLEncode(related.Generalized.ObjectDisplayName) + "\"")); // Create resolved subject return(string.Format("{0}subject[{1}] = {2}; \n ", script, i, ScriptHelper.GetString(HTMLHelper.HTMLEncode(GetPreviewSubject(issue, newsletter, issueHelper, null, siteName))))); } } } else { return(InitializePreviewScriptForZeroSubscribers(issue, GetPreviewSubject(issue, newsletter, issueHelper, null, siteName))); } return(script); }
protected object grdElem_OnExternalDataBound(object sender, string sourceName, object parameter) { switch (sourceName) { case "IssueVariantName": { DataRowView drv = (DataRowView)parameter; string result = ValidationHelper.GetString(drv["IssueVariantName"], string.Empty); // Issue has not been sent yet => get mail out time from scheduled task if (ValidationHelper.GetInteger(drv["IssueID"], 0) == WinnerIssueID) { result += " " + GetString("newsletterabtest.winner"); } return(result); } case "MailoutTime": { string result = null; DataRowView drv = (DataRowView)parameter; DateTime dt = ValidationHelper.GetDateTime(drv["IssueMailoutTime"], DateTimeHelper.ZERO_TIME); if (dt == DateTimeHelper.ZERO_TIME) { // Issue has not been sent yet => get mail out time from scheduled task int taskId = ValidationHelper.GetInteger(drv["IssueScheduledTaskID"], 0); TaskInfo task = TaskInfoProvider.GetTaskInfo(taskId); if (task != null) { if (task.TaskNextRunTime < DateTime.Now) { result = String.Format("{0} {1}", task.TaskNextRunTime.ToString(), GetString("newsletterissue_send.asap")); } else { result = task.TaskNextRunTime.ToString(); } dt = task.TaskNextRunTime; } else { result = GetString("general.na"); } } else { result = dt.ToString(); } if (mHighestMailoutTime < dt) { mHighestMailoutTime = dt; } return(result); } case "IssueStatus": IssueStatusEnum status = IssueStatusEnum.Idle; if ((parameter != DBNull.Value) && (parameter != null)) { status = (IssueStatusEnum)parameter; } return(IssueHelper.GetStatusFriendlyName(status, null)); case "IssueOpenedEmails": return(GetOpenedEmails(parameter as DataRowView)); case "UniqueClicks": int issueId = ValidationHelper.GetInteger(parameter, 0); return(GetUniqueClicks(IssueHelper.GetIssueTotalUniqueClicks(issueId), issueId)); } return(parameter); }