private void SendEmailWithTemplate(string from, string recipients) { var resolver = MacroResolver.GetInstance(); resolver.Settings.KeepUnresolvedMacros = true; var message = new EmailMessage() { From = from, Recipients = recipients }; EmailSender.SendEmailWithTemplateText(CurrentSiteName, message, Template, resolver, true); }
/// <summary> /// Loads all the fields from form selected in the first dropdown (selectForm) into the second dropdown (drpFields). /// </summary> private void LoadFields() { string className = ValidationHelper.GetString(selectForm.Value, null); if (className == null) { return; } var form = BizFormInfoProvider.GetBizFormInfo(className, SiteContext.CurrentSiteID); if (form == null) { return; } var classInfo = DataClassInfoProvider.GetDataClassInfo(form.FormClassID); if (classInfo == null) { return; } var formInfo = FormHelper.GetFormInfo(classInfo.ClassName, false); if (formInfo == null) { return; } drpFields.Items.Clear(); IEnumerable <FormFieldInfo> fields; if (FieldsDataType != FieldDataType.Unknown && FieldsDataType != FieldDataType.ALL) { fields = formInfo.GetFields(FieldsDataType).Where(x => x.Visible); } else { fields = formInfo.GetFields(true, true); } foreach (var fieldInfo in fields) { drpFields.Items.Add(new ListItem(fieldInfo.GetDisplayName(MacroResolver.GetInstance()), fieldInfo.Name)); } }
private bool TrySendPasswordResetEmail(UserInfo userInfo) { string returnUrl = RequestContext.CurrentURL; returnUrl = URLHelper.AddParameterToUrl(returnUrl, "username", userInfo.UserName); bool success; MacroResolver macros = MacroResolver.GetInstance(); macros.SetNamedSourceData("Username", userInfo.UserName); var resolvedURL = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host + ResolveUrl(ResetPasswordURL); var result = AuthenticationHelper.ForgottenEmailRequest(userInfo.UserName, SiteContext.CurrentSiteName, "RECOVERPASSWORDFORM", FromEmailAddress, macros, resolvedURL, out success); return(success); }
/// <summary> /// Reloads the data in the control. /// </summary> protected void ReloadData() { if (drpField.Items.Count == 0) { // Load dropdownlist with fields of specified class FormInfo fi = FormHelper.GetFormInfo(ClassName, false); if (fi != null) { if (CMSString.Equals(ClassName, "cms.user", true)) { // Combine user fields with those of user settings FormInfo coupledInfo = FormHelper.GetFormInfo("cms.usersettings", false); if (coupledInfo != null) { fi.CombineWithForm(coupledInfo, false); } } IEnumerable <FormFieldInfo> fields; if (FieldDataType != CMS.DataEngine.FieldDataType.Unknown) { fields = fi.GetFields(FieldDataType); } else { fields = fi.GetFields(true, true); } foreach (var fieldInfo in fields) { drpField.Items.Add(new ListItem(fieldInfo.GetDisplayName(MacroResolver.GetInstance()), fieldInfo.Name)); } } if (AllowNone) { // Add '(none)' item drpField.Items.Insert(0, new ListItem(GetString("general.selectnone"), string.Empty)); } } }
public void SendResetPasswordEmail(UserInfo user, EmailTemplateInfo template, string siteName, MacroResolver resolver = null) { var macroResolver = resolver ?? MacroResolver.GetInstance(); macroResolver.SetNamedSourceData(_setUpPasswordUrlMacro, GetSetUpPasswordUrl(user.UserGUID, siteName)); var fromAddress = !string.IsNullOrWhiteSpace(template.TemplateFrom) ? template.TemplateFrom : SettingsKeyInfoProvider.GetValue("CMSNoreplyEmailAddress", siteName); var message = new EmailMessage(); message.EmailFormat = EmailFormatEnum.Both; message.From = fromAddress; message.Recipients = user.Email; message.Subject = macroResolver.ResolveMacros(template.TemplateSubject); message.Body = macroResolver.ResolveMacros(template.TemplateText); message.PlainTextBody = macroResolver.ResolveMacros(template.TemplatePlainText); EmailSender.SendEmail(siteName, message, sendImmediately: false); }
/// <summary> /// Renders any IHtmlBeforeAfterContainerProperties and IPageBuilderContainerProperties /// </summary> /// <param name="helper">Html Helper</param> /// <param name="ComponentModel">The component model object that should inherit IHtmlBeforeAfterContainerProperties and/or IPageBuilderContainerProperties</param> /// <returns>The content after the component</returns> public static MvcHtmlString PageBuilderContainerAfter(this HtmlHelper helper, object ComponentModel) { string HtmlContainer = ""; string HtmlWrapper = ""; if (ComponentModel is IHtmlBeforeAfterContainerProperties HtmlBeforeAfterProps) { if (!string.IsNullOrWhiteSpace(HtmlBeforeAfterProps.HtmlAfter)) { HtmlWrapper = HtmlBeforeAfterProps.HtmlAfter; // Apply macro engine if needed if (HtmlWrapper.IndexOf("{") > -1) { MacroResolver Resolver = MacroResolver.GetInstance(); HtmlWrapper = Resolver.ResolveMacros(HtmlWrapper); } } } if (ComponentModel is IPageBuilderContainerProperties ContainerProps) { if (!string.IsNullOrWhiteSpace(ContainerProps.ContainerName)) { var Container = GetPageBuilderContainer(ContainerProps.ContainerName); MacroResolver Resolver = MacroResolver.GetInstance(); if (Container != null) { Resolver.SetNamedSourceData("ContainerTitle", ContainerProps.ContainerTitle); Resolver.SetNamedSourceData("ContainerCustomContent", ContainerProps.ContainerCustomContent); Resolver.SetNamedSourceData("ContainerCSSClass", ContainerProps.ContainerCSSClass); string StyleContent = (!string.IsNullOrWhiteSpace(Container.ContainerCSS) ? string.Format("<style>{0}</style>", Container.ContainerCSS) : ""); HtmlContainer = StyleContent + Resolver.ResolveMacros(Container.ContainerTextAfter); } } } return(new MvcHtmlString(HtmlContainer + HtmlWrapper)); }
public string GetPageBuilderContainerAfter(object ComponentModel) { string HtmlContainer = ""; string HtmlWrapper = ""; if (ComponentModel is IHtmlBeforeAfterContainerProperties HtmlBeforeAfterProps) { if (!string.IsNullOrWhiteSpace(HtmlBeforeAfterProps.HtmlAfter)) { HtmlWrapper = HtmlBeforeAfterProps.HtmlAfter; // Apply macro engine if needed if (HtmlWrapper.IndexOf("{") > -1) { MacroResolver Resolver = MacroResolver.GetInstance(); //HtmlWrapper = Resolver.ResolveMacros(HtmlWrapper, new EvaluationContext(Resolver, HtmlWrapper)); HtmlWrapper = Resolver.ResolveMacros(HtmlWrapper); } } } if (ComponentModel is IPageBuilderContainerProperties ContainerProps) { if (!string.IsNullOrWhiteSpace(ContainerProps.ContainerName)) { var Container = GetPageBuilderContainer(ContainerProps.ContainerName); MacroResolver Resolver = MacroResolver.GetInstance(); if (Container != null) { Resolver.SetNamedSourceData("ContainerTitle", ContainerProps.ContainerTitle); Resolver.SetNamedSourceData("ContainerCustomContent", ContainerProps.ContainerCustomContent); Resolver.SetNamedSourceData("ContainerCSSClass", ContainerProps.ContainerCSSClass); HtmlContainer = Resolver.ResolveMacros(Container.ContainerTextAfter); } } } return(HtmlContainer + HtmlWrapper); }
/// <summary> /// Sends e-mail to all attendees. /// </summary> protected void Send() { // Check 'Modify' permission if (!CheckPermissions("cms.eventmanager", "Modify")) { return; } txtSenderName.Text = txtSenderName.Text.Trim(); txtSenderEmail.Text = txtSenderEmail.Text.Trim(); txtSubject.Text = txtSubject.Text.Trim(); // Validate the fields string errorMessage = new Validator() .NotEmpty(txtSenderName.Text, GetString("Events_SendEmail.EmptySenderName")) .NotEmpty(txtSenderEmail.Text, GetString("Events_SendEmail.EmptySenderEmail")) .MatchesCondition(txtSenderEmail, input => input.IsValid(), GetString("Events_SendEmail.InvalidEmailFormat")) .NotEmpty(txtSubject.Text, GetString("Events_SendEmail.EmptyEmailSubject")) .Result; if (!String.IsNullOrEmpty(errorMessage)) { ShowError(errorMessage); return; } string subject = txtSubject.Text; string emailBody = htmlEmail.ResolvedValue; // Get event node data TreeProvider mTree = new TreeProvider(); DocTreeNode node = mTree.SelectSingleNode(EventID); if (node != null && CMSString.Equals(node.NodeClassName, "cms.bookingevent", true)) { // Initialize macro resolver MacroResolver resolver = MacroResolver.GetInstance(); resolver.Settings.KeepUnresolvedMacros = true; resolver.SetAnonymousSourceData(node); // Add named source data resolver.SetNamedSourceData("Event", node); // Event date string macro DateTime eventDate = ValidationHelper.GetDateTime(node.GetValue("EventDate"), DateTimeHelper.ZERO_TIME); DateTime eventEndDate = ValidationHelper.GetDateTime(node.GetValue("EventEndDate"), DateTimeHelper.ZERO_TIME); bool isAllDay = ValidationHelper.GetBoolean(node.GetValue("EventAllDay"), false); resolver.SetNamedSourceData("eventdatestring", EventProvider.GetEventDateString(eventDate, eventEndDate, isAllDay, TimeZoneHelper.GetTimeZoneInfo(SiteContext.CurrentSite), SiteContext.CurrentSiteName), false); // Resolve e-mail body and subject macros and make links absolute emailBody = resolver.ResolveMacros(emailBody); emailBody = URLHelper.MakeLinksAbsolute(emailBody); subject = TextHelper.LimitLength(resolver.ResolveMacros(subject), 450); // EventSendEmail manages sending e-mails to all attendees EventSendEmail ese = new EventSendEmail(EventID, SiteContext.CurrentSiteName, subject, emailBody, txtSenderName.Text.Trim(), txtSenderEmail.Text.Trim()); ShowConfirmation(GetString("Events_SendEmail.EmailSent")); } }
/// <summary> /// Unigrid external data bound handler. /// </summary> protected object uniGrid_OnExternalDataBound(object sender, string sourceName, object parameter) { switch (sourceName.ToLowerCSafe()) { case "yesno": return(UniGridFunctions.ColoredSpanYesNo(parameter)); case "select": { DataRowView drv = (parameter as DataRowView); // Get item ID string itemID = drv[returnColumnName].ToString(); string hashKey = itemID; // Add global object name prefix if required if (AddGlobalObjectNamePrefix && !String.IsNullOrEmpty(iObjectType.SiteIDColumn) && (ValidationHelper.GetInteger(DataHelper.GetDataRowValue(drv.Row, iObjectType.SiteIDColumn), 0) == 0)) { itemID = "." + itemID; } // Store hash codes for grid items if (!hashItems.ContainsKey(hashKey)) { hashItems.Add(hashKey, ValidationHelper.GetHashString(itemID)); } // Add checkbox for multiple selection switch (selectionMode) { case SelectionModeEnum.Multiple: case SelectionModeEnum.MultipleTextBox: case SelectionModeEnum.MultipleButton: { string checkBox = string.Format("<span class=\"checkbox\"><input id=\"chk{0}\" type=\"checkbox\" onclick=\"ProcessItem(this,'{1}',false,true);\" class=\"chckbox\" ", itemID, hashItems[hashKey]); if (hidItem.Value.IndexOfCSafe(valuesSeparator + itemID + valuesSeparator, true) >= 0) { checkBox += "checked=\"checked\" "; } if (disabledItems.Contains(string.Format("{0}{1}{0}", valuesSeparator, itemID))) { checkBox += "disabled=\"disabled\" "; } checkBox += string.Format("/><label for=\"chk{0}\"> </label></span>", itemID); return(checkBox); } } } break; case "itemname": { DataRowView drv = (parameter as DataRowView); // Get item ID string itemID = drv[returnColumnName].ToString(); string hashKey = itemID; // Get item name string itemName; // Special formatted user name if (displayNameFormat == UniSelector.USER_DISPLAY_FORMAT) { string userName = ValidationHelper.GetString(DataHelper.GetDataRowValue(drv.Row, "UserName"), String.Empty); string fullName = ValidationHelper.GetString(DataHelper.GetDataRowValue(drv.Row, "FullName"), String.Empty); itemName = Functions.GetFormattedUserName(userName, fullName, IsLiveSite); } else if (displayNameFormat == null) { itemName = drv[iObjectType.DisplayNameColumn].ToString(); } else { MacroResolver resolver = MacroResolver.GetInstance(); foreach (DataColumn item in drv.Row.Table.Columns) { resolver.SetNamedSourceData(item.ColumnName, drv.Row[item.ColumnName]); } itemName = resolver.ResolveMacros(displayNameFormat); } if (RemoveMultipleCommas) { itemName = TextHelper.RemoveMultipleCommas(itemName); } // Add the prefixes itemName = ItemPrefix + itemName; itemID = ItemPrefix + itemID; // Add global object name prefix if required if (AddGlobalObjectNamePrefix && !String.IsNullOrEmpty(iObjectType.SiteIDColumn) && (ValidationHelper.GetInteger(DataHelper.GetDataRowValue(drv.Row, iObjectType.SiteIDColumn), 0) == 0)) { itemID = "." + itemID; } if (String.IsNullOrEmpty(itemName)) { itemName = emptyReplacement; } if (AddGlobalObjectSuffix) { if ((iObjectType != null) && !string.IsNullOrEmpty(iObjectType.SiteIDColumn)) { itemName += (ValidationHelper.GetInteger(DataHelper.GetDataRowValue(drv.Row, iObjectType.SiteIDColumn), 0) > 0 ? string.Empty : " " + GlobalObjectSuffix); } } // Link action string onclick = null; bool disabled = disabledItems.Contains(";" + itemID + ";"); if (!disabled) { string safeItemID = GetSafe(itemID); string itemHash = ValidationHelper.GetHashString(itemID); switch (selectionMode) { case SelectionModeEnum.Multiple: case SelectionModeEnum.MultipleTextBox: case SelectionModeEnum.MultipleButton: onclick = string.Format("ProcessItem(document.getElementById('chk{0}'),'{1}',true,true); return false;", ScriptHelper.GetString(itemID).Trim('\''), hashItems[hashKey]); break; case SelectionModeEnum.SingleButton: onclick = string.Format("SelectItems({0},'{1}'); return false;", safeItemID, itemHash); break; case SelectionModeEnum.SingleTextBox: if (allowEditTextBox) { onclick = string.Format("SelectItems({0},{0},{1},{2},{3},'{4}'); return false;", safeItemID, ScriptHelper.GetString(hdnClientId), ScriptHelper.GetString(txtClientId), ScriptHelper.GetString(hashId), itemHash); } else { onclick = string.Format("SelectItems({0},{1},{2},{3},{4},'{5}'); return false;", safeItemID, GetSafe(itemName), ScriptHelper.GetString(hdnClientId), ScriptHelper.GetString(txtClientId), ScriptHelper.GetString(hashId), itemHash); } break; default: onclick = string.Format("SelectItemsReload({0},{1},{2},{3},{4},{5},'{6}'); return false;", safeItemID, GetSafe(itemName), ScriptHelper.GetString(hdnClientId), ScriptHelper.GetString(txtClientId), ScriptHelper.GetString(hdnDrpId), ScriptHelper.GetString(hashId), itemHash); break; } onclick = "onclick=\"" + onclick + "\" "; } if (LocalizeItems) { itemName = ResHelper.LocalizeString(itemName); } return("<div " + (!disabled ? "class=\"SelectableItem\" " : null) + onclick + ">" + HTMLHelper.HTMLEncode(TextHelper.LimitLength(itemName, 100)) + "</div>"); } } return(null); }
protected void OnTabCreated(object sender, TabCreatedEventArgs e) { if (e.Tab == null) { return; } var tab = e.Tab; var element = e.UIElement; PageTemplateInfo UITemplate = PageTemplateInfoProvider.GetPageTemplateInfo(e.UIElement.ElementPageTemplateID); var manager = DocumentManager; var node = manager.Node; bool splitViewSupported = PortalContext.ViewMode != ViewModeEnum.EditLive; string elementName = element.ElementName.ToLowerCSafe(); if (UITemplate.CodeName.ToLower().Contains("editrelationship")) { XmlDocument properties = new XmlDocument(); properties.LoadXml(e.UIElement.ElementProperties); XmlNode LeftSideMacro = properties.SelectSingleNode("/Data[1]/IsLeftSideMacro[1]"); XmlNode RightSideMacro = properties.SelectSingleNode("/Data[1]/IsRightSideMacro[1]"); XmlNode AutoHide = properties.SelectSingleNode("/Data[1]/AutoHide[1]"); if (AutoHide != null && ValidationHelper.GetBoolean(AutoHide.InnerText, false) && LeftSideMacro != null && RightSideMacro != null) { MacroResolver pageResolver = MacroResolver.GetInstance(); // Get current node's class, then full document so it has related data. int NodeID = ValidationHelper.GetInteger(URLHelper.GetQueryValue(RequestContext.RawURL, "nodeid"), 1); string Culture = DataHelper.GetNotEmpty(URLHelper.GetQueryValue(RequestContext.RawURL, "culture"), "en-US"); TreeNode CurrentDocument = CacheHelper.Cache <TreeNode>(cs => { TreeNode Document = new DocumentQuery().WhereEquals("NodeID", NodeID).Columns("ClassName").FirstOrDefault(); Document = new DocumentQuery(Document.ClassName).WhereEquals("NodeID", NodeID).Culture(Culture).FirstOrDefault(); if (cs.Cached) { cs.CacheDependency = CacheHelper.GetCacheDependency(new string[] { string.Format("node|{0}|{1}|{2}", Document.NodeSiteName, Document.NodeAliasPath, Culture, PageTemplateInfo.OBJECT_TYPE + "|byid|" + e.UIElement.ElementPageTemplateID) }); } return(Document); }, new CacheSettings(CacheHelper.CacheMinutes(SiteContext.CurrentSiteName), NodeID, Culture, e.UIElement.ElementPageTemplateID)); pageResolver.SetNamedSourceData("CurrentDocument", CurrentDocument); if (!(ValidationHelper.GetBoolean(pageResolver.ResolveMacros(LeftSideMacro.InnerText), true) || ValidationHelper.GetBoolean(pageResolver.ResolveMacros(RightSideMacro.InnerText), true))) { e.Tab = null; } } } if (DocumentUIHelper.IsElementHiddenForNode(element, node)) { e.Tab = null; return; } // Ensure split view mode if (splitViewSupported && PortalUIHelper.DisplaySplitMode) { tab.RedirectUrl = DocumentUIHelper.GetSplitViewUrl(tab.RedirectUrl); } }
/// <summary> /// Unigrid external data bound handler. /// </summary> protected object uniGrid_OnExternalDataBound(object sender, string sourceName, object parameter) { switch (sourceName.ToLowerInvariant()) { case "yesno": return(UniGridFunctions.ColoredSpanYesNo(parameter)); case "select": { var ti = iObjectType.TypeInfo; DataRowView drv = (DataRowView)parameter; // Get item ID string itemID = drv[returnColumnName].ToString(); // Add global object name prefix if required if (AddGlobalObjectNamePrefix && HasSiteIdColumn(ti) && (DataHelper.GetIntValue(drv.Row, ti.SiteIDColumn) == 0)) { itemID = "." + itemID; } // Add checkbox for multiple selection switch (selectionMode) { case SelectionModeEnum.Multiple: case SelectionModeEnum.MultipleTextBox: case SelectionModeEnum.MultipleButton: { var itemWithSeparators = string.Format("{0}{1}{0}", valuesSeparator, itemID); string checkBox = string.Format("<span class=\"checkbox\"><input id=\"chk{0}\" type=\"checkbox\" onclick=\"ProcessItem(this,false); UpdateCheckboxAllElement();\" class=\"chckbox\" ", itemID); if (hidItem.Value.IndexOf(itemWithSeparators, StringComparison.OrdinalIgnoreCase) >= 0) { checkBox += "checked=\"checked\" "; } else { allRowsChecked = false; } if (disabledItems.Contains(itemWithSeparators)) { checkBox += "disabled=\"disabled\" "; } checkBox += string.Format("/><label for=\"chk{0}\"> </label></span>", itemID); return(checkBox); } } } break; case "itemname": { DataRowView drv = (DataRowView)parameter; // Get item ID string itemID = drv[returnColumnName].ToString(); // Get item name string itemName; // Special formatted user name if (displayNameFormat == UniSelector.USER_DISPLAY_FORMAT) { string userName = DataHelper.GetStringValue(drv.Row, "UserName"); string fullName = DataHelper.GetStringValue(drv.Row, "FullName"); itemName = Functions.GetFormattedUserName(userName, fullName, IsLiveSite); } else if (displayNameFormat == null) { itemName = drv[iObjectType.DisplayNameColumn].ToString(); } else { MacroResolver resolver = MacroResolver.GetInstance(); foreach (DataColumn item in drv.Row.Table.Columns) { resolver.SetNamedSourceData(item.ColumnName, drv.Row[item.ColumnName]); } itemName = resolver.ResolveMacros(displayNameFormat); } if (RemoveMultipleCommas) { itemName = TextHelper.RemoveMultipleCommas(itemName); } // Add the prefixes itemName = ItemPrefix + itemName; itemID = ItemPrefix + itemID; var ti = iObjectType.TypeInfo; // Add global object name prefix if required if (AddGlobalObjectNamePrefix && HasSiteIdColumn(ti) && (DataHelper.GetIntValue(drv.Row, ti.SiteIDColumn) == 0)) { itemID = "." + itemID; } if (String.IsNullOrEmpty(itemName)) { itemName = emptyReplacement; } if (AddGlobalObjectSuffix && HasSiteIdColumn(ti)) { itemName += (DataHelper.GetIntValue(drv.Row, ti.SiteIDColumn) > 0 ? string.Empty : " " + GlobalObjectSuffix); } // Link action string onclick = null; bool disabled = disabledItems.Contains(";" + itemID + ";"); if (!disabled) { string safeItemID = GetSafe(itemID); string itemHash = ValidationHelper.GetHashString(itemID, new HashSettings(ClientID)); switch (selectionMode) { case SelectionModeEnum.Multiple: case SelectionModeEnum.MultipleTextBox: case SelectionModeEnum.MultipleButton: onclick = string.Format("ProcessItem(document.getElementById('chk{0}'),true); UpdateCheckboxAllElement(); return false;", ScriptHelper.GetString(itemID).Trim('\'')); break; case SelectionModeEnum.SingleButton: onclick = string.Format("SelectItems({0},'{1}'); return false;", safeItemID, itemHash); break; case SelectionModeEnum.SingleTextBox: if (allowEditTextBox) { if (!mHasDependingFields) { onclick = string.Format("SelectItems({0},{0},{1},{2},{3},'{4}'); return false;", safeItemID, ScriptHelper.GetString(hdnClientId), ScriptHelper.GetString(txtClientId), ScriptHelper.GetString(hashId), itemHash); } else { onclick = string.Format("SelectItemsReload({0},{0},{1},{2},{3},{4},'{5}'); return false;", safeItemID, ScriptHelper.GetString(hdnClientId), ScriptHelper.GetString(txtClientId), ScriptHelper.GetString(hdnDrpId), ScriptHelper.GetString(hashId), itemHash); } } else { if (!mHasDependingFields) { onclick = string.Format("SelectItems({0},{1},{2},{3},{4},'{5}'); return false;", safeItemID, GetSafe(itemName), ScriptHelper.GetString(hdnClientId), ScriptHelper.GetString(txtClientId), ScriptHelper.GetString(hashId), itemHash); } else { onclick = string.Format("SelectItemsReload({0},{1},{2},{3},{4},{5},'{6}'); return false;", safeItemID, GetSafe(itemName), ScriptHelper.GetString(hdnClientId), ScriptHelper.GetString(txtClientId), ScriptHelper.GetString(hdnDrpId), ScriptHelper.GetString(hashId), itemHash); } } break; default: onclick = string.Format("SelectItemsReload({0},{1},{2},{3},{4},{5},'{6}'); return false;", safeItemID, GetSafe(itemName), ScriptHelper.GetString(hdnClientId), ScriptHelper.GetString(txtClientId), ScriptHelper.GetString(hdnDrpId), ScriptHelper.GetString(hashId), itemHash); break; } onclick = "onclick=\"" + onclick + "\" "; } if (LocalizeItems) { itemName = ResHelper.LocalizeString(itemName); } // Custom Tooltip string tooltip = ""; if (!string.IsNullOrWhiteSpace(toolTipFormat)) { MacroResolver resolver = MacroResolver.GetInstance(); foreach (DataColumn item in drv.Row.Table.Columns) { resolver.SetNamedSourceData(item.ColumnName, drv.Row[item.ColumnName]); } tooltip = resolver.ResolveMacros(toolTipFormat); } if (!string.IsNullOrWhiteSpace(tooltip)) { tooltip = "title=\"" + CMS.Helpers.HTMLHelper.EncodeForHtmlAttribute(tooltip) + "\" "; } return("<div " + (!disabled ? "class=\"SelectableItem\" " : null) + onclick + tooltip + ">" + HTMLHelper.HTMLEncode(TextHelper.LimitLength(itemName, 100)) + "</div>"); } } return(null); }