public static string GetSitesTemplateString(string templateString, string containerClientId, PageInfo pageInfo, EContextType contextType, ContextInfo contextInfoRef) { var itemContainer = DbItemContainer.GetItemContainer(pageInfo); var siteId = SqlUtils.EvalInt(itemContainer.SiteItem.DataItem, SiteAttribute.Id); var siteInfo = SiteManager.GetSiteInfo(siteId); var contextInfo = contextInfoRef.Clone(); contextInfo.ContainerClientId = containerClientId; contextInfo.ItemContainer = itemContainer; contextInfo.ContextType = contextType; var preSiteInfo = pageInfo.SiteInfo; var prePageChannelId = pageInfo.PageChannelId; var prePageContentId = pageInfo.PageContentId; pageInfo.ChangeSite(siteInfo, siteInfo.Id, 0, contextInfo); var innerBuilder = new StringBuilder(templateString); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); DbItemContainer.PopSiteItems(pageInfo); pageInfo.ChangeSite(preSiteInfo, prePageChannelId, prePageContentId, contextInfo); return(innerBuilder.ToString()); }
public static string GetEachsTemplateString(string templateString, NameValueCollection selectedItems, NameValueCollection selectedValues, string containerClientId, PageInfo pageInfo, EContextType contextType, ContextInfo contextInfoRef) { var itemContainer = DbItemContainer.GetItemContainer(pageInfo); var contextInfo = contextInfoRef.Clone(); contextInfo.ContextType = contextType; contextInfo.ContainerClientId = containerClientId; contextInfo.ItemContainer = itemContainer; if (selectedItems != null && selectedItems.Count > 0) { foreach (var itemType in selectedItems.AllKeys) { if (IsNumberInRange(itemContainer.SqlItem.ItemIndex + 1, itemType)) { templateString = selectedItems.Get(itemType); break; } } } var innerBuilder = new StringBuilder(templateString); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); DbItemContainer.PopEachItem(pageInfo); return(innerBuilder.ToString()); }
public StlPageChannels(string stlPageChannelsElement, PageInfo pageInfo, ContextInfo contextInfo, bool isXmlContent) { _stlPageChannelsElement = stlPageChannelsElement; _stlPageChannelsElement = stlPageChannelsElement; _pageInfo = pageInfo; var stlElementInfo = StlParserUtility.ParseStlElement(stlPageChannelsElement); _contextInfo = contextInfo.Clone(stlPageChannelsElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes); DisplayInfo = ListInfo.GetListInfoByXmlNode(pageInfo, _contextInfo, EContextType.Channel); var channelId = StlDataUtility.GetChannelIdByLevel(pageInfo.SiteId, _contextInfo.ChannelId, DisplayInfo.UpLevel, DisplayInfo.TopLevel); channelId = StlDataUtility.GetChannelIdByChannelIdOrChannelIndexOrChannelName(pageInfo.SiteId, channelId, DisplayInfo.ChannelIndex, DisplayInfo.ChannelName); var isTotal = TranslateUtils.ToBool(DisplayInfo.Others.Get(IsTotal.Name)); if (TranslateUtils.ToBool(DisplayInfo.Others.Get(IsAllChildren.Name))) { DisplayInfo.Scope = EScopeType.Descendant; } _dataSet = StlDataUtility.GetPageChannelsDataSet(pageInfo.SiteId, channelId, DisplayInfo.GroupChannel, DisplayInfo.GroupChannelNot, DisplayInfo.IsImageExists, DisplayInfo.IsImage, DisplayInfo.StartNum, DisplayInfo.TotalNum, DisplayInfo.OrderByString, DisplayInfo.Scope, isTotal, DisplayInfo.Where); }
public static string GetSitesTemplateString(string templateString, string containerClientID, PageInfo pageInfo, EContextType contextType, ContextInfo contextInfoRef) { var itemContainer = DbItemContainer.GetItemContainer(pageInfo); var publishmentSystemID = SqlUtils.EvalInt(itemContainer.SiteItem.DataItem, PublishmentSystemAttribute.PublishmentSystemId); var publishmentSystemInfo = PublishmentSystemManager.GetPublishmentSystemInfo(publishmentSystemID); var contextInfo = contextInfoRef.Clone(); contextInfo.ContainerClientID = containerClientID; contextInfo.ItemContainer = itemContainer; contextInfo.ContextType = contextType; var prePublishmentSystemInfo = pageInfo.PublishmentSystemInfo; var prePageNodeID = pageInfo.PageNodeId; var prePageContentID = pageInfo.PageContentId; pageInfo.ChangeSite(publishmentSystemInfo, publishmentSystemInfo.PublishmentSystemId, 0, contextInfo); var innerBuilder = new StringBuilder(templateString); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); DbItemContainer.PopInputItem(pageInfo); pageInfo.ChangeSite(prePublishmentSystemInfo, prePageNodeID, prePageContentID, contextInfo); return(innerBuilder.ToString()); }
public static string GetContentsItemTemplateString(string templateString, LowerNameValueCollection selectedItems, LowerNameValueCollection selectedValues, string containerClientID, PageInfo pageInfo, EContextType contextType, ContextInfo contextInfoRef) { var itemContainer = DbItemContainer.GetItemContainer(pageInfo); var contentInfo = new BackgroundContentInfo(itemContainer.ContentItem.DataItem); var contextInfo = contextInfoRef.Clone(); contextInfo.ContextType = contextType; contextInfo.ItemContainer = itemContainer; contextInfo.ContainerClientID = containerClientID; contextInfo.ChannelID = contentInfo.NodeId; contextInfo.ContentID = contentInfo.Id; contextInfo.ContentInfo = contentInfo; var theTemplateString = string.Empty; if (selectedItems != null && selectedItems.Count > 0) { foreach (string itemTypes in selectedItems.Keys) { var itemTypeArrayList = TranslateUtils.StringCollectionToStringList(itemTypes); var isTrue = true; foreach (string itemType in itemTypeArrayList) { if (!IsContentTemplateString(itemType, itemTypes, ref theTemplateString, selectedItems, selectedValues, pageInfo, contextInfo)) { isTrue = false; } } if (isTrue) { break; } else { theTemplateString = string.Empty; } } } if (string.IsNullOrEmpty(theTemplateString)) { theTemplateString = templateString; } var innerBuilder = new StringBuilder(theTemplateString); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); DbItemContainer.PopContentItem(pageInfo); return(innerBuilder.ToString()); }
internal static string Parse(string stlElement, XmlNode node, PageInfo pageInfo, ContextInfo contextInfoRef) { string parsedContent; var contextInfo = contextInfoRef.Clone(); try { var testTypeStr = string.Empty; var testOperate = OperateEquals; var testValue = string.Empty; var isDynamic = false; var ie = node.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeType) || StringUtils.EqualsIgnoreCase(attr.Name, "testType")) { testTypeStr = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeOperate) || StringUtils.EqualsIgnoreCase(attr.Name, "testOperate")) { testOperate = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeValue) || StringUtils.EqualsIgnoreCase(attr.Name, "testValue")) { testValue = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeContext)) { contextInfo.ContextType = EContextTypeUtils.GetEnumType(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeIsDynamic)) { isDynamic = TranslateUtils.ToBool(attr.Value); } } } parsedContent = isDynamic ? StlDynamic.ParseDynamicElement(stlElement, pageInfo, contextInfo) : ParseImpl(node, pageInfo, contextInfo, testTypeStr, testOperate, testValue); } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, ex); } return(parsedContent); }
//循环解析型标签 internal static string Parse(string stlElement, XmlNode node, PageInfo pageInfo, ContextInfo contextInfoRef) { var parsedContent = string.Empty; try { if (!string.IsNullOrEmpty(node.InnerXml)) { var contextInfo = contextInfoRef.Clone(); var ie = node.Attributes.GetEnumerator(); var siteName = string.Empty; var directory = string.Empty; var isDynamic = false; while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; var attributeName = attr.Name.ToLower(); if (attributeName.Equals(Attribute_SiteName)) { siteName = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (attributeName.Equals(Attribute_Directory)) { directory = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (attributeName.Equals(Attribute_IsDynamic)) { isDynamic = TranslateUtils.ToBool(attr.Value); } } if (isDynamic) { parsedContent = StlDynamic.ParseDynamicElement(stlElement, pageInfo, contextInfo); } else { parsedContent = ParseImpl(node, pageInfo, contextInfo, siteName, directory); } } } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, ex); } return(parsedContent); }
public static string Parse(string stlElement, XmlNode node, PageInfo pageInfo, ContextInfo contextInfoRef) { string parsedContent; var contextInfo = contextInfoRef.Clone(); try { var attributes = new NameValueCollection(); var ie = node.Attributes?.GetEnumerator(); var type = string.Empty; var returnUrl = string.Empty; var isDynamic = false; if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; var attributeName = attr.Name.ToLower(); if (attributeName.Equals(AttributeType)) { type = attr.Value; } else if (attributeName.Equals(AttributeReturnUrl)) { returnUrl = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (attributeName.Equals(AttributeIsDynamic)) { isDynamic = TranslateUtils.ToBool(attr.Value, false); } else { attributes.Add(attributeName, attr.Value); } } } parsedContent = isDynamic ? StlDynamic.ParseDynamicElement(stlElement, pageInfo, contextInfo) : ParseImpl(pageInfo, contextInfo, node, attributes, type, returnUrl); } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, ex); } return(parsedContent); }
public StlPageChannels(string stlPageChannelsElement, PageInfo pageInfo, ContextInfo contextInfo, bool isXmlContent) { _stlPageChannelsElement = stlPageChannelsElement; _pageInfo = pageInfo; var xmlDocument = StlParserUtility.GetXmlDocument(_stlPageChannelsElement, isXmlContent); _node = xmlDocument.DocumentElement; _node = _node?.FirstChild; var attributes = new Dictionary <string, string>(); var ie = _node?.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; var key = attr.Name; if (!string.IsNullOrEmpty(key)) { var value = attr.Value; if (string.IsNullOrEmpty(value)) { value = string.Empty; } attributes[key] = value; } } } _contextInfo = contextInfo.Clone(stlPageChannelsElement, attributes, _node?.InnerXml, _node?.ChildNodes); DisplayInfo = ListInfo.GetListInfoByXmlNode(pageInfo, _contextInfo, EContextType.Channel); var channelId = StlDataUtility.GetChannelIdByLevel(pageInfo.SiteId, _contextInfo.ChannelId, DisplayInfo.UpLevel, DisplayInfo.TopLevel); channelId = StlDataUtility.GetChannelIdByChannelIdOrChannelIndexOrChannelName(pageInfo.SiteId, channelId, DisplayInfo.ChannelIndex, DisplayInfo.ChannelName); var isTotal = TranslateUtils.ToBool(DisplayInfo.Others.Get(AttributeIsTotal)); if (TranslateUtils.ToBool(DisplayInfo.Others.Get(AttributeIsAllChildren))) { DisplayInfo.Scope = EScopeType.Descendant; } _dataSet = StlDataUtility.GetPageChannelsDataSet(pageInfo.SiteId, channelId, DisplayInfo.GroupChannel, DisplayInfo.GroupChannelNot, DisplayInfo.IsImageExists, DisplayInfo.IsImage, DisplayInfo.StartNum, DisplayInfo.TotalNum, DisplayInfo.OrderByString, DisplayInfo.Scope, isTotal, DisplayInfo.Where); }
public static string GetInputContentsTemplateString(string templateString, string containerClientId, PageInfo pageInfo, EContextType contextType, ContextInfo contextInfoRef) { var itemContainer = DbItemContainer.GetItemContainer(pageInfo); var contextInfo = contextInfoRef.Clone(); contextInfo.ContainerClientId = containerClientId; contextInfo.ItemContainer = itemContainer; contextInfo.ContextType = contextType; var innerBuilder = new StringBuilder(templateString); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); DbItemContainer.PopInputItem(pageInfo); return innerBuilder.ToString(); }
//API StlActionsSearchController调用 public StlPageContents(string stlPageContentsElement, PageInfo pageInfo, ContextInfo contextInfo, int pageNum, string tableName, string whereString) { _pageInfo = pageInfo; _contextInfo = contextInfo; var xmlDocument = StlParserUtility.GetXmlDocument(stlPageContentsElement, false); _node = xmlDocument.DocumentElement; if (_node != null) { _node = _node.FirstChild; var attributes = new Dictionary <string, string>(); var ie = _node?.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; var key = attr.Name; if (!string.IsNullOrEmpty(key)) { var value = attr.Value; if (string.IsNullOrEmpty(value)) { value = string.Empty; } attributes[key] = value; } } } _contextInfo = contextInfo.Clone(stlPageContentsElement, attributes, _node?.InnerXml, _node?.ChildNodes); ListInfo = ListInfo.GetListInfoByXmlNode(_pageInfo, _contextInfo, EContextType.Content); } ListInfo.Scope = EScopeType.All; ListInfo.Where += whereString; if (pageNum > 0) { ListInfo.PageNum = pageNum; } SqlString = StlDataUtility.GetPageContentsSqlStringBySearch(tableName, ListInfo.GroupContent, ListInfo.GroupContentNot, ListInfo.Tags, ListInfo.IsImageExists, ListInfo.IsImage, ListInfo.IsVideoExists, ListInfo.IsVideo, ListInfo.IsFileExists, ListInfo.IsFile, ListInfo.IsNoDup, ListInfo.StartNum, ListInfo.TotalNum, ListInfo.OrderByString, ListInfo.IsTopExists, ListInfo.IsTop, ListInfo.IsRecommendExists, ListInfo.IsRecommend, ListInfo.IsHotExists, ListInfo.IsHot, ListInfo.IsColorExists, ListInfo.IsColor, ListInfo.Where, ListInfo.Scope, ListInfo.GroupChannel, ListInfo.GroupChannelNot); }
public StlPageSqlContents(string stlPageSqlContentsElement, PageInfo pageInfo, ContextInfo contextInfo, bool isXmlContent) { _pageInfo = pageInfo; try { var stlElementInfo = StlParserUtility.ParseStlElement(stlPageSqlContentsElement); _contextInfo = contextInfo.Clone(stlPageSqlContentsElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes); _listInfo = ListInfo.GetListInfoByXmlNode(_pageInfo, _contextInfo, EContextType.SqlContent); _dataSet = StlDataUtility.GetPageSqlContentsDataSet(_listInfo.ConnectionString, _listInfo.QueryString, _listInfo.StartNum, _listInfo.TotalNum, _listInfo.OrderByString); } catch { _listInfo = new ListInfo(); } }
//循环解析型标签 internal static string Parse(string stlElement, XmlNode node, PageInfo pageInfo, ContextInfo contextInfoRef) { var parsedContent = string.Empty; try { if (!string.IsNullOrEmpty(node.InnerXml)) { var contextInfo = contextInfoRef.Clone(); var siteName = string.Empty; var siteDir = string.Empty; var isDynamic = false; var ie = node.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeSiteName)) { siteName = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeSiteDir)) { siteDir = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeIsDynamic)) { isDynamic = TranslateUtils.ToBool(attr.Value); } } } parsedContent = isDynamic ? StlDynamic.ParseDynamicElement(stlElement, pageInfo, contextInfo) : ParseImpl(node, pageInfo, contextInfo, siteName, siteDir); } } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, ex); } return(parsedContent); }
public StlPageContents(string stlPageContentsElement, PageInfo pageInfo, ContextInfo contextInfo) { _stlPageContentsElement = stlPageContentsElement; _pageInfo = pageInfo; _contextInfo = contextInfo; var stlElementInfo = StlParserUtility.ParseStlElement(stlPageContentsElement); _contextInfo = contextInfo.Clone(stlPageContentsElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes); ListInfo = ListInfo.GetListInfo(_pageInfo, _contextInfo, EContextType.Content); var channelId = StlDataUtility.GetChannelIdByLevel(_pageInfo.SiteId, _contextInfo.ChannelId, ListInfo.UpLevel, ListInfo.TopLevel); channelId = StlDataUtility.GetChannelIdByChannelIdOrChannelIndexOrChannelName(_pageInfo.SiteId, channelId, ListInfo.ChannelIndex, ListInfo.ChannelName); SqlString = StlDataUtility.GetStlPageContentsSqlString(_pageInfo.SiteInfo, channelId, ListInfo); }
public StlPageSqlContents(string stlPageSqlContentsElement, PageInfo pageInfo, ContextInfo contextInfo, bool isXmlContent, bool isLoadData) { _stlPageSqlContentsElement = stlPageSqlContentsElement; _pageInfo = pageInfo; try { var xmlDocument = StlParserUtility.GetXmlDocument(_stlPageSqlContentsElement, isXmlContent); _node = xmlDocument.DocumentElement; _node = _node?.FirstChild; var attributes = new Dictionary <string, string>(); var ie = _node?.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; var key = attr.Name; if (!string.IsNullOrEmpty(key)) { var value = attr.Value; if (string.IsNullOrEmpty(value)) { value = string.Empty; } attributes[key] = value; } } } _contextInfo = contextInfo.Clone(stlPageSqlContentsElement, attributes, _node?.InnerXml, _node?.ChildNodes); _listInfo = ListInfo.GetListInfoByXmlNode(_pageInfo, _contextInfo, EContextType.SqlContent); if (isLoadData) { _dataSet = StlDataUtility.GetPageSqlContentsDataSet(_listInfo.ConnectionString, _listInfo.QueryString, _listInfo.StartNum, _listInfo.TotalNum, _listInfo.OrderByString); } } catch { _listInfo = new ListInfo(); } }
public StlPageContents(string stlPageContentsElement, PageInfo pageInfo, ContextInfo contextInfo, bool isXmlContent) { _pageInfo = pageInfo; _contextInfo = contextInfo; var xmlDocument = StlParserUtility.GetXmlDocument(stlPageContentsElement, isXmlContent); _node = xmlDocument.DocumentElement; if (_node != null) { _stlPageContentsElement = _node.InnerXml; _node = _node.FirstChild; var attributes = new Dictionary <string, string>(); var ie = _node?.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; var key = attr.Name; if (!string.IsNullOrEmpty(key)) { var value = attr.Value; if (string.IsNullOrEmpty(value)) { value = string.Empty; } attributes[key] = value; } } } _contextInfo = contextInfo.Clone(stlPageContentsElement, attributes, _node?.InnerXml, _node?.ChildNodes); ListInfo = ListInfo.GetListInfoByXmlNode(_pageInfo, _contextInfo, EContextType.Content); } var channelId = StlDataUtility.GetChannelIdByLevel(_pageInfo.SiteId, _contextInfo.ChannelId, ListInfo.UpLevel, ListInfo.TopLevel); channelId = StlDataUtility.GetChannelIdByChannelIdOrChannelIndexOrChannelName(_pageInfo.SiteId, channelId, ListInfo.ChannelIndex, ListInfo.ChannelName); SqlString = StlDataUtility.GetStlPageContentsSqlString(_pageInfo.SiteInfo, channelId, ListInfo.GroupContent, ListInfo.GroupContentNot, ListInfo.Tags, ListInfo.IsImageExists, ListInfo.IsImage, ListInfo.IsVideoExists, ListInfo.IsVideo, ListInfo.IsFileExists, ListInfo.IsFile, ListInfo.IsNoDup, ListInfo.StartNum, ListInfo.TotalNum, ListInfo.OrderByString, ListInfo.IsTopExists, ListInfo.IsTop, ListInfo.IsRecommendExists, ListInfo.IsRecommend, ListInfo.IsHotExists, ListInfo.IsHot, ListInfo.IsColorExists, ListInfo.IsColor, ListInfo.Where, ListInfo.Scope, ListInfo.GroupChannel, ListInfo.GroupChannelNot); }
//API StlActionsSearchController调用 public StlPageContents(string stlPageContentsElement, PageInfo pageInfo, ContextInfo contextInfo, int pageNum, string tableName, string whereString) { _pageInfo = pageInfo; _contextInfo = contextInfo; var stlElementInfo = StlParserUtility.ParseStlElement(stlPageContentsElement); _contextInfo = contextInfo.Clone(stlPageContentsElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes); ListInfo = ListInfo.GetListInfo(_pageInfo, _contextInfo, EContextType.Content); ListInfo.Scope = EScopeType.All; ListInfo.Where += whereString; if (pageNum > 0) { ListInfo.PageNum = pageNum; } SqlString = StlDataUtility.GetPageContentsSqlStringBySearch(tableName, ListInfo.GroupContent, ListInfo.GroupContentNot, ListInfo.Tags, ListInfo.IsImageExists, ListInfo.IsImage, ListInfo.IsVideoExists, ListInfo.IsVideo, ListInfo.IsFileExists, ListInfo.IsFile, ListInfo.StartNum, ListInfo.TotalNum, ListInfo.OrderByString, ListInfo.IsTopExists, ListInfo.IsTop, ListInfo.IsRecommendExists, ListInfo.IsRecommend, ListInfo.IsHotExists, ListInfo.IsHot, ListInfo.IsColorExists, ListInfo.IsColor, ListInfo.Where); }
public static string Parse(string stlElement, XmlNode node, PageInfo pageInfo, ContextInfo contextInfoRef) { var parsedContent = string.Empty; var contextInfo = contextInfoRef.Clone(); try { var ie = node.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; var attributeName = attr.Name.ToLower(); if (attributeName.Equals(AttributeContext)) { contextInfo.ContextType = EContextTypeUtils.GetEnumType(attr.Value); } } } if (!string.IsNullOrEmpty(node.InnerXml)) { var innerHtml = RegexUtils.GetInnerContent(ElementName, stlElement); var builder = new StringBuilder(innerHtml); StlParserManager.ParseInnerContent(builder, pageInfo, contextInfo); parsedContent = builder.ToString(); } } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, ex); } return(parsedContent); }
//private readonly DataSet _dataSet; public StlPageSqlContents(string stlPageSqlContentsElement, PageInfo pageInfo, ContextInfo contextInfo) { _stlPageSqlContentsElement = stlPageSqlContentsElement; _pageInfo = pageInfo; try { var stlElementInfo = StlParserUtility.ParseStlElement(stlPageSqlContentsElement); _contextInfo = contextInfo.Clone(stlPageSqlContentsElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes); _listInfo = ListInfo.GetListInfo(_pageInfo, _contextInfo, EContextType.SqlContent); _sqlString = _listInfo.QueryString; if (string.IsNullOrWhiteSpace(_listInfo.OrderByString)) { var pos = _sqlString.LastIndexOf(" ORDER BY ", StringComparison.OrdinalIgnoreCase); if (pos > -1) { _sqlString = _sqlString.Substring(0, pos); _listInfo.OrderByString = _sqlString.Substring(pos); } } else { if (_listInfo.OrderByString.IndexOf("ORDER BY", StringComparison.OrdinalIgnoreCase) == -1) { _listInfo.OrderByString = $"ORDER BY {_listInfo.OrderByString}"; } } //_dataSet = StlDataUtility.GetPageSqlContentsDataSet(_listInfo.ConnectionString, _listInfo.QueryString, _listInfo.StartNum, _listInfo.PageNum, _listInfo.OrderByString); } catch (Exception ex) { LogUtils.AddStlErrorLog(pageInfo, ElementName, stlPageSqlContentsElement, ex); _listInfo = new ListInfo(); } }
internal static string Parse(string stlElement, XmlNode node, PageInfo pageInfo, ContextInfo contextInfoRef) { string parsedContent; var contextInfo = contextInfoRef.Clone(); try { var isPageRefresh = false; var ie = node.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; var attributeName = attr.Name.ToLower(); if (attributeName.Equals(AttributeContext)) { contextInfo.ContextType = EContextTypeUtils.GetEnumType(attr.Value); } else if (attributeName.Equals(AttributeIsPageRefresh)) { isPageRefresh = TranslateUtils.ToBool(attr.Value); } } } parsedContent = ParseImpl(pageInfo, contextInfo, node.InnerXml, isPageRefresh); } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, ex); } return(parsedContent); }
private async Task <string> ParseStlElementAsync(string stlElement) { string parsedContent = null; var stlElementInfo = StlParserUtility.ParseStlElement(stlElement); if (stlElementInfo != null) { var elementName = stlElementInfo.Name; if (ElementsToTranslateDic.ContainsKey(elementName)) { if (ElementsToTranslateDic.TryGetValue(elementName, out var func)) { parsedContent = func(stlElement); } } else if (ElementsToParseDic.ContainsKey(elementName)) { if (stlElementInfo.IsDynamic) { parsedContent = await StlDynamic.ParseDynamicElementAsync(stlElement, this, PageInfo.Site); } else { try { if (ElementsToParseDic.TryGetValue(elementName, out var func)) { var contextInfo = ContextInfo; ContextInfo = ContextInfo.Clone(stlElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes); var obj = await func(this); ContextInfo = contextInfo; if (obj == null) { parsedContent = string.Empty; } else if (obj is string) { parsedContent = (string)obj; } else { parsedContent = TranslateUtils.JsonSerialize(obj); } } } catch (Exception ex) { parsedContent = await AddStlErrorLogAsync(elementName, stlElement, ex); } } } else { var parsers = _pluginManager.GetExtensions <IPluginParse>(); var parser = parsers?.FirstOrDefault(x => StringUtils.EqualsIgnoreCase(x.ElementName, elementName)); if (parser != null) { if (stlElementInfo.IsDynamic) { parsedContent = await StlDynamic.ParseDynamicElementAsync(stlElement, this, PageInfo.Site); } else { try { var context = new PluginParseStlContext(this, stlElementInfo.OuterHtml, stlElementInfo.InnerHtml, stlElementInfo.Attributes); parsedContent = parser.Parse(context); } catch (Exception ex) { parsedContent = await AddStlErrorLogAsync(elementName, stlElement, ex); } } } var parsersAsync = _pluginManager.GetExtensions <IPluginParseAsync>(); var parserAsync = parsersAsync?.FirstOrDefault(x => StringUtils.EqualsIgnoreCase(x.ElementName, elementName)); if (parserAsync != null) { if (stlElementInfo.IsDynamic) { parsedContent = await StlDynamic.ParseDynamicElementAsync(stlElement, this, PageInfo.Site); } else { try { var context = new PluginParseStlContext(this, stlElementInfo.OuterHtml, stlElementInfo.InnerHtml, stlElementInfo.Attributes); parsedContent = await parserAsync.ParseAsync(context); } catch (Exception ex) { parsedContent = await AddStlErrorLogAsync(elementName, stlElement, ex); } } } //var parsers = OldPluginManager.GetParses(); //if (parsers.ContainsKey(elementName)) //{ // if (stlElementInfo.IsDynamic) // { // parsedContent = await StlDynamic.ParseDynamicElementAsync(stlElement, this); // } // else // { // try // { // if (parsers.TryGetValue(elementName, out var func)) // { // var context = new PluginStlParseContext(); // context.Load(stlElementInfo.OuterHtml, stlElementInfo.InnerHtml, stlElementInfo.Attributes, PageInfo, ContextInfo); // parsedContent = func(context); // } // } // catch (Exception ex) // { // parsedContent = await AddStlErrorLogAsync(elementName, stlElement, ex); // } // } //} } } return(parsedContent ?? stlElement); }
public static string Parse(string stlElement, XmlNode node, PageInfo pageInfo, ContextInfo contextInfoRef) { string parsedContent; var contextInfo = contextInfoRef.Clone(); try { var stlAnchor = new HtmlAnchor(); var type = TypeNextContent; var emptyText = string.Empty; var tipText = string.Empty; var wordNum = 0; var isDynamic = false; var isKeyboard = false; var ie = node.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeType)) { type = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeEmptyText)) { emptyText = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeTipText)) { tipText = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeWordNum)) { wordNum = TranslateUtils.ToInt(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeIsDynamic)) { isDynamic = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeIsKeyboard)) { isKeyboard = TranslateUtils.ToBool(attr.Value); } else { ControlUtils.AddAttributeIfNotExists(stlAnchor, attr.Name, attr.Value); } } } parsedContent = isDynamic ? StlDynamic.ParseDynamicElement(stlElement, pageInfo, contextInfo) : ParseImpl(node, pageInfo, contextInfo, stlAnchor, type, emptyText, tipText, wordNum, isKeyboard); } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, ex); } return(parsedContent); }
private static string ParseImpl(XmlNode node, PageInfo pageInfo, ContextInfo contextInfo, HtmlAnchor stlAnchor, string type, string emptyText, string tipText, int wordNum, bool isKeyboard) { string parsedContent; string successTemplateString; string failureTemplateString; StlParserUtility.GetYesOrNoTemplateString(node, pageInfo, out successTemplateString, out failureTemplateString); if (string.IsNullOrEmpty(successTemplateString)) { var nodeInfo = NodeManager.GetNodeInfo(pageInfo.PublishmentSystemId, contextInfo.ChannelId); if (type.ToLower().Equals(TypePreviousChannel.ToLower()) || type.ToLower().Equals(TypeNextChannel.ToLower())) { var taxis = nodeInfo.Taxis; var isNextChannel = !StringUtils.EqualsIgnoreCase(type, TypePreviousChannel); var siblingNodeId = DataProvider.NodeDao.GetNodeIdByParentIdAndTaxis(nodeInfo.ParentId, taxis, isNextChannel); if (siblingNodeId != 0) { var siblingNodeInfo = NodeManager.GetNodeInfo(pageInfo.PublishmentSystemId, siblingNodeId); var url = PageUtility.GetChannelUrl(pageInfo.PublishmentSystemInfo, siblingNodeInfo); if (url.Equals(PageUtils.UnclickedUrl)) { stlAnchor.Target = string.Empty; } stlAnchor.HRef = url; if (string.IsNullOrEmpty(node.InnerXml)) { stlAnchor.InnerHtml = NodeManager.GetNodeName(pageInfo.PublishmentSystemId, siblingNodeId); if (wordNum > 0) { stlAnchor.InnerHtml = StringUtils.MaxLengthText(stlAnchor.InnerHtml, wordNum); } } else { contextInfo.ChannelId = siblingNodeId; var innerBuilder = new StringBuilder(node.InnerXml); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); stlAnchor.InnerHtml = innerBuilder.ToString(); } } } else if (type.ToLower().Equals(TypePreviousContent.ToLower()) || type.ToLower().Equals(TypeNextContent.ToLower())) { if (contextInfo.ContentId != 0) { var taxis = contextInfo.ContentInfo.Taxis; var isNextContent = !StringUtils.EqualsIgnoreCase(type, TypePreviousContent); var tableStyle = NodeManager.GetTableStyle(pageInfo.PublishmentSystemInfo, contextInfo.ChannelId); var tableName = NodeManager.GetTableName(pageInfo.PublishmentSystemInfo, contextInfo.ChannelId); var siblingContentId = BaiRongDataProvider.ContentDao.GetContentId(tableName, contextInfo.ChannelId, taxis, isNextContent); if (siblingContentId != 0) { var siblingContentInfo = DataProvider.ContentDao.GetContentInfo(tableStyle, tableName, siblingContentId); var url = PageUtility.GetContentUrl(pageInfo.PublishmentSystemInfo, siblingContentInfo); if (url.Equals(PageUtils.UnclickedUrl)) { stlAnchor.Target = string.Empty; } stlAnchor.HRef = url; if (isKeyboard) { var keyCode = isNextContent ? 39 : 37; var scriptContent = new StringBuilder(); pageInfo.AddPageScriptsIfNotExists(PageInfo.Components.Jquery); scriptContent.Append($@"<script language=""javascript"" type=""text/javascript""> $(document).keydown(function(event){{ if(event.keyCode=={keyCode}){{location = '{url}';}} }}); </script> "); var nextOrPrevious = isNextContent ? "nextContent" : "previousContent"; pageInfo.SetPageScripts(nextOrPrevious, scriptContent.ToString(), true); } if (string.IsNullOrEmpty(node.InnerXml)) { stlAnchor.InnerHtml = siblingContentInfo.Title; if (wordNum > 0) { stlAnchor.InnerHtml = StringUtils.MaxLengthText(stlAnchor.InnerHtml, wordNum); } } else { var innerBuilder = new StringBuilder(node.InnerXml); contextInfo.ContentId = siblingContentId; StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); stlAnchor.InnerHtml = innerBuilder.ToString(); } } } } parsedContent = string.IsNullOrEmpty(stlAnchor.HRef) ? emptyText : ControlUtils.GetControlRenderHtml(stlAnchor); } else { var nodeInfo = NodeManager.GetNodeInfo(pageInfo.PublishmentSystemId, contextInfo.ChannelId); var isSuccess = false; var theContextInfo = contextInfo.Clone(); if (type.ToLower().Equals(TypePreviousChannel.ToLower()) || type.ToLower().Equals(TypeNextChannel.ToLower())) { var taxis = nodeInfo.Taxis; var isNextChannel = !StringUtils.EqualsIgnoreCase(type, TypePreviousChannel); var siblingNodeId = DataProvider.NodeDao.GetNodeIdByParentIdAndTaxis(nodeInfo.ParentId, taxis, isNextChannel); if (siblingNodeId != 0) { isSuccess = true; theContextInfo.ContextType = EContextType.Channel; theContextInfo.ChannelId = siblingNodeId; } } else if (type.ToLower().Equals(TypePreviousContent.ToLower()) || type.ToLower().Equals(TypeNextContent.ToLower())) { if (contextInfo.ContentId != 0) { var taxis = contextInfo.ContentInfo.Taxis; var isNextContent = !StringUtils.EqualsIgnoreCase(type, TypePreviousContent); var tableName = NodeManager.GetTableName(pageInfo.PublishmentSystemInfo, contextInfo.ChannelId); var siblingContentId = BaiRongDataProvider.ContentDao.GetContentId(tableName, contextInfo.ChannelId, taxis, isNextContent); if (siblingContentId != 0) { isSuccess = true; theContextInfo.ContextType = EContextType.Content; theContextInfo.ContentId = siblingContentId; theContextInfo.ContentInfo = null; } } } parsedContent = isSuccess ? successTemplateString : failureTemplateString; if (!string.IsNullOrEmpty(parsedContent)) { var innerBuilder = new StringBuilder(parsedContent); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, theContextInfo); parsedContent = innerBuilder.ToString(); } } parsedContent = tipText + parsedContent; return(parsedContent); }
internal static string ParseStlElement(string stlElement, PageInfo pageInfo, ContextInfo contextInfo) { string parsedContent = null; var stlElementInfo = StlParserUtility.ParseStlElement(stlElement); if (stlElementInfo != null) { var elementName = stlElementInfo.Name; if (ElementsToTranslateDic.ContainsKey(elementName)) { Func <string, string> func; if (ElementsToTranslateDic.TryGetValue(elementName, out func)) { parsedContent = func(stlElement); } } else if (ElementsToParseDic.ContainsKey(elementName)) { if (stlElementInfo.IsDynamic) { parsedContent = StlDynamic.ParseDynamicElement(stlElement, pageInfo, contextInfo); } else { try { Func <PageInfo, ContextInfo, object> func; if (ElementsToParseDic.TryGetValue(elementName, out func)) { var contextInfoClone = contextInfo.Clone(stlElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes); var obj = func(pageInfo, contextInfoClone); if (obj == null) { parsedContent = string.Empty; } else if (obj is string) { parsedContent = (string)obj; } else { parsedContent = TranslateUtils.JsonSerialize(obj); } } } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(elementName, stlElement, ex); } } } else { var parsers = PluginStlParserContentManager.GetParses(); if (parsers.ContainsKey(elementName)) { if (stlElementInfo.IsDynamic) { parsedContent = StlDynamic.ParseDynamicElement(stlElement, pageInfo, contextInfo); } else { try { Func <PluginParseContext, string> func; if (parsers.TryGetValue(elementName, out func)) { var context = new PluginParseContext(stlElementInfo.OuterHtml, stlElementInfo.InnerHtml, stlElementInfo.Attributes, pageInfo, contextInfo); parsedContent = func(context); } } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(elementName, stlElement, ex); } } } } } return(parsedContent ?? stlElement); }
public static string GetChannelsItemTemplateString(string templateString, LowerNameValueCollection selectedItems, LowerNameValueCollection selectedValues, string containerClientID, PageInfo pageInfo, EContextType contextType, ContextInfo contextInfoRef) { var itemContainer = DbItemContainer.GetItemContainer(pageInfo); var nodeID = SqlUtils.EvalInt(itemContainer.ChannelItem.DataItem, NodeAttribute.NodeId); var contextInfo = contextInfoRef.Clone(); contextInfo.ContextType = contextType; contextInfo.ItemContainer = itemContainer; contextInfo.ContainerClientID = containerClientID; contextInfo.ChannelID = nodeID; var nodeInfo = NodeManager.GetNodeInfo(pageInfo.PublishmentSystemId, nodeID); if (selectedItems != null && selectedItems.Count > 0) { foreach (string itemType in selectedItems.Keys) { if (itemType == StlItem.ChannelsItem.Selected_Current)//当前栏目 { if (nodeID == pageInfo.PageNodeId) { templateString = selectedItems[itemType]; break; } } else if (itemType == StlItem.ChannelsItem.Selected_Image)//带有图片的栏目 { if (!string.IsNullOrEmpty(nodeInfo.ImageUrl)) { templateString = selectedItems[itemType]; break; } } else if (itemType.StartsWith(StlItem.ChannelsItem.Selected_Up))//当前栏目的上级栏目 { var upLevel = 1; if (itemType == StlItem.ChannelsItem.Selected_Up) { upLevel = 1; } else { upLevel = TranslateUtils.ToInt(itemType.Substring(2)); } if (upLevel > 0) { var theNodeID = StlDataUtility.GetNodeIdByLevel(pageInfo.PublishmentSystemId, pageInfo.PageNodeId, upLevel, -1); if (nodeID == theNodeID) { templateString = selectedItems[itemType]; break; } } } else if (itemType.StartsWith(StlItem.ChannelsItem.Selected_Top))//当前栏目从首页向下的上级栏目栏目 { var topLevel = 1; if (itemType == StlItem.ChannelsItem.Selected_Top) { topLevel = 1; } else { topLevel = TranslateUtils.ToInt(itemType.Substring(3)); } if (topLevel >= 0) { var theNodeID = StlDataUtility.GetNodeIdByLevel(pageInfo.PublishmentSystemId, pageInfo.PageNodeId, 0, topLevel); if (nodeID == theNodeID) { templateString = selectedItems[itemType]; break; } } } else if (IsNumberInRange(itemContainer.ChannelItem.ItemIndex + 1, itemType)) { templateString = selectedItems[itemType]; break; } } } var innerBuilder = new StringBuilder(templateString); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); DbItemContainer.PopChannelItem(pageInfo); return(innerBuilder.ToString()); }
public static string GetChannelsItemTemplateString(string templateString, NameValueCollection selectedItems, NameValueCollection selectedValues, string containerClientId, PageInfo pageInfo, EContextType contextType, ContextInfo contextInfoRef) { var itemContainer = DbItemContainer.GetItemContainer(pageInfo); var channelId = itemContainer.ChannelItem.ChannelId; var contextInfo = contextInfoRef.Clone(); contextInfo.ContextType = contextType; contextInfo.ItemContainer = itemContainer; contextInfo.ContainerClientId = containerClientId; contextInfo.ChannelId = channelId; var nodeInfo = ChannelManager.GetChannelInfo(pageInfo.SiteId, channelId); if (selectedItems != null && selectedItems.Count > 0) { foreach (var itemType in selectedItems.AllKeys) { if (StringUtils.EqualsIgnoreCase(itemType, StlItemTemplate.SelectedCurrent))//当前栏目 { if (channelId == pageInfo.PageChannelId) { templateString = selectedItems.Get(itemType); break; } } else if (StringUtils.EqualsIgnoreCase(itemType, StlItemTemplate.SelectedImage))//带有图片的栏目 { if (!string.IsNullOrEmpty(nodeInfo.ImageUrl)) { templateString = selectedItems.Get(itemType); break; } } else if (StringUtils.StartsWithIgnoreCase(itemType, StlItemTemplate.SelectedUp))//当前栏目的上级栏目 { var upLevel = StringUtils.EqualsIgnoreCase(itemType, StlItemTemplate.SelectedUp) ? 1 : TranslateUtils.ToInt(itemType.Substring(2)); if (upLevel > 0) { var theChannelId = StlDataUtility.GetChannelIdByLevel(pageInfo.SiteId, pageInfo.PageChannelId, upLevel, -1); if (channelId == theChannelId) { templateString = selectedItems.Get(itemType); break; } } } else if (StringUtils.StartsWithIgnoreCase(itemType, StlItemTemplate.SelectedTop))//当前栏目从首页向下的上级栏目栏目 { var topLevel = StringUtils.EqualsIgnoreCase(itemType, StlItemTemplate.SelectedTop) ? 1 : TranslateUtils.ToInt(itemType.Substring(3)); if (topLevel >= 0) { var theChannelId = StlDataUtility.GetChannelIdByLevel(pageInfo.SiteId, pageInfo.PageChannelId, 0, topLevel); if (channelId == theChannelId) { templateString = selectedItems.Get(itemType); break; } } } else if (IsNumberInRange(itemContainer.ChannelItem.ItemIndex + 1, itemType)) { templateString = selectedItems.Get(itemType); break; } } } var innerBuilder = new StringBuilder(templateString); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); DbItemContainer.PopChannelItem(pageInfo); return(innerBuilder.ToString()); }
public static string Parse(string stlElement, XmlNode node, PageInfo pageInfo, ContextInfo contextInfoRef) { string parsedContent; var contextInfo = contextInfoRef.Clone(); try { var stlAnchor = new HtmlAnchor(); var htmlId = string.Empty; var channelIndex = string.Empty; var channelName = string.Empty; var upLevel = 0; var topLevel = -1; const bool removeTarget = false; var href = string.Empty; var queryString = string.Empty; var isDynamic = false; var host = string.Empty; var ie = node.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeId)) { htmlId = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeChannelIndex)) { channelIndex = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); if (!string.IsNullOrEmpty(channelIndex)) { contextInfo.ContextType = EContextType.Channel; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeChannelName)) { channelName = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); if (!string.IsNullOrEmpty(channelName)) { contextInfo.ContextType = EContextType.Channel; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeParent)) { if (TranslateUtils.ToBool(attr.Value)) { upLevel = 1; contextInfo.ContextType = EContextType.Channel; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeUpLevel)) { upLevel = TranslateUtils.ToInt(attr.Value); if (upLevel > 0) { contextInfo.ContextType = EContextType.Channel; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeTopLevel)) { topLevel = TranslateUtils.ToInt(attr.Value); if (topLevel >= 0) { contextInfo.ContextType = EContextType.Channel; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeContext)) { contextInfo.ContextType = EContextTypeUtils.GetEnumType(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeHref)) { href = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeQueryString)) { queryString = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeIsDynamic)) { isDynamic = TranslateUtils.ToBool(attr.Value, false); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeHost)) { host = attr.Value; } else { ControlUtils.AddAttributeIfNotExists(stlAnchor, attr.Name, attr.Value); } } } parsedContent = isDynamic ? StlDynamic.ParseDynamicElement(stlElement, pageInfo, contextInfo) : ParseImpl(pageInfo, contextInfo, node, stlAnchor, htmlId, channelIndex, channelName, upLevel, topLevel, removeTarget, href, queryString, host); } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, ex); } return(parsedContent); }
//对“导航”(stl:navigation)元素进行解析 public static string Parse(string stlElement, XmlNode node, PageInfo pageInfo, ContextInfo contextInfoRef) { var parsedContent = string.Empty; var contextInfo = contextInfoRef.Clone(); try { var stlAnchor = new HtmlAnchor(); var ie = node.Attributes.GetEnumerator(); var type = Type_NextContent; var emptyText = string.Empty; var tipText = string.Empty; var wordNum = 0; var isDisplayIfEmpty = false; var isDynamic = false; var isKeyboard = false; while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; var attributeName = attr.Name.ToLower(); if (attributeName.Equals(Attribute_Type)) { type = attr.Value; } else if (attributeName.Equals(Attribute_EmptyText)) { emptyText = attr.Value; } else if (attributeName.Equals(Attribute_TipText)) { tipText = attr.Value; } else if (attributeName.Equals(Attribute_WordNum)) { wordNum = TranslateUtils.ToInt(attr.Value); } else if (attributeName.Equals(Attribute_IsDisplayIfEmpty)) { isDisplayIfEmpty = TranslateUtils.ToBool(attr.Value); } else if (attributeName.Equals(Attribute_IsDynamic)) { isDynamic = TranslateUtils.ToBool(attr.Value); } else if (attributeName.Equals(Attribute_IsKeyboard)) { isKeyboard = TranslateUtils.ToBool(attr.Value); } else { ControlUtils.AddAttributeIfNotExists(stlAnchor, attributeName, attr.Value); } } if (isDynamic) { parsedContent = StlDynamic.ParseDynamicElement(stlElement, pageInfo, contextInfo); } else { parsedContent = ParseImpl(node, pageInfo, contextInfo, stlAnchor, type, emptyText, tipText, wordNum, isDisplayIfEmpty, isKeyboard); } } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, ex); } return(parsedContent); }
public static string Parse(string stlElement, XmlNode node, PageInfo pageInfo, ContextInfo contextInfoRef) { string parsedContent; var contextInfo = contextInfoRef.Clone(); try { var tagLevel = 1; var totalNum = 0; var isOrderByCount = false; var theme = "default"; var isDynamic = false; var isInnerXml = !string.IsNullOrEmpty(node.InnerXml); var attributes = new LowerNameValueCollection(); var ie = node.Attributes?.GetEnumerator(); if (ie != null) { while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeTagLevel)) { tagLevel = TranslateUtils.ToInt(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeTotalNum)) { totalNum = TranslateUtils.ToInt(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeIsOrderByCount)) { isOrderByCount = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeTheme)) { theme = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeContext)) { contextInfo.ContextType = EContextTypeUtils.GetEnumType(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, AttributeIsDynamic)) { isDynamic = TranslateUtils.ToBool(attr.Value); } else { attributes.Set(attr.Name, attr.Value); } } } parsedContent = isDynamic ? StlDynamic.ParseDynamicElement(stlElement, pageInfo, contextInfo) : ParseImpl(stlElement, isInnerXml, pageInfo, contextInfo, tagLevel, totalNum, isOrderByCount, theme); } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, ex); } return(parsedContent); }
public static string GetContentsItemTemplateString(string templateString, NameValueCollection selectedItems, NameValueCollection selectedValues, string containerClientId, PageInfo pageInfo, EContextType contextType, ContextInfo contextInfoRef) { var itemContainer = DbItemContainer.GetItemContainer(pageInfo); //var contentInfo = new BackgroundContentInfo(itemContainer.ContentItem.DataItem); ContentItemInfo contentItemInfo = null; if (pageInfo.ContentItems.Count > 0) { contentItemInfo = pageInfo.ContentItems.Peek(); } if (contentItemInfo == null) { return(string.Empty); } var contentInfo = ContentManager.GetContentInfo(pageInfo.SiteInfo, contentItemInfo.ChannelId, contentItemInfo.ContentId); var contextInfo = contextInfoRef.Clone(); contextInfo.ContextType = contextType; contextInfo.ItemContainer = itemContainer; contextInfo.ContainerClientId = containerClientId; contextInfo.ChannelId = contentInfo.ChannelId; contextInfo.ContentId = contentInfo.Id; contextInfo.ContentInfo = contentInfo; var preSiteInfo = pageInfo.SiteInfo; var prePageChannelId = pageInfo.PageChannelId; var prePageContentId = pageInfo.PageContentId; if (contentInfo.SiteId != pageInfo.SiteId) { var siteInfo = SiteManager.GetSiteInfo(contentInfo.SiteId); if (siteInfo != null) { contextInfo.SiteInfo = siteInfo; pageInfo.ChangeSite(siteInfo, siteInfo.Id, 0, contextInfo); } } var theTemplateString = string.Empty; if (selectedItems != null && selectedItems.Count > 0) { foreach (var itemTypes in selectedItems.AllKeys) { var itemTypeArrayList = TranslateUtils.StringCollectionToStringList(itemTypes); var isTrue = true; foreach (var itemType in itemTypeArrayList) { if (!IsContentTemplateString(itemType, itemTypes, ref theTemplateString, selectedItems, selectedValues, pageInfo, contextInfo)) { isTrue = false; } } if (isTrue) { break; } theTemplateString = string.Empty; } } if (string.IsNullOrEmpty(theTemplateString)) { theTemplateString = templateString; } var innerBuilder = new StringBuilder(theTemplateString); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); DbItemContainer.PopContentItem(pageInfo); if (contentInfo.SiteId != pageInfo.SiteId) { pageInfo.ChangeSite(preSiteInfo, prePageChannelId, prePageContentId, contextInfoRef); } return(innerBuilder.ToString()); }