private static async Task <string> ParseImplAsync(IParseManager parseManager, string channelIndex, string channelName, int upLevel, int topLevel, bool removeTarget, string href, string queryString, string host, Dictionary <string, string> attributes) { var databaseManager = parseManager.DatabaseManager; var pageInfo = parseManager.PageInfo; var contextInfo = parseManager.ContextInfo; attributes.TryGetValue("id", out var htmlId); if (!string.IsNullOrEmpty(htmlId) && !string.IsNullOrEmpty(contextInfo.ContainerClientId)) { htmlId = contextInfo.ContainerClientId + "_" + htmlId; } if (!string.IsNullOrEmpty(htmlId)) { attributes["id"] = htmlId; } var innerHtml = string.Empty; var url = string.Empty; var onclick = string.Empty; if (!string.IsNullOrEmpty(href)) { url = await parseManager.PathManager.ParseSiteUrlAsync(pageInfo.Site, href, pageInfo.IsLocal); var innerBuilder = new StringBuilder(contextInfo.InnerHtml); await parseManager.ParseInnerContentAsync(innerBuilder); innerHtml = innerBuilder.ToString(); } else { if (contextInfo.ContextType == ParseType.Undefined) { contextInfo.ContextType = contextInfo.ContentId != 0 ? ParseType.Content : ParseType.Channel; } if (contextInfo.ContextType == ParseType.Content) //获取内容Url { var contentInfo = await parseManager.GetContentAsync(); if (contentInfo != null) { url = await parseManager.PathManager.GetContentUrlAsync(pageInfo.Site, contentInfo, pageInfo.IsLocal); } else { var nodeInfo = await databaseManager.ChannelRepository.GetAsync(contextInfo.ChannelId); url = await parseManager.PathManager.GetContentUrlAsync(pageInfo.Site, nodeInfo, contextInfo.ContentId, pageInfo.IsLocal); } if (string.IsNullOrEmpty(contextInfo.InnerHtml)) { var title = contentInfo?.Title; title = ContentUtility.FormatTitle( contentInfo?.Get <string>("BackgroundContentAttribute.TitleFormatString"), title); if (pageInfo.Site.IsContentTitleBreakLine) { title = title.Replace(" ", string.Empty); } innerHtml = title; } else { var innerBuilder = new StringBuilder(contextInfo.InnerHtml); await parseManager.ParseInnerContentAsync(innerBuilder); innerHtml = innerBuilder.ToString(); } } else if (contextInfo.ContextType == ParseType.Channel) //获取栏目Url { var dataManager = new StlDataManager(parseManager.DatabaseManager); contextInfo.ChannelId = await dataManager.GetChannelIdByLevelAsync(pageInfo.SiteId, contextInfo.ChannelId, upLevel, topLevel); contextInfo.ChannelId = await databaseManager.ChannelRepository.GetChannelIdAsync(pageInfo.SiteId, contextInfo.ChannelId, channelIndex, channelName); var channel = await databaseManager.ChannelRepository.GetAsync(contextInfo.ChannelId); url = await parseManager.PathManager.GetChannelUrlAsync(pageInfo.Site, channel, pageInfo.IsLocal); if (string.IsNullOrWhiteSpace(contextInfo.InnerHtml)) { innerHtml = channel.ChannelName; } else { var innerBuilder = new StringBuilder(contextInfo.InnerHtml); await parseManager.ParseInnerContentAsync(innerBuilder); innerHtml = innerBuilder.ToString(); } } } if (url.Equals(PageUtils.UnClickableUrl)) { removeTarget = true; } else { if (!string.IsNullOrEmpty(host)) { url = PageUtils.AddProtocolToUrl(url, host); } if (!string.IsNullOrEmpty(queryString)) { url = PageUtils.AddQueryString(url, queryString); } } attributes["href"] = url; if (!string.IsNullOrEmpty(onclick)) { attributes["onclick"] = onclick; } if (removeTarget) { attributes["target"] = string.Empty; } // 如果是实体标签,则只返回url if (contextInfo.IsStlEntity) { return(url); } return($@"<a {TranslateUtils.ToAttributesString(attributes)}>{innerHtml}</a>"); }
private static string ParseImpl(PageInfo pageInfo, ContextInfo contextInfo, HtmlAnchor stlAnchor, string htmlId, string channelIndex, string channelName, int upLevel, int topLevel, bool removeTarget, string href, string queryString, string host) { if (!string.IsNullOrEmpty(htmlId) && !string.IsNullOrEmpty(contextInfo.ContainerClientId)) { htmlId = contextInfo.ContainerClientId + "_" + htmlId; } stlAnchor.ID = htmlId; var url = string.Empty; var onclick = string.Empty; if (!string.IsNullOrEmpty(href)) { url = PageUtility.ParseNavigationUrl(pageInfo.SiteInfo, href, pageInfo.IsLocal); var innerBuilder = new StringBuilder(contextInfo.InnerXml); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); stlAnchor.InnerHtml = innerBuilder.ToString(); } else { if (contextInfo.ContextType == EContextType.Undefined) { contextInfo.ContextType = contextInfo.ContentId != 0 ? EContextType.Content : EContextType.Channel; } if (contextInfo.ContextType == EContextType.Content)//获取内容Url { if (contextInfo.ContentInfo != null) { url = PageUtility.GetContentUrl(pageInfo.SiteInfo, contextInfo.ContentInfo, pageInfo.IsLocal); } else { var nodeInfo = ChannelManager.GetChannelInfo(pageInfo.SiteId, contextInfo.ChannelId); url = PageUtility.GetContentUrl(pageInfo.SiteInfo, nodeInfo, contextInfo.ContentId, pageInfo.IsLocal); } if (string.IsNullOrEmpty(contextInfo.InnerXml)) { var title = contextInfo.ContentInfo?.Title; title = ContentUtility.FormatTitle(contextInfo.ContentInfo?.GetString("BackgroundContentAttribute.TitleFormatString"), title); if (pageInfo.SiteInfo.Additional.IsContentTitleBreakLine) { title = title.Replace(" ", string.Empty); } stlAnchor.InnerHtml = title; } else { var innerBuilder = new StringBuilder(contextInfo.InnerXml); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); stlAnchor.InnerHtml = innerBuilder.ToString(); } } else if (contextInfo.ContextType == EContextType.Channel)//获取栏目Url { contextInfo.ChannelId = StlDataUtility.GetChannelIdByLevel(pageInfo.SiteId, contextInfo.ChannelId, upLevel, topLevel); contextInfo.ChannelId = StlDataUtility.GetChannelIdByChannelIdOrChannelIndexOrChannelName(pageInfo.SiteId, contextInfo.ChannelId, channelIndex, channelName); var channel = ChannelManager.GetChannelInfo(pageInfo.SiteId, contextInfo.ChannelId); url = PageUtility.GetChannelUrl(pageInfo.SiteInfo, channel, pageInfo.IsLocal); if (contextInfo.InnerXml.Trim().Length == 0) { stlAnchor.InnerHtml = channel.ChannelName; } else { var innerBuilder = new StringBuilder(contextInfo.InnerXml); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); stlAnchor.InnerHtml = innerBuilder.ToString(); } } } if (url.Equals(PageUtils.UnclickedUrl)) { removeTarget = true; } else { if (!string.IsNullOrEmpty(host)) { url = PageUtils.AddProtocolToUrl(url, host); } if (!string.IsNullOrEmpty(queryString)) { url = PageUtils.AddQueryString(url, queryString); } } stlAnchor.HRef = url; if (!string.IsNullOrEmpty(onclick)) { stlAnchor.Attributes.Add("onclick", onclick); } if (removeTarget) { stlAnchor.Target = string.Empty; } // 如果是实体标签,则只返回url if (contextInfo.IsCurlyBrace) { return(stlAnchor.HRef); } else { return(ControlUtils.GetControlRenderHtml(stlAnchor)); } }
private static string ParseImpl(XmlNode node, PageInfo pageInfo, ContextInfo contextInfo, string leftText, string rightText, string formatString, string no, string separator, int startIndex, int length, int wordNum, string ellipsis, string replace, string to, bool isClearTags, string isReturnToBrStr, bool isLower, bool isUpper, bool isOriginal, string type, StringDictionary attributes, string imageType) { var parsedContent = string.Empty; var isReturnToBr = false; if (string.IsNullOrEmpty(isReturnToBrStr)) { if (BackgroundContentAttribute.Summary.ToLower().Equals(type)) { isReturnToBr = true; } } else { isReturnToBr = TranslateUtils.ToBool(isReturnToBrStr, true); } var contentId = contextInfo.ContentID; var contentInfo = contextInfo.ContentInfo; if (contentInfo == null) { return(string.Empty); } if (isOriginal) { if (contentInfo.ReferenceId > 0 && contentInfo.SourceId > 0 && contentInfo.GetExtendedAttribute(ContentAttribute.TranslateContentType) == ETranslateContentType.Reference.ToString()) { var targetNodeId = contentInfo.SourceId; var targetPublishmentSystemId = DataProvider.NodeDao.GetPublishmentSystemId(targetNodeId); var targetPublishmentSystemInfo = PublishmentSystemManager.GetPublishmentSystemInfo(targetPublishmentSystemId); var targetNodeInfo = NodeManager.GetNodeInfo(targetPublishmentSystemId, targetNodeId); var tableStyle = NodeManager.GetTableStyle(targetPublishmentSystemInfo, targetNodeInfo); var tableName = NodeManager.GetTableName(targetPublishmentSystemInfo, targetNodeInfo); var targetContentInfo = DataProvider.ContentDao.GetContentInfo(tableStyle, tableName, contentInfo.ReferenceId); if (targetContentInfo != null && targetContentInfo.NodeId > 0) { //标题可以使用自己的 targetContentInfo.Title = contentInfo.Title; contentInfo = targetContentInfo; } } } if (!string.IsNullOrEmpty(formatString)) { formatString = formatString.Trim(); if (!formatString.StartsWith("{0")) { formatString = "{0:" + formatString; } if (!formatString.EndsWith("}")) { formatString = formatString + "}"; } } if (contentId != 0) { if (ContentAttribute.Title.ToLower().Equals(type)) { var relatedIdentities = RelatedIdentities.GetChannelRelatedIdentities(pageInfo.PublishmentSystemId, contentInfo.NodeId); var nodeInfo = NodeManager.GetNodeInfo(pageInfo.PublishmentSystemId, contentInfo.NodeId); var tableStyle = NodeManager.GetTableStyle(pageInfo.PublishmentSystemInfo, nodeInfo); var tableName = NodeManager.GetTableName(pageInfo.PublishmentSystemInfo, nodeInfo); var styleInfo = TableStyleManager.GetTableStyleInfo(tableStyle, tableName, type, relatedIdentities); if (wordNum == 0) { wordNum = contextInfo.TitleWordNum; } parsedContent = InputParserUtility.GetContentByTableStyle(contentInfo.Title, separator, pageInfo.PublishmentSystemInfo, tableStyle, styleInfo, formatString, attributes, node.InnerXml, false); parsedContent = StringUtils.ParseString(EInputTypeUtils.GetEnumType(styleInfo.InputType), parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); if (!isClearTags && !string.IsNullOrEmpty(contentInfo.Attributes[BackgroundContentAttribute.TitleFormatString])) { parsedContent = ContentUtility.FormatTitle(contentInfo.Attributes[BackgroundContentAttribute.TitleFormatString], parsedContent); } if (!contextInfo.IsInnerElement) { parsedContent = parsedContent.Replace("&", "&"); } if (pageInfo.PublishmentSystemInfo.Additional.IsContentTitleBreakLine) { parsedContent = parsedContent.Replace(" ", !contextInfo.IsInnerElement ? "<br />" : string.Empty); } } else if (BackgroundContentAttribute.Summary.ToLower().Equals(type)) { parsedContent = StringUtils.ParseString(contentInfo.GetExtendedAttribute(BackgroundContentAttribute.Summary), replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); if (!contextInfo.IsInnerElement) { parsedContent = parsedContent.Replace("&", "&"); } } else if (BackgroundContentAttribute.Content.ToLower().Equals(type)) { parsedContent = StringUtility.TextEditorContentDecode(contentInfo.GetExtendedAttribute(BackgroundContentAttribute.Content), pageInfo.PublishmentSystemInfo); if (pageInfo.PublishmentSystemInfo.Additional.IsInnerLink) { var innerLinkInfoList = pageInfo.CacheOfInnerLinkInfoList; if (innerLinkInfoList != null && innerLinkInfoList.Count > 0) { InnerLinkInfo newInnerLinkInfo; for (var i = 0; i < innerLinkInfoList.Count - 1; i++) { for (var j = i + 1; j < innerLinkInfoList.Count; j++) { if (innerLinkInfoList[i].InnerLinkName.Length < innerLinkInfoList[j].InnerLinkName.Length) { newInnerLinkInfo = innerLinkInfoList[i]; innerLinkInfoList[i] = innerLinkInfoList[j]; innerLinkInfoList[j] = newInnerLinkInfo; } } } var arrayLinkName = new List <string>(); var arrayInnerLink = new List <string>(); for (var i = 0; i < innerLinkInfoList.Count; i++) { newInnerLinkInfo = innerLinkInfoList[i]; arrayLinkName.Add(newInnerLinkInfo.InnerLinkName); arrayInnerLink.Add(newInnerLinkInfo.InnerString); } for (var m = 0; m < arrayLinkName.Count; m++) { var innerLinkName = arrayLinkName[m]; arrayLinkName[m] = Guid.NewGuid().ToString(); parsedContent = RegexUtils.Replace( $"({innerLinkName.Replace(" ", "\\s")})(?!</a>)(?![^><]*>)", parsedContent, arrayLinkName[m], pageInfo.PublishmentSystemInfo.Additional.InnerLinkMaxNum); } for (var n = 0; n < arrayLinkName.Count; n++) { parsedContent = RegexUtils.Replace( $"({arrayLinkName[n].Replace(" ", "\\s")})(?!</a>)(?![^><]*>)", parsedContent, arrayInnerLink[n], pageInfo.PublishmentSystemInfo.Additional.InnerLinkMaxNum); } } } if (isClearTags) { parsedContent = StringUtils.StripTags(parsedContent); } if (!string.IsNullOrEmpty(replace)) { parsedContent = StringUtils.Replace(replace, parsedContent, to); } if (wordNum > 0 && !string.IsNullOrEmpty(parsedContent)) { parsedContent = StringUtils.MaxLengthText(parsedContent, wordNum, ellipsis); } if (!string.IsNullOrEmpty(formatString)) { parsedContent = string.Format(formatString, parsedContent); } if (!contextInfo.IsInnerElement) { parsedContent = parsedContent.Replace("&", "&"); } } else if (BackgroundContentAttribute.PageContent.ToLower().Equals(type)) { //if (contextInfo.IsInnerElement) // { parsedContent = StringUtility.TextEditorContentDecode(contentInfo.GetExtendedAttribute(BackgroundContentAttribute.Content), pageInfo.PublishmentSystemInfo); if (pageInfo.PublishmentSystemInfo.Additional.IsInnerLink) { var innerLinkInfoList = pageInfo.CacheOfInnerLinkInfoList; if (innerLinkInfoList != null && innerLinkInfoList.Count > 0) { InnerLinkInfo newInnerLinkInfo; for (var i = 0; i < innerLinkInfoList.Count - 1; i++) { for (var j = i + 1; j < innerLinkInfoList.Count; j++) { if (innerLinkInfoList[i].InnerLinkName.Length < innerLinkInfoList[j].InnerLinkName.Length) { newInnerLinkInfo = innerLinkInfoList[i]; innerLinkInfoList[i] = innerLinkInfoList[j]; innerLinkInfoList[j] = newInnerLinkInfo; } } } for (var i = 0; i < innerLinkInfoList.Count; i++) { newInnerLinkInfo = innerLinkInfoList[i]; for (var j = i + 1; j < innerLinkInfoList.Count; j++) { var lastInnerLinkInfo = innerLinkInfoList[j]; if (newInnerLinkInfo.InnerLinkName.Contains(lastInnerLinkInfo.InnerLinkName)) { innerLinkInfoList.Remove(lastInnerLinkInfo); } } parsedContent = RegexUtils.Replace( $"({newInnerLinkInfo.InnerLinkName.Replace(" ", "\\s")})(?!</a>)(?![^><]*>)", parsedContent, newInnerLinkInfo.InnerString, pageInfo.PublishmentSystemInfo.Additional.InnerLinkMaxNum); } } } if (isClearTags) { parsedContent = StringUtils.StripTags(parsedContent); } if (!string.IsNullOrEmpty(replace)) { parsedContent = StringUtils.Replace(replace, parsedContent, to); } if (wordNum > 0 && !string.IsNullOrEmpty(parsedContent)) { parsedContent = StringUtils.MaxLengthText(parsedContent, wordNum, ellipsis); } if (!string.IsNullOrEmpty(formatString)) { parsedContent = string.Format(formatString, parsedContent); } } else if (ContentAttribute.AddDate.ToLower().Equals(type)) { parsedContent = DateUtils.Format(contentInfo.AddDate, formatString); } else if (ContentAttribute.LastEditDate.ToLower().Equals(type)) { parsedContent = DateUtils.Format(contentInfo.LastEditDate, formatString); } else if (BackgroundContentAttribute.ImageUrl.ToLower().Equals(type)) { if (no == "all") { var sbParsedContent = new StringBuilder(); //第一条 if (contextInfo.IsCurlyBrace) { sbParsedContent.Append(PageUtility.ParseNavigationUrl(pageInfo.PublishmentSystemInfo, GetImageUrlByType(contentInfo.GetExtendedAttribute(BackgroundContentAttribute.ImageUrl), imageType))); } else { sbParsedContent.Append(InputParserUtility.GetImageOrFlashHtml(pageInfo.PublishmentSystemInfo, GetImageUrlByType(contentInfo.GetExtendedAttribute(BackgroundContentAttribute.ImageUrl), imageType), attributes, false)); } //第n条 var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.ImageUrl); var extendValues = contentInfo.GetExtendedAttribute(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { var newExtendValue = GetImageUrlByType(extendValue, imageType); if (contextInfo.IsCurlyBrace) { sbParsedContent.Append(PageUtility.ParseNavigationUrl(pageInfo.PublishmentSystemInfo, newExtendValue)); } else { sbParsedContent.Append(InputParserUtility.GetImageOrFlashHtml(pageInfo.PublishmentSystemInfo, newExtendValue, attributes, false)); } } } parsedContent = sbParsedContent.ToString(); } else { var num = TranslateUtils.ToInt(no, 0); if (num <= 1) { if (contextInfo.IsCurlyBrace) { parsedContent = PageUtility.ParseNavigationUrl(pageInfo.PublishmentSystemInfo, GetImageUrlByType(contentInfo.GetExtendedAttribute(BackgroundContentAttribute.ImageUrl), imageType)); } else { parsedContent = InputParserUtility.GetImageOrFlashHtml(pageInfo.PublishmentSystemInfo, GetImageUrlByType(contentInfo.GetExtendedAttribute(BackgroundContentAttribute.ImageUrl), imageType), attributes, false); } } else { var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.ImageUrl); var extendValues = contentInfo.GetExtendedAttribute(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { var index = 2; foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { var newExtendValue = GetImageUrlByType(extendValue, imageType); if (index == num) { if (contextInfo.IsCurlyBrace) { parsedContent = PageUtility.ParseNavigationUrl(pageInfo.PublishmentSystemInfo, newExtendValue); } else { parsedContent = InputParserUtility.GetImageOrFlashHtml(pageInfo.PublishmentSystemInfo, newExtendValue, attributes, false); } break; } index++; } } } } } else if (BackgroundContentAttribute.VideoUrl.ToLower().Equals(type)) { if (no == "all") { var sbParsedContent = new StringBuilder(); //第一条 sbParsedContent.Append(InputParserUtility.GetVideoHtml(pageInfo.PublishmentSystemInfo, contentInfo.GetExtendedAttribute(BackgroundContentAttribute.VideoUrl), attributes, false)); //第n条 var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.VideoUrl); var extendValues = contentInfo.GetExtendedAttribute(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { sbParsedContent.Append(InputParserUtility.GetVideoHtml(pageInfo.PublishmentSystemInfo, extendValue, attributes, false)); } } parsedContent = sbParsedContent.ToString(); } else { var num = TranslateUtils.ToInt(no, 0); if (num <= 1) { parsedContent = InputParserUtility.GetVideoHtml(pageInfo.PublishmentSystemInfo, contentInfo.GetExtendedAttribute(BackgroundContentAttribute.VideoUrl), attributes, false); } else { var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.VideoUrl); var extendValues = contentInfo.GetExtendedAttribute(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { var index = 2; foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { if (index == num) { parsedContent = InputParserUtility.GetVideoHtml(pageInfo.PublishmentSystemInfo, extendValue, attributes, false); break; } index++; } } } } } else if (BackgroundContentAttribute.FileUrl.ToLower().Equals(type)) { if (no == "all") { var sbParsedContent = new StringBuilder(); if (contextInfo.IsCurlyBrace) { //第一条 sbParsedContent.Append(contentInfo.GetExtendedAttribute(BackgroundContentAttribute.FileUrl)); //第n条 var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.FileUrl); var extendValues = contentInfo.GetExtendedAttribute(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { sbParsedContent.Append(extendValue); } } } else { //第一条 sbParsedContent.Append(InputParserUtility.GetFileHtmlWithCount(pageInfo.PublishmentSystemInfo, contentInfo.NodeId, contentInfo.Id, contentInfo.GetExtendedAttribute(BackgroundContentAttribute.FileUrl), attributes, node.InnerXml, false)); //第n条 var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.FileUrl); var extendValues = contentInfo.GetExtendedAttribute(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { sbParsedContent.Append(InputParserUtility.GetFileHtmlWithCount(pageInfo.PublishmentSystemInfo, contentInfo.NodeId, contentInfo.Id, extendValue, attributes, node.InnerXml, false)); } } } parsedContent = sbParsedContent.ToString(); } else { var num = TranslateUtils.ToInt(no, 0); if (contextInfo.IsCurlyBrace) { if (num <= 1) { parsedContent = contentInfo.GetExtendedAttribute(BackgroundContentAttribute.FileUrl); } else { var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.FileUrl); var extendValues = contentInfo.GetExtendedAttribute(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { var index = 2; foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { if (index == num) { parsedContent = extendValue; break; } index++; } } } } else { if (num <= 1) { parsedContent = InputParserUtility.GetFileHtmlWithCount(pageInfo.PublishmentSystemInfo, contentInfo.NodeId, contentInfo.Id, contentInfo.GetExtendedAttribute(BackgroundContentAttribute.FileUrl), attributes, node.InnerXml, false); } else { var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.FileUrl); var extendValues = contentInfo.GetExtendedAttribute(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { var index = 2; foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { if (index == num) { parsedContent = InputParserUtility.GetFileHtmlWithCount(pageInfo.PublishmentSystemInfo, contentInfo.NodeId, contentInfo.Id, extendValue, attributes, node.InnerXml, false); break; } index++; } } } } } } else if (BackgroundContentAttribute.NavigationUrl.ToLower().Equals(type)) { parsedContent = PageUtility.GetContentUrl(pageInfo.PublishmentSystemInfo, contentInfo); } else if (ContentAttribute.Tags.ToLower().Equals(type)) { parsedContent = contentInfo.Tags; } else if (StringUtils.StartsWithIgnoreCase(type, StlParserUtility.ItemIndex) && contextInfo.ItemContainer?.ContentItem != null) { var itemIndex = StlParserUtility.ParseItemIndex(contextInfo.ItemContainer.ContentItem.ItemIndex, type, contextInfo); parsedContent = !string.IsNullOrEmpty(formatString) ? string.Format(formatString, itemIndex) : itemIndex.ToString(); } else if (ContentAttribute.AddUserName.ToLower().Equals(type)) { if (!string.IsNullOrEmpty(contentInfo.AddUserName)) { var displayName = BaiRongDataProvider.AdministratorDao.GetDisplayName(contentInfo.AddUserName); parsedContent = string.IsNullOrEmpty(displayName) ? contentInfo.AddUserName : displayName; } } else { var isSelected = false; var nodeInfo = NodeManager.GetNodeInfo(pageInfo.PublishmentSystemId, contentInfo.NodeId); var tableStyle = NodeManager.GetTableStyle(pageInfo.PublishmentSystemInfo, nodeInfo); //WCM SPECIFIC if (tableStyle == ETableStyle.GovInteractContent) { isSelected = true; if (GovInteractContentAttribute.State.ToLower().Equals(type)) { parsedContent = EGovInteractStateUtils.GetText(EGovInteractStateUtils.GetEnumType(contentInfo.GetExtendedAttribute(GovInteractContentAttribute.State))); } else if (StringUtils.EqualsIgnoreCase(type, GovInteractContentAttribute.Reply)) { var replyInfo = DataProvider.GovInteractReplyDao.GetReplyInfoByContentId(pageInfo.PublishmentSystemId, contentInfo.Id); if (replyInfo != null) { parsedContent = replyInfo.Reply; if (!string.IsNullOrEmpty(parsedContent)) { parsedContent = StringUtils.ParseString(EInputType.TextEditor, parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); } } } else if (StringUtils.EqualsIgnoreCase(type, GovInteractContentAttribute.ReplyDepartment)) { var replyInfo = DataProvider.GovInteractReplyDao.GetReplyInfoByContentId(pageInfo.PublishmentSystemId, contentInfo.Id); if (replyInfo != null) { parsedContent = DepartmentManager.GetDepartmentName(replyInfo.DepartmentID); } } else if (StringUtils.EqualsIgnoreCase(type, GovInteractContentAttribute.ReplyUserName)) { var replyInfo = DataProvider.GovInteractReplyDao.GetReplyInfoByContentId(pageInfo.PublishmentSystemId, contentInfo.Id); if (replyInfo != null) { parsedContent = replyInfo.UserName; } } else if (StringUtils.EqualsIgnoreCase(type, GovInteractContentAttribute.ReplyDate)) { var replyInfo = DataProvider.GovInteractReplyDao.GetReplyInfoByContentId(pageInfo.PublishmentSystemId, contentInfo.Id); if (replyInfo != null) { var addDate = replyInfo.AddDate; parsedContent = DateUtils.Format(addDate, formatString); } } else if (StringUtils.EqualsIgnoreCase(type, GovInteractContentAttribute.ReplyFileUrl)) { var replyInfo = DataProvider.GovInteractReplyDao.GetReplyInfoByContentId(pageInfo.PublishmentSystemId, contentInfo.Id); if (replyInfo != null) { parsedContent = PageUtility.ParseNavigationUrl(pageInfo.PublishmentSystemInfo, replyInfo.FileUrl); } } else { isSelected = false; } } //WCM SPECIFIC if (!isSelected && contentInfo.ContainsKey(type)) { if (!ContentAttribute.HiddenAttributes.Contains(type.ToLower())) { var relatedIdentities = RelatedIdentities.GetChannelRelatedIdentities(pageInfo.PublishmentSystemId, contentInfo.NodeId); var tableName = NodeManager.GetTableName(pageInfo.PublishmentSystemInfo, nodeInfo); var styleInfo = TableStyleManager.GetTableStyleInfo(tableStyle, tableName, type, relatedIdentities); var num = TranslateUtils.ToInt(no); parsedContent = InputParserUtility.GetContentByTableStyle(contentInfo, separator, pageInfo.PublishmentSystemInfo, tableStyle, styleInfo, formatString, num, attributes, node.InnerXml, false); parsedContent = StringUtils.ParseString(EInputTypeUtils.GetEnumType(styleInfo.InputType), parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); } else { parsedContent = contentInfo.GetExtendedAttribute(type); parsedContent = StringUtils.ParseString(parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); } } if (!contextInfo.IsInnerElement) { parsedContent = parsedContent.Replace("&", "&"); } } if (!string.IsNullOrEmpty(parsedContent)) { parsedContent = leftText + parsedContent + rightText; } } else { if (!string.IsNullOrEmpty(type) && contextInfo.ItemContainer != null && contextInfo.ItemContainer.ContentItem != null) { parsedContent = DataBinder.Eval(contextInfo.ItemContainer.ContentItem.DataItem, type, "{0}"); parsedContent = StringUtils.ParseString(parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); if (!string.IsNullOrEmpty(parsedContent)) { parsedContent = leftText + parsedContent + rightText; } } } return(parsedContent); }
public static string GetContentTitle(SiteInfo siteInfo, ContentInfo contentInfo, string pageUrl) { string url; var title = ContentUtility.FormatTitle(contentInfo.GetString(BackgroundContentAttribute.TitleFormatString), contentInfo.Title); var displayString = contentInfo.IsTop ? $"<span style='color:#ff0000;text-decoration:none' title='醒目'>{title}</span>" : title; if (contentInfo.ChannelId < 0) { url = displayString; } else if (contentInfo.IsChecked) { url = $"<a href='{PageRedirect.GetRedirectUrlToContent(siteInfo.Id, contentInfo.ChannelId, contentInfo.Id)}' target='blank'>{displayString}</a>"; } else { url = $"<a href='{PageContentView.GetContentViewUrl(siteInfo.Id, contentInfo.ChannelId, contentInfo.Id, pageUrl)}'>{displayString}</a>"; } var image = string.Empty; if (contentInfo.IsRecommend) { image += " <img src='../pic/icon/recommend.gif' title='推荐' align='absmiddle' border=0 />"; } if (contentInfo.IsHot) { image += " <img src='../pic/icon/hot.gif' title='热点' align='absmiddle' border=0 />"; } if (contentInfo.IsTop) { image += " <img src='../pic/icon/top.gif' title='置顶' align='absmiddle' border=0 />"; } if (contentInfo.ReferenceId > 0) { if (contentInfo.GetString(ContentAttribute.TranslateContentType) == ETranslateContentType.ReferenceContent.ToString()) { image += " <img src='../pic/icon/reference.png' title='引用内容' align='absmiddle' border=0 />(引用内容)"; } else if (contentInfo.GetString(ContentAttribute.TranslateContentType) != ETranslateContentType.ReferenceContent.ToString()) { image += " <img src='../pic/icon/reference.png' title='引用地址' align='absmiddle' border=0 />(引用地址)"; } } if (!string.IsNullOrEmpty(contentInfo.GetString(ContentAttribute.LinkUrl))) { image += " <img src='../pic/icon/link.png' title='外部链接' align='absmiddle' border=0 />"; } if (!string.IsNullOrEmpty(contentInfo.GetString(BackgroundContentAttribute.ImageUrl))) { var imageUrl = PageUtility.ParseNavigationUrl(siteInfo, contentInfo.GetString(BackgroundContentAttribute.ImageUrl), true); var openWindowString = ModalMessage.GetOpenWindowString(siteInfo.Id, "预览图片", $"<img src='{imageUrl}' />", 500, 500); image += $@" <a href=""javascript:;"" onclick=""{openWindowString}""><img src='../assets/icons/img.gif' title='预览图片' align='absmiddle' border=0 /></a>"; } if (!string.IsNullOrEmpty(contentInfo.GetString(BackgroundContentAttribute.VideoUrl))) { var openWindowString = ModalMessage.GetOpenWindowStringToPreviewVideoByUrl(siteInfo.Id, contentInfo.GetString(BackgroundContentAttribute.VideoUrl)); image += $@" <a href=""javascript:;"" onclick=""{openWindowString}""><img src='../pic/icon/video.png' title='预览视频' align='absmiddle' border=0 /></a>"; } if (!string.IsNullOrEmpty(contentInfo.GetString(BackgroundContentAttribute.FileUrl))) { image += " <img src='../pic/icon/attachment.gif' title='附件' align='absmiddle' border=0 />"; if (siteInfo.Additional.IsCountDownload) { var count = CountManager.GetCount(siteInfo.TableName, contentInfo.Id.ToString(), ECountType.Download); image += $"下载次数:<strong>{count}</strong>"; } } if (!string.IsNullOrEmpty(contentInfo.WritingUserName)) { var openWindowString = ModalUserView.GetOpenWindowString(contentInfo.WritingUserName); image += $@" (<a href=""javascript:;"" onclick=""{openWindowString}"">投稿用户:{contentInfo.WritingUserName}</a>)"; } return(url + image); }
private static string ParseImpl(PageInfo pageInfo, ContextInfo contextInfo, string leftText, string rightText, string formatString, string no, string separator, int startIndex, int length, int wordNum, string ellipsis, string replace, string to, bool isClearTags, string isReturnToBrStr, bool isLower, bool isUpper, bool isOriginal, string type) { var parsedContent = string.Empty; var isReturnToBr = false; if (string.IsNullOrEmpty(isReturnToBrStr)) { if (BackgroundContentAttribute.Summary.ToLower().Equals(type)) { isReturnToBr = true; } } else { isReturnToBr = TranslateUtils.ToBool(isReturnToBrStr, true); } var contentId = contextInfo.ContentId; var contentInfo = contextInfo.ContentInfo; if (contentInfo == null) { return(string.Empty); } if (isOriginal) { if (contentInfo.ReferenceId > 0 && contentInfo.SourceId > 0 && contentInfo.GetString(ContentAttribute.TranslateContentType) == ETranslateContentType.Reference.ToString()) { var targetChannelId = contentInfo.SourceId; //var targetSiteId = DataProvider.ChannelDao.GetSiteId(targetChannelId); var targetSiteId = Node.GetSiteId(targetChannelId); var targetSiteInfo = SiteManager.GetSiteInfo(targetSiteId); var targetNodeInfo = ChannelManager.GetChannelInfo(targetSiteId, targetChannelId); var tableName = ChannelManager.GetTableName(targetSiteInfo, targetNodeInfo); //var targetContentInfo = DataProvider.ContentDao.GetContentInfo(tableStyle, tableName, contentInfo.ReferenceId); var targetContentInfo = Content.GetContentInfo(tableName, contentInfo.ReferenceId); if (targetContentInfo != null && targetContentInfo.ChannelId > 0) { //标题可以使用自己的 targetContentInfo.Title = contentInfo.Title; contentInfo = targetContentInfo; } } } if (!string.IsNullOrEmpty(formatString)) { formatString = formatString.Trim(); if (!formatString.StartsWith("{0")) { formatString = "{0:" + formatString; } if (!formatString.EndsWith("}")) { formatString = formatString + "}"; } } if (contentId != 0) { if (ContentAttribute.Title.ToLower().Equals(type)) { var relatedIdentities = RelatedIdentities.GetChannelRelatedIdentities(pageInfo.SiteId, contentInfo.ChannelId); var nodeInfo = ChannelManager.GetChannelInfo(pageInfo.SiteId, contentInfo.ChannelId); var tableName = ChannelManager.GetTableName(pageInfo.SiteInfo, nodeInfo); var styleInfo = TableStyleManager.GetTableStyleInfo(tableName, type, relatedIdentities); parsedContent = InputParserUtility.GetContentByTableStyle(contentInfo.Title, separator, pageInfo.SiteInfo, styleInfo, formatString, contextInfo.Attributes, contextInfo.InnerXml, false); parsedContent = StringUtils.ParseString(styleInfo.InputType, parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); if (!isClearTags && !string.IsNullOrEmpty(contentInfo.GetString(BackgroundContentAttribute.TitleFormatString))) { parsedContent = ContentUtility.FormatTitle(contentInfo.GetString(BackgroundContentAttribute.TitleFormatString), parsedContent); } if (!contextInfo.IsInnerElement) { parsedContent = parsedContent.Replace("&", "&"); } if (pageInfo.SiteInfo.Additional.IsContentTitleBreakLine) { parsedContent = parsedContent.Replace(" ", !contextInfo.IsInnerElement ? "<br />" : string.Empty); } } else if (BackgroundContentAttribute.Summary.ToLower().Equals(type)) { parsedContent = StringUtils.ParseString(contentInfo.GetString(BackgroundContentAttribute.Summary), replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); if (!contextInfo.IsInnerElement) { parsedContent = parsedContent.Replace("&", "&"); } } else if (BackgroundContentAttribute.Content.ToLower().Equals(type)) { parsedContent = ContentUtility.TextEditorContentDecode(pageInfo.SiteInfo, contentInfo.GetString(BackgroundContentAttribute.Content), pageInfo.IsLocal); if (isClearTags) { parsedContent = StringUtils.StripTags(parsedContent); } if (!string.IsNullOrEmpty(replace)) { parsedContent = StringUtils.Replace(replace, parsedContent, to); } if (wordNum > 0 && !string.IsNullOrEmpty(parsedContent)) { parsedContent = StringUtils.MaxLengthText(parsedContent, wordNum, ellipsis); } if (!string.IsNullOrEmpty(formatString)) { parsedContent = string.Format(formatString, parsedContent); } if (!contextInfo.IsInnerElement) { parsedContent = parsedContent.Replace("&", "&"); } } else if (BackgroundContentAttribute.PageContent.ToLower().Equals(type)) { //if (contextInfo.IsInnerElement) // { parsedContent = ContentUtility.TextEditorContentDecode(pageInfo.SiteInfo, contentInfo.GetString(BackgroundContentAttribute.Content), pageInfo.IsLocal); if (isClearTags) { parsedContent = StringUtils.StripTags(parsedContent); } if (!string.IsNullOrEmpty(replace)) { parsedContent = StringUtils.Replace(replace, parsedContent, to); } if (wordNum > 0 && !string.IsNullOrEmpty(parsedContent)) { parsedContent = StringUtils.MaxLengthText(parsedContent, wordNum, ellipsis); } if (!string.IsNullOrEmpty(formatString)) { parsedContent = string.Format(formatString, parsedContent); } } else if (ContentAttribute.AddDate.ToLower().Equals(type)) { parsedContent = DateUtils.Format(contentInfo.AddDate, formatString); } else if (ContentAttribute.LastEditDate.ToLower().Equals(type)) { parsedContent = DateUtils.Format(contentInfo.LastEditDate, formatString); } else if (BackgroundContentAttribute.ImageUrl.ToLower().Equals(type)) { if (no == "all") { var sbParsedContent = new StringBuilder(); //第一条 sbParsedContent.Append(contextInfo.IsCurlyBrace ? PageUtility.ParseNavigationUrl(pageInfo.SiteInfo, contentInfo.GetString(BackgroundContentAttribute.ImageUrl), pageInfo.IsLocal) : InputParserUtility.GetImageOrFlashHtml(pageInfo.SiteInfo, contentInfo.GetString(BackgroundContentAttribute.ImageUrl), contextInfo.Attributes, false)); //第n条 var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.ImageUrl); var extendValues = contentInfo.GetString(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { foreach (var extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { var newExtendValue = extendValue; sbParsedContent.Append(contextInfo.IsCurlyBrace ? PageUtility.ParseNavigationUrl(pageInfo.SiteInfo, newExtendValue, pageInfo.IsLocal) : InputParserUtility.GetImageOrFlashHtml(pageInfo.SiteInfo, newExtendValue, contextInfo.Attributes, false)); } } parsedContent = sbParsedContent.ToString(); } else { var num = TranslateUtils.ToInt(no, 0); if (num <= 1) { parsedContent = contextInfo.IsCurlyBrace ? PageUtility.ParseNavigationUrl(pageInfo.SiteInfo, contentInfo.GetString(BackgroundContentAttribute.ImageUrl), pageInfo.IsLocal) : InputParserUtility.GetImageOrFlashHtml(pageInfo.SiteInfo, contentInfo.GetString(BackgroundContentAttribute.ImageUrl), contextInfo.Attributes, false); } else { var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.ImageUrl); var extendValues = contentInfo.GetString(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { var index = 2; foreach (var extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { var newExtendValue = extendValue; if (index == num) { parsedContent = contextInfo.IsCurlyBrace ? PageUtility.ParseNavigationUrl(pageInfo.SiteInfo, newExtendValue, pageInfo.IsLocal) : InputParserUtility.GetImageOrFlashHtml(pageInfo.SiteInfo, newExtendValue, contextInfo.Attributes, false); break; } index++; } } } } } else if (BackgroundContentAttribute.VideoUrl.ToLower().Equals(type)) { if (no == "all") { var sbParsedContent = new StringBuilder(); //第一条 sbParsedContent.Append(InputParserUtility.GetVideoHtml(pageInfo.SiteInfo, contentInfo.GetString(BackgroundContentAttribute.VideoUrl), contextInfo.Attributes, contextInfo.IsCurlyBrace)); //第n条 var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.VideoUrl); var extendValues = contentInfo.GetString(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { sbParsedContent.Append(InputParserUtility.GetVideoHtml(pageInfo.SiteInfo, extendValue, contextInfo.Attributes, contextInfo.IsCurlyBrace)); } } parsedContent = sbParsedContent.ToString(); } else { var num = TranslateUtils.ToInt(no, 0); if (num <= 1) { parsedContent = InputParserUtility.GetVideoHtml(pageInfo.SiteInfo, contentInfo.GetString(BackgroundContentAttribute.VideoUrl), contextInfo.Attributes, contextInfo.IsCurlyBrace); } else { var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.VideoUrl); var extendValues = contentInfo.GetString(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { var index = 2; foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { if (index == num) { parsedContent = InputParserUtility.GetVideoHtml(pageInfo.SiteInfo, extendValue, contextInfo.Attributes, contextInfo.IsCurlyBrace); break; } index++; } } } } } else if (BackgroundContentAttribute.FileUrl.ToLower().Equals(type)) { if (no == "all") { var sbParsedContent = new StringBuilder(); if (contextInfo.IsCurlyBrace) { //第一条 sbParsedContent.Append(contentInfo.GetString(BackgroundContentAttribute.FileUrl)); //第n条 var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.FileUrl); var extendValues = contentInfo.GetString(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { sbParsedContent.Append(extendValue); } } } else { //第一条 sbParsedContent.Append(InputParserUtility.GetFileHtmlWithCount(pageInfo.SiteInfo, contentInfo.ChannelId, contentInfo.Id, contentInfo.GetString(BackgroundContentAttribute.FileUrl), contextInfo.Attributes, contextInfo.InnerXml, false)); //第n条 var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.FileUrl); var extendValues = contentInfo.GetString(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { sbParsedContent.Append(InputParserUtility.GetFileHtmlWithCount(pageInfo.SiteInfo, contentInfo.ChannelId, contentInfo.Id, extendValue, contextInfo.Attributes, contextInfo.InnerXml, false)); } } } parsedContent = sbParsedContent.ToString(); } else { var num = TranslateUtils.ToInt(no, 0); if (contextInfo.IsCurlyBrace) { if (num <= 1) { parsedContent = contentInfo.GetString(BackgroundContentAttribute.FileUrl); } else { var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.FileUrl); var extendValues = contentInfo.GetString(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { var index = 2; foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { if (index == num) { parsedContent = extendValue; break; } index++; } } } if (!string.IsNullOrEmpty(parsedContent)) { parsedContent = PageUtility.ParseNavigationUrl(pageInfo.SiteInfo, parsedContent, pageInfo.IsLocal); } } else { if (num <= 1) { parsedContent = InputParserUtility.GetFileHtmlWithCount(pageInfo.SiteInfo, contentInfo.ChannelId, contentInfo.Id, contentInfo.GetString(BackgroundContentAttribute.FileUrl), contextInfo.Attributes, contextInfo.InnerXml, false); } else { var extendAttributeName = ContentAttribute.GetExtendAttributeName(BackgroundContentAttribute.FileUrl); var extendValues = contentInfo.GetString(extendAttributeName); if (!string.IsNullOrEmpty(extendValues)) { var index = 2; foreach (string extendValue in TranslateUtils.StringCollectionToStringList(extendValues)) { if (index == num) { parsedContent = InputParserUtility.GetFileHtmlWithCount(pageInfo.SiteInfo, contentInfo.ChannelId, contentInfo.Id, extendValue, contextInfo.Attributes, contextInfo.InnerXml, false); break; } index++; } } } } } } else if (BackgroundContentAttribute.NavigationUrl.ToLower().Equals(type)) { parsedContent = PageUtility.GetContentUrl(pageInfo.SiteInfo, contentInfo, pageInfo.IsLocal); } else if (ContentAttribute.Tags.ToLower().Equals(type)) { parsedContent = contentInfo.Tags; } else if (StringUtils.StartsWithIgnoreCase(type, StlParserUtility.ItemIndex) && contextInfo.ItemContainer?.ContentItem != null) { var itemIndex = StlParserUtility.ParseItemIndex(contextInfo.ItemContainer.ContentItem.ItemIndex, type, contextInfo); parsedContent = !string.IsNullOrEmpty(formatString) ? string.Format(formatString, itemIndex) : itemIndex.ToString(); } else if (ContentAttribute.AddUserName.ToLower().Equals(type)) { if (!string.IsNullOrEmpty(contentInfo.AddUserName)) { //var displayName = DataProvider.AdministratorDao.GetDisplayName(contentInfo.AddUserName); var displayName = Administrator.GetDisplayName(contentInfo.AddUserName); parsedContent = string.IsNullOrEmpty(displayName) ? contentInfo.AddUserName : displayName; } } else { var nodeInfo = ChannelManager.GetChannelInfo(pageInfo.SiteId, contentInfo.ChannelId); if (contentInfo.ContainsKey(type)) { if (!ContentAttribute.AllAttributesLowercase.Contains(type.ToLower())) { var relatedIdentities = RelatedIdentities.GetChannelRelatedIdentities(pageInfo.SiteId, contentInfo.ChannelId); var tableName = ChannelManager.GetTableName(pageInfo.SiteInfo, nodeInfo); var styleInfo = TableStyleManager.GetTableStyleInfo(tableName, type, relatedIdentities); //styleInfo.IsVisible = false 表示此字段不需要显示 styleInfo.TableStyleId = 0 不能排除,因为有可能是直接辅助表字段没有添加显示样式 var num = TranslateUtils.ToInt(no); parsedContent = InputParserUtility.GetContentByTableStyle(contentInfo, separator, pageInfo.SiteInfo, styleInfo, formatString, num, contextInfo.Attributes, contextInfo.InnerXml, false); parsedContent = StringUtils.ParseString(styleInfo.InputType, parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); } else { parsedContent = contentInfo.GetString(type); parsedContent = StringUtils.ParseString(parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); } } if (!contextInfo.IsInnerElement) { parsedContent = parsedContent.Replace("&", "&"); } } if (!string.IsNullOrEmpty(parsedContent)) { parsedContent = leftText + parsedContent + rightText; } } return(parsedContent); }
private static string ParseImpl(PageInfo pageInfo, ContextInfo contextInfo, string channelIndex, string channelName, int upLevel, int topLevel, bool removeTarget, string href, string queryString, string host, Dictionary <string, string> attributes) { string htmlId; attributes.TryGetValue("id", out htmlId); if (!string.IsNullOrEmpty(htmlId) && !string.IsNullOrEmpty(contextInfo.ContainerClientId)) { htmlId = contextInfo.ContainerClientId + "_" + htmlId; } if (!string.IsNullOrEmpty(htmlId)) { attributes["id"] = htmlId; } var innerHtml = string.Empty; var url = string.Empty; var onclick = string.Empty; if (!string.IsNullOrEmpty(href)) { url = PageUtility.ParseNavigationUrl(pageInfo.SiteInfo, href, pageInfo.IsLocal); var innerBuilder = new StringBuilder(contextInfo.InnerHtml); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); innerHtml = innerBuilder.ToString(); } else { if (contextInfo.ContextType == EContextType.Undefined) { contextInfo.ContextType = contextInfo.ContentId != 0 ? EContextType.Content : EContextType.Channel; } if (contextInfo.ContextType == EContextType.Content) //获取内容Url { if (contextInfo.ContentInfo != null) { url = PageUtility.GetContentUrl(pageInfo.SiteInfo, contextInfo.ContentInfo, pageInfo.IsLocal); } else { var nodeInfo = ChannelManager.GetChannelInfo(pageInfo.SiteId, contextInfo.ChannelId); url = PageUtility.GetContentUrl(pageInfo.SiteInfo, nodeInfo, contextInfo.ContentId, pageInfo.IsLocal); } if (string.IsNullOrEmpty(contextInfo.InnerHtml)) { var title = contextInfo.ContentInfo?.Title; title = ContentUtility.FormatTitle( contextInfo.ContentInfo?.GetString("BackgroundContentAttribute.TitleFormatString"), title); if (pageInfo.SiteInfo.Additional.IsContentTitleBreakLine) { title = title.Replace(" ", string.Empty); } innerHtml = title; } else { var innerBuilder = new StringBuilder(contextInfo.InnerHtml); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); innerHtml = innerBuilder.ToString(); } } else if (contextInfo.ContextType == EContextType.Channel) //获取栏目Url { contextInfo.ChannelId = StlDataUtility.GetChannelIdByLevel(pageInfo.SiteId, contextInfo.ChannelId, upLevel, topLevel); contextInfo.ChannelId = ChannelManager.GetChannelId(pageInfo.SiteId, contextInfo.ChannelId, channelIndex, channelName); var channel = ChannelManager.GetChannelInfo(pageInfo.SiteId, contextInfo.ChannelId); url = PageUtility.GetChannelUrl(pageInfo.SiteInfo, channel, pageInfo.IsLocal); if (string.IsNullOrWhiteSpace(contextInfo.InnerHtml)) { innerHtml = channel.ChannelName; } else { var innerBuilder = new StringBuilder(contextInfo.InnerHtml); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); innerHtml = innerBuilder.ToString(); } } } if (url.Equals(PageUtils.UnclickedUrl)) { removeTarget = true; } else { if (!string.IsNullOrEmpty(host)) { url = PageUtils.AddProtocolToUrl(url, host); } if (!string.IsNullOrEmpty(queryString)) { url = PageUtils.AddQueryString(url, queryString); } } attributes["href"] = url; if (!string.IsNullOrEmpty(onclick)) { attributes["onclick"] = onclick; } if (removeTarget) { attributes["target"] = string.Empty; } // 如果是实体标签,则只返回url if (contextInfo.IsStlEntity) { return(url); } return($@"<a {TranslateUtils.ToAttributesString(attributes)}>{innerHtml}</a>"); }
private static async Task <string> ParseImplAsync(IParseManager parseManager, string leftText, string rightText, string formatString, string no, string separator, int startIndex, int length, int wordNum, string ellipsis, string replace, string to, bool isClearTags, string isReturnToBrStr, bool isLower, bool isUpper, bool isOriginal, string type, Content content, int contentId) { var pageInfo = parseManager.PageInfo; var contextInfo = parseManager.ContextInfo; var databaseManager = parseManager.DatabaseManager; if (content == null) { return(string.Empty); } var parsedContent = string.Empty; if (string.IsNullOrEmpty(type)) { type = nameof(Content.Title); } var isReturnToBr = false; if (string.IsNullOrEmpty(isReturnToBrStr)) { if (StringUtils.EqualsIgnoreCase(type, nameof(Content.Summary))) { isReturnToBr = true; } } else { isReturnToBr = TranslateUtils.ToBool(isReturnToBrStr, true); } if (isOriginal) { if (content.ReferenceId > 0 && content.SourceId > 0 && TranslateType.Reference.GetValue() == content.Get <string>(ColumnsManager.TranslateContentType)) { var targetChannelId = content.SourceId; //var targetSiteId = databaseManager.ChannelRepository.GetSiteId(targetChannelId); var targetSiteId = await databaseManager.ChannelRepository.GetSiteIdAsync(targetChannelId); var targetSite = await databaseManager.SiteRepository.GetAsync(targetSiteId); var targetNodeInfo = await databaseManager.ChannelRepository.GetAsync(targetChannelId); //var targetContentInfo = databaseManager.ContentRepository.GetContentInfo(tableStyle, tableName, content.ReferenceId); var targetContentInfo = await databaseManager.ContentRepository.GetAsync(targetSite, targetNodeInfo, content.ReferenceId); if (targetContentInfo != null && targetContentInfo.ChannelId > 0) { //标题可以使用自己的 targetContentInfo.Title = content.Title; content = targetContentInfo; } } } if (!string.IsNullOrEmpty(formatString)) { formatString = formatString.Trim(); if (!formatString.StartsWith("{0")) { formatString = "{0:" + formatString; } if (!formatString.EndsWith("}")) { formatString = formatString + "}"; } } if (contentId != 0) { if (StringUtils.EqualsIgnoreCase(type, nameof(Content.Title))) { var channel = await databaseManager.ChannelRepository.GetAsync(content.ChannelId); var relatedIdentities = databaseManager.TableStyleRepository.GetRelatedIdentities(channel); var tableName = databaseManager.ChannelRepository.GetTableName(pageInfo.Site, channel); var styleInfo = await databaseManager.TableStyleRepository.GetTableStyleAsync(tableName, type, relatedIdentities); var inputParser = new InputParserManager(parseManager.PathManager); parsedContent = await inputParser.GetContentByTableStyleAsync(content.Title, separator, pageInfo.Site, styleInfo, formatString, contextInfo.Attributes, contextInfo.InnerHtml, false); parsedContent = InputTypeUtils.ParseString(styleInfo.InputType, parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); if (!isClearTags && !string.IsNullOrEmpty(content.Get <string>(ColumnsManager.GetFormatStringAttributeName(nameof(Content.Title))))) { parsedContent = ContentUtility.FormatTitle(content.Get <string>(ColumnsManager.GetFormatStringAttributeName(nameof(Content.Title))), parsedContent); } if (pageInfo.Site.IsContentTitleBreakLine) { parsedContent = parsedContent.Replace(" ", !contextInfo.IsInnerElement ? "<br />" : string.Empty); } } else if (StringUtils.EqualsIgnoreCase(type, nameof(Content.SubTitle))) { parsedContent = InputTypeUtils.ParseString(InputType.Text, content.SubTitle, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); if (pageInfo.Site.IsContentSubTitleBreakLine) { parsedContent = parsedContent.Replace(" ", !contextInfo.IsInnerElement ? "<br />" : string.Empty); } } else if (StringUtils.EqualsIgnoreCase(type, nameof(Content.Summary))) { parsedContent = InputTypeUtils.ParseString(InputType.TextArea, content.Summary, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); } else if (StringUtils.EqualsIgnoreCase(type, nameof(Content.Body)) || StringUtils.EqualsIgnoreCase(type, nameof(Content))) { parsedContent = await parseManager.PathManager.DecodeTextEditorAsync(pageInfo.Site, content.Body, pageInfo.IsLocal); if (isClearTags) { parsedContent = StringUtils.StripTags(parsedContent); } if (!string.IsNullOrEmpty(replace)) { parsedContent = StringUtils.Replace(parsedContent, replace, to); } if (wordNum > 0 && !string.IsNullOrEmpty(parsedContent)) { parsedContent = StringUtils.MaxLengthText(parsedContent, wordNum, ellipsis); } if (!string.IsNullOrEmpty(formatString)) { parsedContent = string.Format(formatString, parsedContent); } parsedContent = await EditorUtility.ParseAsync(pageInfo, parsedContent); } else if (StringUtils.EqualsIgnoreCase(type, nameof(ColumnsManager.PageContent))) { //if (contextInfo.IsInnerElement) // { parsedContent = await parseManager.PathManager.DecodeTextEditorAsync(pageInfo.Site, content.Body, pageInfo.IsLocal); if (isClearTags) { parsedContent = StringUtils.StripTags(parsedContent); } if (!string.IsNullOrEmpty(replace)) { parsedContent = StringUtils.Replace(parsedContent, replace, to); } if (wordNum > 0 && !string.IsNullOrEmpty(parsedContent)) { parsedContent = StringUtils.MaxLengthText(parsedContent, wordNum, ellipsis); } if (!string.IsNullOrEmpty(formatString)) { parsedContent = string.Format(formatString, parsedContent); } parsedContent = await EditorUtility.ParseAsync(pageInfo, parsedContent); } else if (StringUtils.EqualsIgnoreCase(type, nameof(Content.AddDate))) { parsedContent = DateUtils.Format(content.AddDate, formatString); } else if (StringUtils.EqualsIgnoreCase(type, nameof(Content.LastModifiedDate))) { parsedContent = DateUtils.Format(content.LastModifiedDate, formatString); } else if (StringUtils.EqualsIgnoreCase(type, nameof(Content.LastHitsDate))) { parsedContent = DateUtils.Format(content.LastHitsDate, formatString); } else if (StringUtils.EqualsIgnoreCase(type, nameof(Content.ImageUrl))) { var inputParser = new InputParserManager(parseManager.PathManager); if (no == "all") { var sbParsedContent = new StringBuilder(); //第一条 sbParsedContent.Append(contextInfo.IsStlEntity ? await parseManager.PathManager.ParseSiteUrlAsync(pageInfo.Site, content.ImageUrl, pageInfo.IsLocal) : await inputParser.GetImageOrFlashHtmlAsync(pageInfo.Site, content.ImageUrl, contextInfo.Attributes, false)); //第n条 var countName = ColumnsManager.GetCountName(nameof(Content.ImageUrl)); var count = content.Get <int>(countName); for (var i = 1; i <= count; i++) { var extendName = ColumnsManager.GetExtendName(nameof(Content.ImageUrl), i); var extend = content.Get <string>(extendName); sbParsedContent.Append(contextInfo.IsStlEntity ? await parseManager.PathManager.ParseSiteUrlAsync(pageInfo.Site, extend, pageInfo.IsLocal) : await inputParser.GetImageOrFlashHtmlAsync(pageInfo.Site, extend, contextInfo.Attributes, false)); } //var extendAttributeName = ColumnsManager.GetExtendAttributeName(nameof(Content.ImageUrl)); //var extendValues = content.Get<string>(extendAttributeName); //if (!string.IsNullOrEmpty(extendValues)) //{ // foreach (var extendValue in ListUtils.GetStringList(extendValues)) // { // var newExtendValue = extendValue; // sbParsedContent.Append(contextInfo.IsStlEntity // ? await parseManager.PathManager.ParseNavigationUrlAsync(pageInfo.Site, newExtendValue, pageInfo.IsLocal) // : await inputParser.GetImageOrFlashHtmlAsync(pageInfo.Site, newExtendValue, contextInfo.Attributes, false)); // } //} parsedContent = sbParsedContent.ToString(); } else { var num = TranslateUtils.ToInt(no); if (num <= 1) { parsedContent = contextInfo.IsStlEntity ? await parseManager.PathManager.ParseSiteUrlAsync(pageInfo.Site, content.ImageUrl, pageInfo.IsLocal) : await inputParser.GetImageOrFlashHtmlAsync(pageInfo.Site, content.ImageUrl, contextInfo.Attributes, false); } else { var extendName = ColumnsManager.GetExtendName(nameof(Content.ImageUrl), num - 1); var extend = content.Get <string>(extendName); if (!string.IsNullOrEmpty(extend)) { parsedContent = contextInfo.IsStlEntity ? await parseManager.PathManager.ParseSiteUrlAsync(pageInfo.Site, extend, pageInfo.IsLocal) : await inputParser.GetImageOrFlashHtmlAsync(pageInfo.Site, extend, contextInfo.Attributes, false); } //var extendAttributeName = ColumnsManager.GetExtendAttributeName(nameof(Content.ImageUrl)); //var extendValues = content.Get<string>(extendAttributeName); //if (!string.IsNullOrEmpty(extendValues)) //{ // var index = 2; // foreach (var extendValue in ListUtils.GetStringList(extendValues)) // { // var newExtendValue = extendValue; // if (index == num) // { // parsedContent = contextInfo.IsStlEntity ? await parseManager.PathManager.ParseNavigationUrlAsync(pageInfo.Site, newExtendValue, pageInfo.IsLocal) : await inputParser.GetImageOrFlashHtmlAsync(pageInfo.Site, newExtendValue, contextInfo.Attributes, false); // break; // } // index++; // } //} } } } else if (StringUtils.EqualsIgnoreCase(type, nameof(Content.VideoUrl))) { var inputParser = new InputParserManager(parseManager.PathManager); if (no == "all") { var sbParsedContent = new StringBuilder(); //第一条 sbParsedContent.Append(await inputParser.GetVideoHtmlAsync(pageInfo.Site, content.VideoUrl, contextInfo.Attributes, contextInfo.IsStlEntity)); //第n条 var countName = ColumnsManager.GetCountName(nameof(Content.VideoUrl)); var count = content.Get <int>(countName); for (var i = 1; i <= count; i++) { var extendName = ColumnsManager.GetExtendName(nameof(Content.VideoUrl), i); var extend = content.Get <string>(extendName); sbParsedContent.Append(await inputParser.GetVideoHtmlAsync(pageInfo.Site, extend, contextInfo.Attributes, contextInfo.IsStlEntity)); } //var extendAttributeName = ColumnsManager.GetExtendAttributeName(nameof(Content.VideoUrl)); //var extendValues = content.Get<string>(extendAttributeName); //if (!string.IsNullOrEmpty(extendValues)) //{ // foreach (string extendValue in ListUtils.GetStringList(extendValues)) // { // sbParsedContent.Append(await inputParser.GetVideoHtmlAsync(pageInfo.Config, pageInfo.Site, extendValue, contextInfo.Attributes, contextInfo.IsStlEntity)); // } //} parsedContent = sbParsedContent.ToString(); } else { var num = TranslateUtils.ToInt(no); if (num <= 1) { parsedContent = await inputParser.GetVideoHtmlAsync(pageInfo.Site, content.VideoUrl, contextInfo.Attributes, contextInfo.IsStlEntity); } else { var extendName = ColumnsManager.GetExtendName(nameof(Content.VideoUrl), num - 1); var extend = content.Get <string>(extendName); if (!string.IsNullOrEmpty(extend)) { parsedContent = await inputParser.GetVideoHtmlAsync(pageInfo.Site, extend, contextInfo.Attributes, contextInfo.IsStlEntity); } } } } else if (StringUtils.EqualsIgnoreCase(type, nameof(Content.FileUrl))) { if (no == "all") { var sbParsedContent = new StringBuilder(); if (contextInfo.IsStlEntity) { //第一条 sbParsedContent.Append(content.FileUrl); //第n条 var countName = ColumnsManager.GetCountName(nameof(Content.FileUrl)); var count = content.Get <int>(countName); for (var i = 1; i <= count; i++) { var extendName = ColumnsManager.GetExtendName(nameof(Content.FileUrl), i); var extend = content.Get <string>(extendName); sbParsedContent.Append(extend); } } else { var inputParser = new InputParserManager(parseManager.PathManager); //第一条 sbParsedContent.Append(inputParser.GetFileHtmlWithCount(pageInfo.Site, content.ChannelId, content.Id, content.FileUrl, contextInfo.Attributes, contextInfo.InnerHtml, false, isLower, isUpper)); //第n条 var countName = ColumnsManager.GetCountName(nameof(Content.FileUrl)); var count = content.Get <int>(countName); for (var i = 1; i <= count; i++) { var extendName = ColumnsManager.GetExtendName(nameof(Content.FileUrl), i); var extend = content.Get <string>(extendName); sbParsedContent.Append(inputParser.GetFileHtmlWithCount(pageInfo.Site, content.ChannelId, content.Id, extend, contextInfo.Attributes, contextInfo.InnerHtml, false, isLower, isUpper)); } } parsedContent = sbParsedContent.ToString(); } else { var num = TranslateUtils.ToInt(no); if (contextInfo.IsStlEntity) { if (num <= 1) { parsedContent = content.FileUrl; } else { var extendName = ColumnsManager.GetExtendName(nameof(Content.FileUrl), num - 1); var extend = content.Get <string>(extendName); if (!string.IsNullOrEmpty(extend)) { parsedContent = extend; } } if (!string.IsNullOrEmpty(parsedContent)) { parsedContent = await parseManager.PathManager.ParseSiteUrlAsync(pageInfo.Site, parsedContent, pageInfo.IsLocal); } } else { var inputParser = new InputParserManager(parseManager.PathManager); if (num <= 1) { parsedContent = inputParser.GetFileHtmlWithCount(pageInfo.Site, content.ChannelId, content.Id, content.FileUrl, contextInfo.Attributes, contextInfo.InnerHtml, false, isLower, isUpper); } else { var extendName = ColumnsManager.GetExtendName(nameof(Content.FileUrl), num - 1); var extend = content.Get <string>(extendName); if (!string.IsNullOrEmpty(extend)) { parsedContent = inputParser.GetFileHtmlWithCount(pageInfo.Site, content.ChannelId, content.Id, extend, contextInfo.Attributes, contextInfo.InnerHtml, false, isLower, isUpper); } } } } } else if (StringUtils.EqualsIgnoreCase(type, nameof(ColumnsManager.NavigationUrl))) { if (contextInfo.Content != null) { parsedContent = await parseManager.PathManager.GetContentUrlAsync(pageInfo.Site, contextInfo.Content, pageInfo.IsLocal); } else { var channelInfo = await databaseManager.ChannelRepository.GetAsync(contextInfo.ChannelId); parsedContent = await parseManager.PathManager.GetContentUrlAsync(pageInfo.Site, channelInfo, contextInfo.ContentId, pageInfo.IsLocal); } } else if (StringUtils.EqualsIgnoreCase(type, nameof(Content.TagNames))) { parsedContent = ListUtils.ToString(content.TagNames); } else if (StringUtils.StartsWithIgnoreCase(type, StlParserUtility.ItemIndex) && contextInfo.ItemContainer?.ContentItem != null) { var itemIndex = StlParserUtility.ParseItemIndex(contextInfo.ItemContainer.ContentItem.Key, type, contextInfo); parsedContent = !string.IsNullOrEmpty(formatString) ? string.Format(formatString, itemIndex) : itemIndex.ToString(); } else { var channel = await databaseManager.ChannelRepository.GetAsync(content.ChannelId); if (content.ContainsKey(type)) { if (!ListUtils.ContainsIgnoreCase(ColumnsManager.MetadataAttributes.Value, type)) { var relatedIdentities = databaseManager.TableStyleRepository.GetRelatedIdentities(channel); var tableName = databaseManager.ChannelRepository.GetTableName(pageInfo.Site, channel); var styleInfo = await databaseManager.TableStyleRepository.GetTableStyleAsync(tableName, type, relatedIdentities); //styleInfo.IsVisible = false 表示此字段不需要显示 styleInfo.TableStyleId = 0 不能排除,因为有可能是直接辅助表字段没有添加显示样式 var num = TranslateUtils.ToInt(no); var inputParser = new InputParserManager(parseManager.PathManager); parsedContent = await inputParser.GetContentByTableStyleAsync(content, separator, pageInfo.Site, styleInfo, formatString, num, contextInfo.Attributes, contextInfo.InnerHtml, false); parsedContent = InputTypeUtils.ParseString(styleInfo.InputType, parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); } else { parsedContent = content.Get <string>(type); parsedContent = InputTypeUtils.ParseString(InputType.Text, parsedContent, replace, to, startIndex, length, wordNum, ellipsis, isClearTags, isReturnToBr, isLower, isUpper, formatString); } } } if (!string.IsNullOrEmpty(parsedContent)) { parsedContent = leftText + parsedContent + rightText; } } return(parsedContent); }
public static string GetContentTitle(SiteInfo siteInfo, ContentInfo contentInfo, string pageUrl) { string url; var title = ContentUtility.FormatTitle(contentInfo.GetString(ContentAttribute.GetFormatStringAttributeName(ContentAttribute.Title)), contentInfo.Title); var displayString = contentInfo.IsColor ? $"<span style='color:#ff0000;text-decoration:none' title='醒目'>{title}</span>" : title; if (contentInfo.IsChecked && contentInfo.ChannelId > 0) { url = $"<a>{displayString}</a>"; } else { url = $@"<a href=""javascript:;"" >{displayString}</a>"; } var image = string.Empty; if (contentInfo.IsRecommend) { image += " <img src='../pic/icon/recommend.gif' title='推荐' align='absmiddle' border=0 />"; } if (contentInfo.IsHot) { image += " <img src='../pic/icon/hot.gif' title='热点' align='absmiddle' border=0 />"; } if (contentInfo.IsTop) { image += " <img src='../pic/icon/top.gif' title='置顶' align='absmiddle' border=0 />"; } if (contentInfo.ReferenceId > 0) { if (contentInfo.GetString(ContentAttribute.TranslateContentType) == ETranslateContentType.ReferenceContent.ToString()) { image += " <img src='../pic/icon/reference.png' title='引用内容' align='absmiddle' border=0 />(引用内容)"; } else if (contentInfo.GetString(ContentAttribute.TranslateContentType) != ETranslateContentType.ReferenceContent.ToString()) { image += " <img src='../pic/icon/reference.png' title='引用地址' align='absmiddle' border=0 />(引用地址)"; } } if (!string.IsNullOrEmpty(contentInfo.GetString(ContentAttribute.LinkUrl))) { image += " <img src='../pic/icon/link.png' title='外部链接' align='absmiddle' border=0 />"; } if (!string.IsNullOrEmpty(contentInfo.GetString(BackgroundContentAttribute.ImageUrl))) { var imageUrl = PageUtility.ParseNavigationUrl(siteInfo, contentInfo.GetString(BackgroundContentAttribute.ImageUrl), true); var openWindowString = ModalMessage.GetOpenWindowString(siteInfo.Id, "预览图片", $"<img src='{imageUrl}' />", 500, 500); image += $@" <a href=""javascript:;"" onclick=""{openWindowString}""><img src='../assets/icons/img.gif' title='预览图片' align='absmiddle' border=0 /></a>"; } if (!string.IsNullOrEmpty(contentInfo.GetString(BackgroundContentAttribute.VideoUrl))) { var openWindowString = ModalMessage.GetOpenWindowStringToPreviewVideoByUrl(siteInfo.Id, contentInfo.GetString(BackgroundContentAttribute.VideoUrl)); image += $@" <a href=""javascript:;"" onclick=""{openWindowString}""><img src='../pic/icon/video.png' title='预览视频' align='absmiddle' border=0 /></a>"; } if (!string.IsNullOrEmpty(contentInfo.GetString(BackgroundContentAttribute.FileUrl))) { image += " <img src='../pic/icon/attachment.gif' title='附件' align='absmiddle' border=0 />"; } return(url + image); }