public static async Task <string> GetSitesTemplateStringAsync(string templateString, string containerClientId, IParseManager parseManager, ParseType contextType) { var context = parseManager.ContextInfo; var pageInfo = parseManager.PageInfo; var itemContainer = DbItemContainer.GetItemContainer(pageInfo); var siteInfo = itemContainer.SiteItem.Value; parseManager.ContextInfo = parseManager.ContextInfo.Clone(); parseManager.ContextInfo.ContainerClientId = containerClientId; parseManager.ContextInfo.ItemContainer = itemContainer; parseManager.ContextInfo.ContextType = contextType; var preSite = pageInfo.Site; var prePageChannelId = pageInfo.PageChannelId; var prePageContentId = pageInfo.PageContentId; pageInfo.ChangeSite(siteInfo, siteInfo.Id, 0, parseManager.ContextInfo); var innerBuilder = new StringBuilder(templateString); await parseManager.ParseInnerContentAsync(innerBuilder); DbItemContainer.PopSiteItems(pageInfo); pageInfo.ChangeSite(preSite, prePageChannelId, prePageContentId, parseManager.ContextInfo); parseManager.ContextInfo = context; return(innerBuilder.ToString()); }
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()); }