Beispiel #1
0
        /// <summary>
        /// Updates the controls
        /// </summary>
        private void UpdateControls()
        {
            pnlTemplateLogo.Visible = CommunicationTemplateHelper.HasTemplateLogo(ceEmailTemplate.Text);
            imgTemplateLogo.Help    = CommunicationTemplateHelper.GetTemplateLogoHelpText(ceEmailTemplate.Text);

            var lavaFieldsTemplateDictionaryFromControls = hfLavaFieldsState.Value.FromJsonOrNull <Dictionary <string, string> >() ?? new Dictionary <string, string>();

            lavaFieldsTemplateDictionaryFromControls = CommunicationTemplateHelper.UpdateLavaFieldsTemplateDictionaryFromControls(phLavaFieldsControls, lavaFieldsTemplateDictionaryFromControls);

            // dictionary of keys and default values from Lava Fields KeyValueList control
            var lavaFieldsDefaultDictionary = kvlMergeFields.Value.AsDictionary();

            ceEmailTemplate.Text = CommunicationTemplateHelper.GetUpdatedTemplateHtml(ceEmailTemplate.Text, imgTemplateLogo.BinaryFileId, lavaFieldsTemplateDictionaryFromControls, lavaFieldsDefaultDictionary);

            var lavaFieldsTemplateDictionary = CommunicationTemplateHelper.GetLavaFieldsTemplateDictionaryFromTemplateHtml(ceEmailTemplate.Text);

            hfLavaFieldsState.Value          = lavaFieldsTemplateDictionary.ToJson(indentOutput: false);
            btnUpdateTemplatePreview.Visible = lavaFieldsTemplateDictionary.Any();
            CommunicationTemplateHelper.CreateDynamicLavaValueControls(lavaFieldsTemplateDictionary, lavaFieldsDefaultDictionary, phLavaFieldsControls);

            var    mergeFields         = Rock.Lava.LavaHelper.GetCommonMergeFields(RockPage);
            string resolvedPreviewHtml = ceEmailTemplate.Text.ResolveMergeFields(mergeFields);

            if (cbCssInliningEnabled.Checked)
            {
                resolvedPreviewHtml = resolvedPreviewHtml.ConvertHtmlStylesToInlineAttributes();
            }

            ifEmailPreview.Attributes["srcdoc"] = resolvedPreviewHtml;
            pnlEmailPreview.Visible             = true;
            upnlEmailPreview.Update();
        }
Beispiel #2
0
        /// <summary>
        /// Handles the Click event of the lbUpdateLavaFields control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void lbUpdateLavaFields_Click(object sender, EventArgs e)
        {
            // do an UpdateControls to make sure the "lava-fields" tag exists if there are lava fields defined in the UI
            UpdateControls();

            Dictionary <string, string> lavaFieldsTemplateDictionary = CommunicationTemplateHelper.GetLavaFieldsTemplateDictionaryFromTemplateHtml(ceEmailTemplate.Text);

            kvlMergeFields.Value = lavaFieldsTemplateDictionary.Select(a => string.Format("{0}^{1}", a.Key, a.Value)).ToList().AsDelimited("|");
        }