private string GetFormConsentMacroRule() { var rule = $@"{{%Rule(""(Contact.AgreedWithConsent(""{FormConsentGenerator.CONSENT_NAME}""))"", "" <rules><r pos =\""0\"" par=\""\"" op=\""and\"" n=\""CMSContactHasAgreedWithConsent\"" > <p n=\""consent\""><t>{FormConsentGenerator.CONSENT_DISPLAY_NAME}</t><v>{FormConsentGenerator.CONSENT_NAME}</v><r>0</r><d>select consent</d><vt>text</vt><tv>0</tv></p> <p n=\""_perfectum\""><t>has</t><v></v><r>0</r><d>select operation</d><vt>text</vt><tv>0</tv></p></r></rules>"")%}}"; return(MacroSecurityProcessor.AddSecurityParameters(rule, MacroIdentityOption.FromUserInfo(UserInfoProvider.AdministratorUser), null)); }
/// <summary> /// Creates new or updates existing newsletter issue. /// </summary> public bool Save() { if (validated || IsValid()) { IssueInfo issue = null; if (IssueID == 0) { // Initialize new issue issue = new IssueInfo(); issue.IssueUnsubscribed = 0; issue.IssueSentEmails = 0; issue.IssueNewsletterID = NewsletterID; issue.IssueSiteID = SiteContext.CurrentSiteID; } else { issue = IssueInfoProvider.GetIssueInfo(IssueID); } if (issue != null) { issue.IssueTemplateID = TemplateID; issue.IssueShowInNewsletterArchive = chkShowInArchive.Checked; issue.IssueSenderName = txtSenderName.Text.Trim(); issue.IssueSenderEmail = txtSenderEmail.Text.Trim(); // Saves content of editable region(s) // Get content from hidden field string content = hdnIssueContent.Value; string[] regions = null; if (!string.IsNullOrEmpty(content)) { // Split content for each region, separator is '#|#' regions = content.Split(new string[] { "#|#" }, StringSplitOptions.RemoveEmptyEntries); } issue.IssueText = IssueHelper.GetContentXML(regions); // Remove '#' from macros if included txtSubject.Text = txtSubject.Text.Trim().Replace("#%}", "%}"); // Sign macros if included in the subject issue.IssueSubject = MacroSecurityProcessor.AddSecurityParameters(txtSubject.Text, MembershipContext.AuthenticatedUser.UserName, null); // Save issue IssueInfoProvider.SetIssueInfo(issue); // Update IssueID IssueID = issue.IssueID; return(true); } } return(false); }
/// <summary> /// Creates new or updates existing newsletter issue. /// </summary> protected void btnSubmit_Click(object sender, EventArgs e) { if (IsValid()) { IssueInfo issue = IssueInfoProvider.GetIssueInfo(IssueID); if ((issue != null) && Enabled) { if (IsDisplayNameFieldEnabled(issue)) { issue.IssueDisplayName = txtDisplayName.Text.Trim(); } issue.IssueTemplateID = TemplateID; issue.IssueSenderName = txtSenderName.Text.Trim(); issue.IssueSenderEmail = txtSenderEmail.Text.Trim(); issue.IssuePreheader = txtPreheader.Text.Trim(); issue.IssueUseUTM = chkIssueUseUTM.Checked; issue.IssueUTMSource = Normalize(txtIssueUTMSource.Text.Trim()); if (radUTMCampaignNew.Checked) { var normalizedUtmCampaign = Normalize(mUTMCampaignTextBox.Text.Trim()); if (string.IsNullOrEmpty(normalizedUtmCampaign)) { normalizedUtmCampaign = Normalize(Newsletter.NewsletterName); } mUTMCampaignTextBox.Text = issue.IssueUTMCampaign = normalizedUtmCampaign; } else { issue.IssueUTMCampaign = selectorUTMCampaign.Value.ToString().ToLower(CultureInfo.CurrentCulture); } PostProcessVariants(issue); // Remove '#' from macros if included txtSubject.Text = txtSubject.Text.Trim().Replace("#%}", "%}"); // Sign macros if included in the subject issue.IssueSubject = MacroSecurityProcessor.AddSecurityParameters(txtSubject.Text, MacroIdentityOption.FromUserInfo(MembershipContext.AuthenticatedUser), null); // Save issue IssueInfoProvider.SetIssueInfo(issue); // Update IssueID IssueID = issue.IssueID; OnSave(new EmailBuilderEventArgs(NewsletterID, IssueID)); } } }
private void GenerateBannerPersonalizationVariantsMacrosAndEnableVariants() { var personalizationVariant1 = ContentPersonalizationVariantInfoProvider.GetContentPersonalizationVariant( "TheCafeOwnerBannerVariant_dd20f145-3779-4748-9bc8-d383eecfbd15"); var personalizationVariant2 = ContentPersonalizationVariantInfoProvider.GetContentPersonalizationVariant( "TheCoffeeGeekBannerVariant_d862b458-e5a5-432f-a3fe-60f495acad9f"); if (personalizationVariant1 == null || personalizationVariant2 == null || personalizationVariant1.VariantEnabled || personalizationVariant2.VariantEnabled || personalizationVariant1.VariantDisplayCondition != "{%// Macro will be added by generator%}" || personalizationVariant2.VariantDisplayCondition != "{%// Macro will be added by generator%}") { return; } var personaInfoByCodeName1 = PersonaInfoProvider.GetPersonaInfoByCodeName(PERSONA_CAFE_OWNER); var personaInfoByCodeName2 = PersonaInfoProvider.GetPersonaInfoByCodeName(PERSONA_COFEE_GEEK); if (personaInfoByCodeName1 == null || personaInfoByCodeName2 == null) { return; } var identityOption = MacroIdentityOption.FromUserInfo(UserInfoProvider.AdministratorUser); personalizationVariant1.VariantDisplayCondition = MacroSecurityProcessor.AddSecurityParameters( string.Format( "{{%Rule(\"(Contact.IsInPersona(\\\"{0}\\\"))\", \"<rules><r pos=\\\"0\\\" par=\\\"\\\" op=\\\"and\\\" n=\\\"ContactIsInPersona\\\" ><p n=\\\"_is\\\"><t>is</t><v></v><r>0</r><d>select operation</d><vt>text</vt><tv>0</tv></p><p n=\\\"personaguid\\\"><t>{1}</t><v>{0}</v><r>1</r><d>select persona</d><vt>text</vt><tv>0</tv></p></r></rules>\")%}}", personaInfoByCodeName1.PersonaGUID, personaInfoByCodeName1.PersonaDisplayName), identityOption, null); personalizationVariant2.VariantDisplayCondition = MacroSecurityProcessor.AddSecurityParameters( string.Format( "{{%Rule(\"(Contact.IsInPersona(\\\"{0}\\\"))\", \"<rules><r pos=\\\"0\\\" par=\\\"\\\" op=\\\"and\\\" n=\\\"ContactIsInPersona\\\" ><p n=\\\"_is\\\"><t>is</t><v></v><r>0</r><d>select operation</d><vt>text</vt><tv>0</tv></p><p n=\\\"personaguid\\\"><t>{1}</t><v>{0}</v><r>1</r><d>select persona</d><vt>text</vt><tv>0</tv></p></r></rules>\")%}}", personaInfoByCodeName2.PersonaGUID, personaInfoByCodeName2.PersonaDisplayName), identityOption, null); personalizationVariant1.VariantEnabled = true; personalizationVariant2.VariantEnabled = true; ContentPersonalizationVariantInfoProvider.SetContentPersonalizationVariant(personalizationVariant1); ContentPersonalizationVariantInfoProvider.SetContentPersonalizationVariant(personalizationVariant2); }
/// <summary> /// Loads data from textboxes and store them to data collection /// </summary> private void LoadData() { data.Clear(); var authenticatedUserIdentityOption = MacroIdentityOption.FromUserInfo(MembershipContext.AuthenticatedUser); foreach (String key in Request.Form.AllKeys) { if ((key != null) && key.StartsWithCSafe(UniqueID + "$tk")) { String value = Request.Form[key.Replace(UniqueID + "$tk", UniqueID + "$tv")]; // Sign the macro value = MacroSecurityProcessor.AddSecurityParameters(value, authenticatedUserIdentityOption, null); String k = Request.Form[key]; if (!IsValidKey(k)) { invalidKey = k; k = INVALIDTOKEN; } data.SetValue(k, value); } } // Add data from new field String newValue = Request.Form[UniqueID + "$utv_newvalue"]; String newKey = Request.Form[UniqueID + "$utk_newkey"]; if (!String.IsNullOrEmpty(newValue) || !String.IsNullOrEmpty(newKey)) { if (!IsValidKey(newKey)) { isNewValid = false; return; } // Sign the macro newValue = MacroSecurityProcessor.AddSecurityParameters(newValue, authenticatedUserIdentityOption, null); data.SetValue(newKey, newValue); } }
private static ContactGroupInfo CreateContactGroup(PersonaInfo persona) { var contactGroupInfo = ContactGroupInfoProvider.GetContactGroupInfo(CoffeeGeekPersonaContactGroupName); if (contactGroupInfo != null) { ContactGroupInfoProvider.DeleteContactGroupInfo(contactGroupInfo); } var groupObj = new ContactGroupInfo(); groupObj.ContactGroupDisplayName = "Is in persona 'Martina, the Coffee Geek'"; groupObj.ContactGroupName = CoffeeGeekPersonaContactGroupName; groupObj.ContactGroupEnabled = true; var str = MacroSecurityProcessor.AddSecurityParameters( string.Format( "{{%Rule(\"(Contact.IsInPersona(\\\"{0}\\\"))\", \"<rules><r pos=\\\"0\\\" par=\\\"\\\" op=\\\"and\\\" n=\\\"ContactIsInPersona\\\" ><p n=\\\"_is\\\"><t>is</t><v></v><r>0</r><d>select operation</d><vt>text</vt><tv>0</tv></p><p n=\\\"personaguid\\\"><t>{1}</t><v>{0}</v><r>1</r><d>select persona</d><vt>text</vt><tv>0</tv></p></r></rules>\") %}}", persona.PersonaGUID, persona.PersonaDisplayName), MacroIdentityOption.FromUserInfo(UserInfoProvider.AdministratorUser), null); groupObj.ContactGroupDynamicCondition = str; ContactGroupInfoProvider.SetContactGroupInfo(groupObj); return(groupObj); }
private string BuildMacroRuleCondition(string macroCondition) => "<condition>\r\n <macro>\r\n <value>" + MacroSecurityProcessor.AddSecurityParameters(macroCondition, MacroIdentityOption.FromUserInfo(UserInfoProvider.AdministratorUser), null) + "</value>\r\n </macro>\r\n</condition>";
/// <summary> /// Creates new or updates existing newsletter issue. /// </summary> public bool Save() { if (mValidated || IsValid()) { IssueInfo issue; if (IssueID == 0) { // Initialize new issue issue = new IssueInfo(); issue.IssueUnsubscribed = 0; issue.IssueSentEmails = 0; issue.IssueNewsletterID = NewsletterID; issue.IssueSiteID = SiteContext.CurrentSiteID; } else { issue = IssueInfoProvider.GetIssueInfo(IssueID); } if (issue != null) { issue.IssueTemplateID = TemplateID; issue.IssueShowInNewsletterArchive = chkShowInArchive.Checked; issue.IssueSenderName = txtSenderName.Text.Trim(); issue.IssueSenderEmail = txtSenderEmail.Text.Trim(); issue.IssueUseUTM = chkIssueUseUTM.Checked; var normalizedUtmSource = Normalize(txtIssueUTMSource.Text.Trim()); if (string.IsNullOrEmpty(normalizedUtmSource)) { normalizedUtmSource = Normalize(Newsletter.NewsletterName + "_" + txtSubject.Text.Trim()); } txtIssueUTMSource.Text = issue.IssueUTMSource = normalizedUtmSource; if (radUTMCampaignNew.Checked) { var normalizedUtmCampaign = Normalize(mUTMCampaignTextBox.Text.Trim()); if (string.IsNullOrEmpty(normalizedUtmCampaign)) { normalizedUtmCampaign = Normalize(Newsletter.NewsletterName); } mUTMCampaignTextBox.Text = issue.IssueUTMCampaign = normalizedUtmCampaign; } else { issue.IssueUTMCampaign = selectorUTMCampaign.Value.ToString().ToLower(); } if (issue.IssueIsABTest) { SynchronizeUTMParameters(issue); } // Saves content of editable region(s) // Get content from hidden field string content = hdnIssueContent.Value; string[] regions = null; if (!string.IsNullOrEmpty(content)) { // Split content for each region, separator is '#|#' regions = content.Split(new[] { "#|#" }, StringSplitOptions.RemoveEmptyEntries); } issue.IssueText = IssueHelper.GetContentXML(regions); // Remove '#' from macros if included txtSubject.Text = txtSubject.Text.Trim().Replace("#%}", "%}"); // Sign macros if included in the subject issue.IssueSubject = MacroSecurityProcessor.AddSecurityParameters(txtSubject.Text, MembershipContext.AuthenticatedUser.UserName, null); // Save issue IssueInfoProvider.SetIssueInfo(issue); // Update IssueID IssueID = issue.IssueID; return(true); } } return(false); }
/// <summary> /// Creates new or updates existing newsletter issue. /// </summary> protected void btnSubmit_Click(object sender, EventArgs e) { var issue = IssueInfo.Provider.Get(IssueID); if ((issue == null) || !Enabled || !IsValid(issue)) { return; } if (IsDisplayNameFieldEnabled(issue)) { issue.IssueDisplayName = txtDisplayName.Text.Trim(); } issue.IssueTemplateID = TemplateID; issue.IssueSenderName = txtSenderName.Text.Trim(); issue.IssueSenderEmail = txtSenderEmail.Text.Trim(); issue.IssuePreheader = txtPreheader.Text.Trim(); issue.IssueUseUTM = chkIssueUseUTM.Checked; issue.IssueUTMSource = Normalize(txtIssueUTMSource.Text.Trim()); var needsFullRefresh = false; if (chkIssueForAutomation.Visible) { // Check whether the full refresh of the Email builder (including the left tabs) is necessary needsFullRefresh = issue.IssueForAutomation != chkIssueForAutomation.Checked; issue.IssueForAutomation = chkIssueForAutomation.Checked; } if (radUTMCampaignNew.Checked) { var normalizedUtmCampaign = Normalize(mUTMCampaignTextBox.Text.Trim()); if (string.IsNullOrEmpty(normalizedUtmCampaign)) { normalizedUtmCampaign = Normalize(Newsletter.NewsletterName); } mUTMCampaignTextBox.Text = issue.IssueUTMCampaign = normalizedUtmCampaign; } else { issue.IssueUTMCampaign = selectorUTMCampaign.Value.ToString().ToLower(CultureInfo.CurrentCulture); } PostProcessVariants(issue); // Remove '#' from macros if included txtSubject.Text = txtSubject.Text.Trim().Replace("#%}", "%}"); // Sign macros if included in the subject issue.IssueSubject = MacroSecurityProcessor.AddSecurityParameters(txtSubject.Text, MacroIdentityOption.FromUserInfo(MembershipContext.AuthenticatedUser), null); // Save issue IssueInfo.Provider.Set(issue); // Update IssueID IssueID = issue.IssueID; var builderEventArgs = needsFullRefresh ? new EmailBuilderEventArgs() : new EmailBuilderEventArgs(NewsletterID, IssueID, 1); OnSave(builderEventArgs); }