public async Task ReplacePageElementsInChannelPageAsync(StringBuilder parsedBuilder, List <string> labelList, int currentPageIndex, int pageCount, int totalNum) { //替换分页模板 foreach (var labelString in labelList) { if (StlParserUtility.IsSpecifiedStlElement(labelString, StlPageItems.ElementName)) { var stlElement = labelString; var pageHtml = await ParseStlPageInChannelPageAsync(stlElement, PageInfo.PageChannelId, currentPageIndex, pageCount, totalNum); parsedBuilder.Replace(StlEncrypt(stlElement), pageHtml); } else if (StlParserUtility.IsSpecifiedStlElement(labelString, StlPageItem.ElementName)) { var stlElement = labelString; var pageHtml = await ParseStlPageItemInChannelPageAsync(stlElement, PageInfo.PageChannelId, currentPageIndex, pageCount, totalNum); parsedBuilder.Replace(stlElement, pageHtml); } } }
public async Task ReplacePageElementsInDynamicPageAsync(StringBuilder parsedBuilder, List <string> labelList, int currentPageIndex, int pageCount, int totalNum, bool isPageRefresh, string ajaxDivId) { //替换分页模板 foreach (var labelString in labelList) { if (StlParserUtility.IsSpecifiedStlElement(labelString, StlPageItems.ElementName)) { var stlElement = labelString; var pageHtml = await ParseStlPageInDynamicPageAsync(stlElement, currentPageIndex, pageCount, totalNum, isPageRefresh, ajaxDivId); parsedBuilder.Replace(stlElement, pageHtml); } else if (StlParserUtility.IsSpecifiedStlElement(labelString, StlPageItem.ElementName)) { var stlElement = labelString; var pageHtml = await ParseStlPageItemInDynamicPageAsync(stlElement, currentPageIndex, pageCount, totalNum, isPageRefresh, ajaxDivId); parsedBuilder.Replace(stlElement, pageHtml); } } }
public static ListInfo GetListInfo(PageInfo pageInfo, ContextInfo contextInfo, EContextType contextType) { var listInfo = new ListInfo { _contextType = contextType }; var innerHtml = contextInfo.InnerHtml; var itemTemplate = string.Empty; if (!string.IsNullOrEmpty(innerHtml)) { var stlElementList = StlParserUtility.GetStlElementList(innerHtml); if (stlElementList.Count > 0) { foreach (var theStlElement in stlElementList) { if (StlParserUtility.IsSpecifiedStlElement(theStlElement, StlItemTemplate.ElementName)) { var attributes = TranslateUtils.NewIgnoreCaseNameValueCollection(); var templateString = StlParserUtility.GetInnerHtml(theStlElement, attributes); if (!string.IsNullOrEmpty(templateString)) { foreach (var key in attributes.AllKeys) { if (!StringUtils.EqualsIgnoreCase(key, StlItemTemplate.Type)) { continue; } var type = attributes[key]; if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeItem)) { itemTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeHeader)) { listInfo.HeaderTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeFooter)) { listInfo.FooterTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeAlternatingItem)) { listInfo.AlternatingItemTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeSelectedItem)) { if (!string.IsNullOrEmpty(attributes[StlItemTemplate.Selected])) { var selected = attributes[StlItemTemplate.Selected]; var list = new List <string>(); if (selected.IndexOf(',') != -1) { list.AddRange(selected.Split(',')); } else { if (selected.IndexOf('-') != -1) { var first = TranslateUtils.ToInt(selected.Split('-')[0]); var second = TranslateUtils.ToInt(selected.Split('-')[1]); for (var i = first; i <= second; i++) { list.Add(i.ToString()); } } else { list.Add(selected); } } foreach (string val in list) { listInfo.SelectedItems.Set(val, templateString); } if (!string.IsNullOrEmpty(attributes[StlItemTemplate.SelectedValue])) { var selectedValue = attributes[StlItemTemplate.SelectedValue]; listInfo.SelectedValues.Set(selectedValue, templateString); } } } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeSeparator)) { var selectedValue = TranslateUtils.ToInt(attributes[StlItemTemplate.SelectedValue], 1); if (selectedValue <= 1) { listInfo.SeparatorTemplate = templateString; } else { listInfo.SeparatorRepeatTemplate = templateString; listInfo.SeparatorRepeat = selectedValue; } } } } innerHtml = innerHtml.Replace(theStlElement, string.Empty); } else if (StlParserUtility.IsSpecifiedStlElement(theStlElement, StlLoading.ElementName)) { var innerBuilder = new StringBuilder(StlParserUtility.GetInnerHtml(theStlElement)); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); listInfo.LoadingTemplate = innerBuilder.ToString(); innerHtml = innerHtml.Replace(theStlElement, string.Empty); } else if (contextType == EContextType.SqlContent && StlParserUtility.IsSpecifiedStlElement(theStlElement, StlQueryString.ElementName)) { var innerBuilder = new StringBuilder(StlParserUtility.GetInnerHtml(theStlElement)); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); listInfo.QueryString = innerBuilder.ToString(); innerHtml = innerHtml.Replace(theStlElement, string.Empty); } } } } if (string.IsNullOrEmpty(itemTemplate)) { listInfo.ItemTemplate = !string.IsNullOrEmpty(innerHtml) ? innerHtml : "<stl:a target=\"_blank\"></stl:a>"; } else { listInfo.ItemTemplate = itemTemplate; } var isSetDirection = false;//是否设置了direction属性 foreach (var name in contextInfo.Attributes.AllKeys) { var value = contextInfo.Attributes[name]; if (StringUtils.EqualsIgnoreCase(name, StlListBase.ChannelIndex)) { listInfo.ChannelIndex = StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.ChannelName)) { listInfo.ChannelName = StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Parent)) { listInfo.UpLevel = 1; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.UpLevel)) { listInfo.UpLevel = TranslateUtils.ToInt(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.TopLevel)) { listInfo.TopLevel = TranslateUtils.ToInt(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Scope)) { listInfo.Scope = EScopeTypeUtils.GetEnumType(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsTop)) { listInfo.IsTop = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsRecommend)) { listInfo.IsRecommend = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsHot)) { listInfo.IsHot = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsColor)) { listInfo.IsColor = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Where)) { listInfo.Where = StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.TotalNum)) { listInfo.TotalNum = TranslateUtils.ToInt(StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo)); } else if (StringUtils.EqualsIgnoreCase(name, StlPageContents.PageNum)) { listInfo.PageNum = TranslateUtils.ToInt(StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo), Constants.PageSize); } else if (StringUtils.EqualsIgnoreCase(name, StlPageContents.MaxPage)) { listInfo.MaxPage = TranslateUtils.ToInt(StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo)); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.StartNum)) { listInfo.StartNum = TranslateUtils.ToInt(StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo)); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Order)) { if (contextType == EContextType.Content) { listInfo.OrderByString = StlDataUtility.GetContentOrderByString(pageInfo.SiteId, value, ETaxisType.OrderByTaxisDesc); } else if (contextType == EContextType.Channel) { listInfo.OrderByString = StlDataUtility.GetChannelOrderByString(pageInfo.SiteId, value, ETaxisType.OrderByTaxis); } //else if (contextType == EContextType.InputContent) //{ // listInfo.OrderByString = StlDataUtility.GetOrderByString(pageInfo.SiteId, value, ETableStyle.InputContent, ETaxisType.OrderByTaxisDesc); //} else { listInfo.OrderByString = value; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.GroupChannel)) { listInfo.GroupChannel = StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo); if (string.IsNullOrEmpty(listInfo.GroupChannel)) { listInfo.GroupChannel = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.GroupChannelNot)) { listInfo.GroupChannelNot = StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo); if (string.IsNullOrEmpty(listInfo.GroupChannelNot)) { listInfo.GroupChannelNot = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.GroupContent) || StringUtils.EqualsIgnoreCase(name, "group")) { listInfo.GroupContent = StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo); if (string.IsNullOrEmpty(listInfo.GroupContent)) { listInfo.GroupContent = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.GroupContentNot) || StringUtils.EqualsIgnoreCase(name, "groupNot")) { listInfo.GroupContentNot = StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo); if (string.IsNullOrEmpty(listInfo.GroupContentNot)) { listInfo.GroupContentNot = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Tags)) { listInfo.Tags = StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Columns)) { listInfo.Columns = TranslateUtils.ToInt(value); listInfo.Layout = ELayout.Table; if (listInfo.Columns > 1 && isSetDirection == false) { listInfo.Direction = RepeatDirection.Horizontal; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Direction)) { listInfo.Layout = ELayout.Table; listInfo.Direction = TranslateUtils.ToRepeatDirection(value); isSetDirection = true; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Height)) { try { listInfo.Height = Unit.Parse(value); } catch { // ignored } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Width)) { try { listInfo.Width = Unit.Parse(value); } catch { // ignored } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Align)) { listInfo.Align = value; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.ItemHeight)) { try { listInfo.ItemHeight = Unit.Parse(value); } catch { // ignored } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.ItemWidth)) { try { listInfo.ItemWidth = Unit.Parse(value); } catch { // ignored } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.ItemAlign)) { listInfo.ItemAlign = value; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.ItemVerticalAlign)) { listInfo.ItemVerticalAlign = value; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.ItemClass)) { listInfo.ItemClass = value; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsImage)) { listInfo.IsImage = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsVideo)) { listInfo.IsVideo = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsFile)) { listInfo.IsFile = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlContents.IsRelatedContents)) { listInfo.IsRelatedContents = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Layout)) { listInfo.Layout = ELayoutUtils.GetEnumType(value); } else if (contextType == EContextType.SqlContent && StringUtils.EqualsIgnoreCase(name, StlSqlContents.ConnectionString)) { listInfo.ConnectionString = value; } else if (contextType == EContextType.SqlContent && StringUtils.EqualsIgnoreCase(name, StlSqlContents.ConnectionStringName)) { listInfo.ConnectionString = WebConfigUtils.GetConnectionStringByName(value); if (string.IsNullOrEmpty(listInfo.ConnectionString)) { listInfo.ConnectionString = WebConfigUtils.ConnectionString; } } else if (contextType == EContextType.SqlContent && StringUtils.EqualsIgnoreCase(name, StlSqlContents.QueryString)) { listInfo.QueryString = StlEntityParser.ReplaceStlEntitiesForAttributeValue(value, pageInfo, contextInfo); } else { listInfo.Others.Set(name, value); } } return(listInfo); }
public static async Task <ListInfo> GetListInfoAsync(IParseManager parseManager, ParseType contextType) { var contextInfo = parseManager.ContextInfo; var listInfo = new ListInfo { _contextType = contextType, DatabaseType = parseManager.SettingsManager.DatabaseType, ConnectionString = parseManager.SettingsManager.DatabaseConnectionString }; var innerHtml = contextInfo.InnerHtml; var itemTemplate = string.Empty; if (!string.IsNullOrEmpty(innerHtml)) { var stlElementList = StlParserUtility.GetStlElementList(innerHtml); if (stlElementList.Count > 0) { foreach (var theStlElement in stlElementList) { if (StlParserUtility.IsSpecifiedStlElement(theStlElement, StlItemTemplate.ElementName)) { var attributes = TranslateUtils.NewIgnoreCaseNameValueCollection(); var templateString = StlParserUtility.GetInnerHtml(theStlElement, attributes); if (!string.IsNullOrEmpty(templateString)) { foreach (var key in attributes.AllKeys) { if (!StringUtils.EqualsIgnoreCase(key, StlItemTemplate.Type)) { continue; } var type = attributes[key]; if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeItem)) { itemTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeHeader)) { listInfo.HeaderTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeFooter)) { listInfo.FooterTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeAlternatingItem)) { listInfo.AlternatingItemTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeSelectedItem)) { if (!string.IsNullOrEmpty(attributes[StlItemTemplate.Selected])) { var selected = attributes[StlItemTemplate.Selected]; var list = new List <string>(); if (selected.IndexOf(',') != -1) { list.AddRange(selected.Split(',')); } else { if (selected.IndexOf('-') != -1) { var first = TranslateUtils.ToInt(selected.Split('-')[0]); var second = TranslateUtils.ToInt(selected.Split('-')[1]); for (var i = first; i <= second; i++) { list.Add(i.ToString()); } } else { list.Add(selected); } } foreach (string val in list) { listInfo.SelectedItems.Set(val, templateString); } if (!string.IsNullOrEmpty(attributes[StlItemTemplate.SelectedValue])) { var selectedValue = attributes[StlItemTemplate.SelectedValue]; listInfo.SelectedValues.Set(selectedValue, templateString); } } } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeSeparator)) { var selectedValue = TranslateUtils.ToInt(attributes[StlItemTemplate.SelectedValue], 1); if (selectedValue <= 1) { listInfo.SeparatorTemplate = templateString; } else { listInfo.SeparatorRepeatTemplate = templateString; listInfo.SeparatorRepeat = selectedValue; } } } } innerHtml = innerHtml.Replace(theStlElement, string.Empty); } else if (StlParserUtility.IsSpecifiedStlElement(theStlElement, StlLoading.ElementName)) { var innerBuilder = new StringBuilder(StlParserUtility.GetInnerHtml(theStlElement)); await parseManager.ParseInnerContentAsync(innerBuilder); listInfo.LoadingTemplate = innerBuilder.ToString(); innerHtml = innerHtml.Replace(theStlElement, string.Empty); } else if (contextType == ParseType.SqlContent && StlParserUtility.IsSpecifiedStlElement(theStlElement, StlQueryString.ElementName)) { var innerBuilder = new StringBuilder(StlParserUtility.GetInnerHtml(theStlElement)); await parseManager.ParseInnerContentAsync(innerBuilder); listInfo.QueryString = innerBuilder.ToString(); innerHtml = innerHtml.Replace(theStlElement, string.Empty); } } } } if (string.IsNullOrEmpty(itemTemplate)) { listInfo.ItemTemplate = !string.IsNullOrEmpty(innerHtml) ? innerHtml : "<stl:a target=\"_blank\"></stl:a>"; } else { listInfo.ItemTemplate = itemTemplate; } var isSetDirection = false;//是否设置了direction属性 foreach (var name in contextInfo.Attributes.AllKeys) { var value = contextInfo.Attributes[name]; if (StringUtils.EqualsIgnoreCase(name, StlListBase.ChannelIndex)) { listInfo.ChannelIndex = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.ChannelName)) { listInfo.ChannelName = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Parent)) { listInfo.UpLevel = 1; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.UpLevel)) { listInfo.UpLevel = TranslateUtils.ToInt(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.TopLevel)) { listInfo.TopLevel = TranslateUtils.ToInt(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Scope)) { listInfo.Scope = TranslateUtils.ToEnum(value, ScopeType.Self); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsTop)) { listInfo.IsTop = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsRecommend)) { listInfo.IsRecommend = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsHot)) { listInfo.IsHot = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsColor)) { listInfo.IsColor = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.TotalNum)) { listInfo.TotalNum = TranslateUtils.ToInt(await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value)); } else if (StringUtils.EqualsIgnoreCase(name, StlPageContents.PageNum)) { listInfo.PageNum = TranslateUtils.ToInt(await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value), Constants.PageSize); } else if (StringUtils.EqualsIgnoreCase(name, StlPageContents.MaxPage)) { listInfo.MaxPage = TranslateUtils.ToInt(await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value)); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.StartNum)) { listInfo.StartNum = TranslateUtils.ToInt(await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value)); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Order)) { listInfo.Order = value; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Where)) { listInfo.Where = value; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.GroupChannel)) { listInfo.GroupChannel = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); if (string.IsNullOrEmpty(listInfo.GroupChannel)) { listInfo.GroupChannel = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.GroupChannelNot)) { listInfo.GroupChannelNot = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); if (string.IsNullOrEmpty(listInfo.GroupChannelNot)) { listInfo.GroupChannelNot = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.GroupContent) || StringUtils.EqualsIgnoreCase(name, "group")) { listInfo.GroupContent = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); if (string.IsNullOrEmpty(listInfo.GroupContent)) { listInfo.GroupContent = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.GroupContentNot) || StringUtils.EqualsIgnoreCase(name, "groupNot")) { listInfo.GroupContentNot = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); if (string.IsNullOrEmpty(listInfo.GroupContentNot)) { listInfo.GroupContentNot = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Tags)) { listInfo.Tags = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Columns)) { listInfo.Columns = TranslateUtils.ToInt(value); listInfo.Layout = Layout.Table; if (listInfo.Columns > 1 && isSetDirection == false) { listInfo.Direction = "horizontal"; } } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Direction)) { listInfo.Layout = Layout.Table; listInfo.Direction = value; isSetDirection = true; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Align)) { listInfo.Align = value; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.ItemAlign)) { listInfo.ItemAlign = value; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.ItemVerticalAlign)) { listInfo.ItemVerticalAlign = value; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.ItemClass)) { listInfo.ItemClass = value; } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsImage)) { listInfo.IsImage = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsVideo)) { listInfo.IsVideo = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.IsFile)) { listInfo.IsFile = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlContents.IsRelatedContents)) { listInfo.IsRelatedContents = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, StlListBase.Layout)) { listInfo.Layout = TranslateUtils.ToEnum(value, Layout.None); } else if (contextType == ParseType.SqlContent && StringUtils.EqualsIgnoreCase(name, StlSqlContents.DatabaseTypeName)) { var databaseType = parseManager.SettingsManager.Configuration[name]; if (!string.IsNullOrEmpty(databaseType)) { listInfo.DatabaseType = TranslateUtils.ToEnum(databaseType, DatabaseType.MySql); } } else if (contextType == ParseType.SqlContent && StringUtils.EqualsIgnoreCase(name, StlSqlContents.DatabaseType)) { listInfo.DatabaseType = TranslateUtils.ToEnum(value, DatabaseType.MySql); } else if (contextType == ParseType.SqlContent && StringUtils.EqualsIgnoreCase(name, StlSqlContents.ConnectionStringName)) { var connectionString = parseManager.SettingsManager.Configuration[name]; if (!string.IsNullOrEmpty(connectionString)) { listInfo.ConnectionString = connectionString; } } else if (contextType == ParseType.SqlContent && StringUtils.EqualsIgnoreCase(name, StlSqlContents.ConnectionString)) { listInfo.ConnectionString = value; } else if (contextType == ParseType.SqlContent && StringUtils.EqualsIgnoreCase(name, StlSqlContents.QueryString)) { listInfo.QueryString = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else { listInfo.Others.Set(name, value); } } return(listInfo); }
public static ListInfo GetListInfoByXmlNode(XmlNode node, PageInfo pageInfo, ContextInfo contextInfo, EContextType contextType) { var listInfo = new ListInfo { _contextType = contextType }; var innerXml = node.InnerXml; var itemTemplate = string.Empty; if (!string.IsNullOrEmpty(innerXml)) { var stlElementList = StlParserUtility.GetStlElementList(innerXml); if (stlElementList.Count > 0) { foreach (var theStlElement in stlElementList) { if (StlParserUtility.IsSpecifiedStlElement(theStlElement, StlItemTemplate.ElementName)) { var attributes = new LowerNameValueCollection(); var templateString = StlParserUtility.GetInnerXml(theStlElement, true, attributes); if (!string.IsNullOrEmpty(templateString)) { foreach (var key in attributes.Keys) { if (!StringUtils.EqualsIgnoreCase(key, StlItemTemplate.AttributeType)) { continue; } var type = attributes.Get(key); if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeItem)) { itemTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeHeader)) { listInfo.HeaderTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeFooter)) { listInfo.FooterTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeAlternatingItem)) { listInfo.AlternatingItemTemplate = templateString; } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeSelectedItem)) { if (!string.IsNullOrEmpty(attributes.Get(StlItemTemplate.AttributeSelected))) { var selected = attributes.Get(StlItemTemplate.AttributeSelected); var arraylist = new ArrayList(); if (selected.IndexOf(',') != -1) { arraylist.AddRange(selected.Split(',')); } else { if (selected.IndexOf('-') != -1) { var first = TranslateUtils.ToInt(selected.Split('-')[0]); var second = TranslateUtils.ToInt(selected.Split('-')[1]); for (var i = first; i <= second; i++) { arraylist.Add(i.ToString()); } } else { arraylist.Add(selected); } } foreach (string val in arraylist) { listInfo.SelectedItems.Set(val, templateString); } if (!string.IsNullOrEmpty(attributes.Get(StlItemTemplate.AttributeSelectedValue))) { var selectedValue = attributes.Get(StlItemTemplate.AttributeSelectedValue); listInfo.SelectedValues.Set(selectedValue, templateString); } } } else if (StringUtils.EqualsIgnoreCase(type, StlItemTemplate.TypeSeparator)) { var selectedValue = TranslateUtils.ToInt(attributes.Get(StlItemTemplate.AttributeSelectedValue), 1); if (selectedValue <= 1) { listInfo.SeparatorTemplate = templateString; } else { listInfo.SeparatorRepeatTemplate = templateString; listInfo.SeparatorRepeat = selectedValue; } } } } innerXml = innerXml.Replace(theStlElement, string.Empty); } else if (StlParserUtility.IsSpecifiedStlElement(theStlElement, StlLoading.ElementName)) { var innerBuilder = new StringBuilder(StlParserUtility.GetInnerXml(theStlElement, true)); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); StlParserUtility.XmlToHtml(innerBuilder); listInfo.LoadingTemplate = innerBuilder.ToString(); innerXml = innerXml.Replace(theStlElement, string.Empty); } else if (contextType == EContextType.SqlContent && StlParserUtility.IsSpecifiedStlElement(theStlElement, StlQueryString.ElementName)) { var innerBuilder = new StringBuilder(StlParserUtility.GetInnerXml(theStlElement, true)); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); StlParserUtility.XmlToHtml(innerBuilder); listInfo.QueryString = innerBuilder.ToString(); innerXml = innerXml.Replace(theStlElement, string.Empty); } } } } if (string.IsNullOrEmpty(itemTemplate)) { listInfo.ItemTemplate = !string.IsNullOrEmpty(innerXml) ? innerXml : "<stl:a target=\"_blank\"></stl:a>"; } else { listInfo.ItemTemplate = itemTemplate; } var ie = node.Attributes.GetEnumerator(); var isSetDirection = false;//是否设置了direction属性 while (ie.MoveNext()) { var attr = (XmlAttribute)ie.Current; if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeChannelIndex)) { listInfo.ChannelIndex = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeChannelName)) { listInfo.ChannelName = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeUpLevel)) { listInfo.UpLevel = TranslateUtils.ToInt(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeTopLevel)) { listInfo.TopLevel = TranslateUtils.ToInt(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeScope)) { listInfo.Scope = EScopeTypeUtils.GetEnumType(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeIsTop)) { listInfo.IsTop = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeIsRecommend)) { listInfo.IsRecommend = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeIsHot)) { listInfo.IsHot = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeIsColor)) { listInfo.IsColor = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeWhere)) { listInfo.Where = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeIsDynamic)) { listInfo.IsDynamic = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeTotalNum)) { listInfo.TotalNum = TranslateUtils.ToInt(StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo)); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlPageContents.AttributePageNum)) { listInfo.PageNum = TranslateUtils.ToInt(StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo)); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlPageContents.AttributeMaxPage)) { listInfo.MaxPage = TranslateUtils.ToInt(StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo)); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeTitleWordNum)) { listInfo.TitleWordNum = TranslateUtils.ToInt(StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo)); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeStartNum)) { listInfo.StartNum = TranslateUtils.ToInt(StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo)); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeOrder)) { if (contextType == EContextType.Content) { listInfo.OrderByString = StlDataUtility.GetOrderByString(pageInfo.PublishmentSystemId, attr.Value, ETableStyle.BackgroundContent, ETaxisType.OrderByTaxisDesc); } else if (contextType == EContextType.Channel) { listInfo.OrderByString = StlDataUtility.GetOrderByString(pageInfo.PublishmentSystemId, attr.Value, ETableStyle.Channel, ETaxisType.OrderByTaxis); } else if (contextType == EContextType.InputContent) { listInfo.OrderByString = StlDataUtility.GetOrderByString(pageInfo.PublishmentSystemId, attr.Value, ETableStyle.InputContent, ETaxisType.OrderByTaxisDesc); } else { listInfo.OrderByString = attr.Value; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeGroupChannel)) { listInfo.GroupChannel = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); if (string.IsNullOrEmpty(listInfo.GroupChannel)) { listInfo.GroupChannel = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeGroupChannelNot)) { listInfo.GroupChannelNot = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); if (string.IsNullOrEmpty(listInfo.GroupChannelNot)) { listInfo.GroupChannelNot = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeGroupContent) || StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeGroup)) { listInfo.GroupContent = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); if (string.IsNullOrEmpty(listInfo.GroupContent)) { listInfo.GroupContent = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeGroupContentNot) || StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeGroupNot)) { listInfo.GroupContentNot = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); if (string.IsNullOrEmpty(listInfo.GroupContentNot)) { listInfo.GroupContentNot = "__Empty__"; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeTags)) { listInfo.Tags = StlEntityParser.ReplaceStlEntitiesForAttributeValue(attr.Value, pageInfo, contextInfo); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeColumns)) { listInfo.Columns = TranslateUtils.ToInt(attr.Value); listInfo.Layout = ELayout.Table; if (listInfo.Columns > 1 && isSetDirection == false) { listInfo.Direction = RepeatDirection.Horizontal; } } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeDirection)) { listInfo.Layout = ELayout.Table; listInfo.Direction = Converter.ToRepeatDirection(attr.Value); isSetDirection = true; } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeHeight)) { try { listInfo.Height = Unit.Parse(attr.Value); } catch { // ignored } } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeWidth)) { try { listInfo.Width = Unit.Parse(attr.Value); } catch { // ignored } } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeAlign)) { listInfo.Align = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeItemHeight)) { try { listInfo.ItemHeight = Unit.Parse(attr.Value); } catch { // ignored } } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeItemWidth)) { try { listInfo.ItemWidth = Unit.Parse(attr.Value); } catch { // ignored } } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeItemAlign)) { listInfo.ItemAlign = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeItemVerticalAlign)) { listInfo.ItemVerticalAlign = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeItemClass)) { listInfo.ItemClass = attr.Value; } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeIsImage)) { listInfo.IsImage = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeIsVideo)) { listInfo.IsVideo = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeIsFile)) { listInfo.IsFile = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeIsNoDup)) { listInfo.IsNoDup = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeIsRelatedContents)) { listInfo.IsRelatedContents = TranslateUtils.ToBool(attr.Value); } else if (StringUtils.EqualsIgnoreCase(attr.Name, StlContents.AttributeLayout)) { listInfo.Layout = ELayoutUtils.GetEnumType(attr.Value); } else if (contextType == EContextType.SqlContent && StringUtils.EqualsIgnoreCase(attr.Name, StlSqlContents.AttributeConnectionString)) { listInfo.ConnectionString = attr.Value; } else if (contextType == EContextType.SqlContent && StringUtils.EqualsIgnoreCase(attr.Name, StlSqlContents.AttributeConnectionStringName)) { if (string.IsNullOrEmpty(listInfo.ConnectionString)) { listInfo.ConnectionString = WebConfigUtils.ConnectionString; } } else { listInfo.Others.Set(attr.Name, attr.Value); } } return(listInfo); }