//API StlActionsSearchController调用 public static async Task <StlPageContents> GetAsync(string stlPageContentsElement, IParseManager parseManager, int pageNum, string where) { var stlPageContents = new StlPageContents { ParseManager = parseManager }; var stlElementInfo = StlParserUtility.ParseStlElement(stlPageContentsElement); parseManager.ContextInfo = parseManager.ContextInfo.Clone(stlPageContentsElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes); stlPageContents.ListInfo = await ListInfo.GetListInfoAsync(parseManager, ParseType.Content); stlPageContents.ListInfo.Scope = ScopeType.All; if (pageNum > 0) { stlPageContents.ListInfo.PageNum = pageNum; } stlPageContents.ListInfo.Where = where; stlPageContents.DataSource = await GetContentsDataSourceAsync(parseManager, stlPageContents.ListInfo); //stlPageContents.SqlString = StlDataUtility.GetPageContentsSqlStringBySearch(tableName, stlPageContents.ListInfo.GroupContent, stlPageContents.ListInfo.GroupContentNot, stlPageContents.ListInfo.Tags, stlPageContents.ListInfo.IsImageExists, stlPageContents.ListInfo.IsImage, stlPageContents.ListInfo.IsVideoExists, stlPageContents.ListInfo.IsVideo, stlPageContents.ListInfo.IsFileExists, stlPageContents.ListInfo.IsFile, stlPageContents.ListInfo.StartNum, stlPageContents.ListInfo.TotalNum, stlPageContents.ListInfo.Order, stlPageContents.ListInfo.IsTopExists, stlPageContents.ListInfo.IsTop, stlPageContents.ListInfo.IsRecommendExists, stlPageContents.ListInfo.IsRecommend, stlPageContents.ListInfo.IsHotExists, stlPageContents.ListInfo.IsHot, stlPageContents.ListInfo.IsColorExists, stlPageContents.ListInfo.IsColor, where); return(stlPageContents); }
public static async Task <string> ParseInDynamicPageAsync(IParseManager parseManager, string stlElement, int currentPageIndex, int pageCount, int totalNum, bool isPageRefresh, string ajaxDivId) { string parsedContent; try { var stlElementInfo = StlParserUtility.ParseStlElement(stlElement); if (pageCount <= 1) { return(string.Empty); } var index = stlElement.IndexOf(">", StringComparison.Ordinal) + 1; var length = stlElement.LastIndexOf("<", StringComparison.Ordinal) - index; if (index <= 0 || length <= 0) { stlElement = stlElementInfo.InnerHtml; } else { stlElement = stlElement.Substring(index, length); } parsedContent = await parseManager.ParseStlPageItemsInDynamicPageAsync(stlElement, currentPageIndex, pageCount, totalNum, isPageRefresh, ajaxDivId); } catch (Exception ex) { parsedContent = await parseManager.AddStlErrorLogAsync(ElementName, stlElement, ex); } return(parsedContent); }
public static string ParseInDynamicPage(string stlElement, PageInfo pageInfo, string pageUrl, int channelId, int currentPageIndex, int pageCount, int totalNum, bool isPageRefresh, string ajaxDivId) { string parsedContent; try { var stlElementInfo = StlParserUtility.ParseStlElement(stlElement); if (pageCount <= 1) { return(string.Empty); } var index = stlElement.IndexOf(">", StringComparison.Ordinal) + 1; var length = stlElement.LastIndexOf("<", StringComparison.Ordinal) - index; if (index <= 0 || length <= 0) { stlElement = stlElementInfo.InnerHtml; } else { stlElement = stlElement.Substring(index, length); } parsedContent = StlPageElementParser.ParseStlPageItemsInDynamicPage(stlElement, pageInfo, pageUrl, channelId, currentPageIndex, pageCount, totalNum, isPageRefresh, ajaxDivId); } catch (Exception ex) { parsedContent = StlParserUtility.GetStlErrorMessage(ElementName, stlElement, ex); } return(parsedContent); }
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); }
//private readonly DataSet _dataSet; public static async Task <StlPageSqlContents> GetAsync(string stlPageSqlContentsElement, IParseManager parseManager) { var stlPageSqlContents = new StlPageSqlContents { StlPageSqlContentsElement = stlPageSqlContentsElement, ParseManager = parseManager }; try { var stlElementInfo = StlParserUtility.ParseStlElement(stlPageSqlContentsElement, -1); parseManager.ContextInfo = parseManager.ContextInfo.Clone(ElementName, stlPageSqlContentsElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes, stlElementInfo.StartIndex); stlPageSqlContents.ListInfo = await ListInfo.GetListInfoAsync(parseManager, ParseType.SqlContent); var sqlString = stlPageSqlContents.ListInfo.QueryString; if (sqlString.IndexOf(" ORDER BY", StringComparison.OrdinalIgnoreCase) == -1 && !string.IsNullOrEmpty(stlPageSqlContents.ListInfo.Order)) { if (stlPageSqlContents.ListInfo.Order.IndexOf(" ORDER BY", StringComparison.OrdinalIgnoreCase) == -1) { sqlString += $" ORDER BY {stlPageSqlContents.ListInfo.Order}"; } else { sqlString += $" {stlPageSqlContents.ListInfo.Order}"; } } stlPageSqlContents.SqlString = sqlString; // stlPageSqlContents.SqlString = stlPageSqlContents.ListInfo.QueryString; // if (string.IsNullOrWhiteSpace(stlPageSqlContents.ListInfo.Order)) // { // var pos = stlPageSqlContents.SqlString.LastIndexOf(" ORDER BY ", StringComparison.OrdinalIgnoreCase); // if (pos > -1) // { // stlPageSqlContents.SqlString = stlPageSqlContents.SqlString.Substring(0, pos); // stlPageSqlContents.ListInfo.Order = stlPageSqlContents.SqlString.Substring(pos); // } // } // else // { // if (stlPageSqlContents.ListInfo.Order.IndexOf("ORDER BY", StringComparison.OrdinalIgnoreCase) == -1) // { // stlPageSqlContents.ListInfo.Order = $"ORDER BY {stlPageSqlContents.ListInfo.Order}"; // } // } //_dataSet = StlDataUtility.GetPageSqlContentsDataSet(_listInfo.ConnectionString, _listInfo.QueryString, _listInfo.StartNum, _listInfo.PageNum, _listInfo.OrderByString); } catch (Exception ex) { await parseManager.AddStlErrorLogAsync(ElementName, stlPageSqlContentsElement, ex); stlPageSqlContents.ListInfo = new ListInfo(); } return(stlPageSqlContents); }
//对“翻页项容器”(stl:pageItems)元素进行解析,此元素在生成页面时单独解析,不包含在ParseStlElement方法中。 public static async Task <string> ParseAsync(IParseManager parseManager, string stlElement, int channelId, int contentId, int currentPageIndex, int pageCount, int totalNum, ParseType contextType) { var pageInfo = parseManager.PageInfo; await pageInfo.AddPageHeadCodeIfNotExistsAsync(ParsePage.Const.Jquery); string parsedContent; try { var stlElementInfo = StlParserUtility.ParseStlElement(stlElement); if (stlElementInfo.Attributes[Context] != null) { contextType = TranslateUtils.ToEnum(stlElementInfo.Attributes[Context], ParseType.Undefined); } if (pageCount <= 1) { return(string.Empty); } bool isXmlContent; var index = stlElement.IndexOf(">", StringComparison.Ordinal) + 1; var length = stlElement.LastIndexOf("<", StringComparison.Ordinal) - index; if (index <= 0 || length <= 0) { stlElement = stlElementInfo.InnerHtml; isXmlContent = true; } else { stlElement = stlElement.Substring(index, length); isXmlContent = false; } parsedContent = await parseManager.ParseStlPageItemsAsync(stlElement, channelId, contentId, currentPageIndex, pageCount, totalNum, isXmlContent, contextType); var innerBuilder = new StringBuilder(parsedContent); await parseManager.ParseInnerContentAsync(innerBuilder); parsedContent = innerBuilder.ToString(); } catch (Exception ex) { parsedContent = await parseManager.AddStlErrorLogAsync(ElementName, stlElement, ex); } return(parsedContent); }
//对“翻页项容器”(stl:pageItems)元素进行解析,此元素在生成页面时单独解析,不包含在ParseStlElement方法中。 public static string Parse(string stlElement, PageInfo pageInfo, int channelId, int contentId, int currentPageIndex, int pageCount, int totalNum, EContextType contextType) { pageInfo.AddPageBodyCodeIfNotExists(PageInfo.Const.Jquery); string parsedContent; try { var stlElementInfo = StlParserUtility.ParseStlElement(stlElement); if (stlElementInfo.Attributes[Context] != null) { contextType = EContextTypeUtils.GetEnumType(stlElementInfo.Attributes[Context]); } if (pageCount <= 1) { return(string.Empty); } bool isXmlContent; var index = stlElement.IndexOf(">", StringComparison.Ordinal) + 1; var length = stlElement.LastIndexOf("<", StringComparison.Ordinal) - index; if (index <= 0 || length <= 0) { stlElement = stlElementInfo.InnerHtml; isXmlContent = true; } else { stlElement = stlElement.Substring(index, length); isXmlContent = false; } parsedContent = StlPageElementParser.ParseStlPageItems(stlElement, pageInfo, channelId, contentId, currentPageIndex, pageCount, totalNum, isXmlContent, contextType); ContextInfo contextInfo = new ContextInfo(pageInfo) { ContextType = contextType }; var innerBuilder = new StringBuilder(parsedContent); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); parsedContent = innerBuilder.ToString(); } catch (Exception ex) { parsedContent = LogUtils.AddStlErrorLog(pageInfo, ElementName, stlElement, ex); } return(parsedContent); }
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(); } }
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 static async Task <StlPageContents> GetAsync(string stlPageContentsElement, IParseManager parseManager) { var stlPageContents = new StlPageContents { StlPageContentsElement = stlPageContentsElement, ParseManager = parseManager }; var stlElementInfo = StlParserUtility.ParseStlElement(stlPageContentsElement); stlPageContents.ParseManager.ContextInfo = parseManager.ContextInfo.Clone(stlPageContentsElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes); stlPageContents.ListInfo = await ListInfo.GetListInfoAsync(parseManager, ParseType.Content); //stlPageContents.SqlString = await StlDataUtility.GetStlPageContentsSqlStringAsync(stlPageContents.PageInfo.Site, channelId, stlPageContents.ListInfo); stlPageContents.DataSource = await GetContentsDataSourceAsync(parseManager, stlPageContents.ListInfo); return(stlPageContents); }
public static async Task <StlPageChannels> GetAsync(string stlPageChannelsElement, IParseManager parseManager) { var stlPageChannels = new StlPageChannels { _parseManager = parseManager }; var stlElementInfo = StlParserUtility.ParseStlElement(stlPageChannelsElement); stlPageChannels._parseManager.ContextInfo = parseManager.ContextInfo.Clone(stlPageChannelsElement, stlElementInfo.InnerHtml, stlElementInfo.Attributes); stlPageChannels._listInfo = await ListInfo.GetListInfoAsync(parseManager, ParseType.Channel); stlPageChannels._channelList = await GetChannelsDataSourceAsync(parseManager, stlPageChannels._listInfo); //stlPageChannels.DataSet = await StlDataUtility.GetPageChannelsDataSetAsync(pageInfo.SiteId, channelId, stlPageChannels._listInfo.GroupChannel, stlPageChannels._listInfo.GroupChannelNot, stlPageChannels._listInfo.IsImageExists, stlPageChannels._listInfo.IsImage, stlPageChannels._listInfo.StartNum, stlPageChannels._listInfo.TotalNum, stlPageChannels._listInfo.Order, stlPageChannels._listInfo.Scope, isTotal); return(stlPageChannels); }
//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); }
//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(); } }
public static string ParseInSearchPage(string stlElement, PageInfo pageInfo, string ajaxDivId, int channelId, int currentPageIndex, int pageCount, int totalNum) { string parsedContent; try { var stlElementInfo = StlParserUtility.ParseStlElement(stlElement); if (pageCount <= 1) { return(string.Empty); } //bool isXmlContent; var index = stlElement.IndexOf(">", StringComparison.Ordinal) + 1; var length = stlElement.LastIndexOf("<", StringComparison.Ordinal) - index; if (index <= 0 || length <= 0) { stlElement = stlElementInfo.InnerHtml; //isXmlContent = true; } else { stlElement = stlElement.Substring(index, length); //isXmlContent = false; } parsedContent = StlPageElementParser.ParseStlPageItemsInSearchPage(stlElement, pageInfo, ajaxDivId, channelId, currentPageIndex, pageCount, totalNum); } catch (Exception ex) { parsedContent = LogUtils.AddStlErrorLog(pageInfo, ElementName, stlElement, ex); } 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); }
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); }