public async Task <GetResult> Get([FromBody] GetRequest request) { var user = await _authManager.GetUserAsync(); var dynamicInfo = DynamicInfo.GetDynamicInfo(_settingsManager, request.Value, request.Page, user, Request.Path + Request.QueryString); var ifInfo = TranslateUtils.JsonDeserialize <DynamicInfo.IfInfo>(dynamicInfo.ElementValues); var isSuccess = false; var html = string.Empty; if (ifInfo != null) { if (StringUtils.EqualsIgnoreCase(ifInfo.Type, StlIf.TypeIsUserLoggin)) { isSuccess = _authManager.IsUser; } var template = isSuccess ? dynamicInfo.SuccessTemplate : dynamicInfo.FailureTemplate; html = await StlDynamic.ParseDynamicContentAsync(_parseManager, dynamicInfo, template); } return(new GetResult { Value = isSuccess, Html = html }); }
private static async Task <string> ParseAsync(IParseManager parseManager, Site site, string loading, string template, bool inline, string onBeforeSend, string onSuccess, string onComplete, string onError) { await parseManager.PageInfo.AddPageHeadCodeIfNotExistsAsync(ParsePage.Const.StlClient); //运行解析以便为页面生成所需JS引用 if (!string.IsNullOrEmpty(template)) { await parseManager.ParseInnerContentAsync(new StringBuilder(template)); } var dynamicInfo = new DynamicInfo(parseManager.SettingsManager) { ElementName = ElementName, SiteId = parseManager.PageInfo.SiteId, ChannelId = parseManager.ContextInfo.ChannelId, ContentId = parseManager.ContextInfo.ContentId, TemplateId = parseManager.PageInfo.Template.Id, ElementId = StringUtils.GetElementId(), LoadingTemplate = loading, SuccessTemplate = template, OnBeforeSend = onBeforeSend, OnSuccess = onSuccess, OnComplete = onComplete, OnError = onError }; var dynamicUrl = parseManager.PathManager.GetDynamicApiUrl(site); return(dynamicInfo.GetScript(dynamicUrl, inline)); }
public async Task <SubmitResult> Submit([FromBody] SubmitRequest request) { var user = await _authManager.GetUserAsync(); var dynamicInfo = DynamicInfo.GetDynamicInfo(_settingsManager, request.Value, request.Page, user, Request.Path + Request.QueryString); return(new SubmitResult { Value = true, Html = await StlDynamic.ParseDynamicContentAsync(_parseManager, dynamicInfo, dynamicInfo.SuccessTemplate) }); }
private static async Task <string> ParseDynamicAsync(IParseManager parseManager, string testType, string testValue, string testOperate, string loading, string yes, string no, string onBeforeSend, string onSuccess, string onComplete, string onError) { var pageInfo = parseManager.PageInfo; var contextInfo = parseManager.ContextInfo; if (string.IsNullOrEmpty(yes) && string.IsNullOrEmpty(no)) { return(string.Empty); } await pageInfo.AddPageHeadCodeIfNotExistsAsync(ParsePage.Const.StlClient); var elementId = StringUtils.GetElementId(); //运行解析以便为页面生成所需JS引用 if (!string.IsNullOrEmpty(yes)) { await parseManager.ParseInnerContentAsync(new StringBuilder(yes)); } if (!string.IsNullOrEmpty(no)) { await parseManager.ParseInnerContentAsync(new StringBuilder(no)); } var dynamicInfo = new DynamicInfo(parseManager.SettingsManager) { ElementName = ElementName, SiteId = pageInfo.SiteId, ChannelId = contextInfo.ChannelId, ContentId = contextInfo.ContentId, TemplateId = pageInfo.Template.Id, ElementId = elementId, LoadingTemplate = loading, SuccessTemplate = yes, FailureTemplate = no, OnBeforeSend = onBeforeSend, OnSuccess = onSuccess, OnComplete = onComplete, OnError = onError }; var ifInfo = new DynamicInfo.IfInfo { Type = testType, Op = testOperate, Value = testValue }; dynamicInfo.ElementValues = TranslateUtils.JsonSerialize(ifInfo); var dynamicUrl = parseManager.PathManager.GetIfApiUrl(contextInfo.Site); return(dynamicInfo.GetScript(dynamicUrl, true)); }
public static async Task <string> ParseDynamicContentAsync(IParseManager parseManager, DynamicInfo dynamicInfo, string template) { var databaseManager = parseManager.DatabaseManager; if (string.IsNullOrEmpty(template)) { return(string.Empty); } var templateInfo = await databaseManager.TemplateRepository.GetAsync(dynamicInfo.TemplateId); var siteInfo = await databaseManager.SiteRepository.GetAsync(dynamicInfo.SiteId); await parseManager.InitAsync(EditMode.Default, siteInfo, dynamicInfo.ChannelId, dynamicInfo.ContentId, templateInfo); parseManager.PageInfo.User = dynamicInfo.User; var templateContent = StlRequest.ParseRequestEntities(dynamicInfo.QueryString, template); var contentBuilder = new StringBuilder(templateContent); var stlElementList = StlParserUtility.GetStlElementList(contentBuilder.ToString()); var pageIndex = dynamicInfo.Page - 1; //如果标签中存在<stl:pageContents> if (StlParserUtility.IsStlElementExists(StlPageContents.ElementName, stlElementList)) { var stlElement = StlParserUtility.GetStlElement(StlPageContents.ElementName, stlElementList); var stlPageContentsElement = stlElement; var stlPageContentsElementReplaceString = stlElement; var pageContentsElementParser = await StlPageContents.GetAsync(stlPageContentsElement, parseManager); var(pageCount, totalNum) = pageContentsElementParser.GetPageCount(); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == pageIndex) { var pageHtml = await pageContentsElementParser.ParseAsync(totalNum, currentPageIndex, pageCount, false); contentBuilder.Replace(stlPageContentsElementReplaceString, pageHtml); await parseManager.ReplacePageElementsInDynamicPageAsync(contentBuilder, stlElementList, currentPageIndex, pageCount, totalNum, false, dynamicInfo.ElementId); break; } } } //如果标签中存在<stl:pageChannels> else if (StlParserUtility.IsStlElementExists(StlPageChannels.ElementName, stlElementList)) { var stlElement = StlParserUtility.GetStlElement(StlPageChannels.ElementName, stlElementList); var stlPageChannelsElement = stlElement; var stlPageChannelsElementReplaceString = stlElement; var pageChannelsElementParser = await StlPageChannels.GetAsync(stlPageChannelsElement, parseManager); var pageCount = pageChannelsElementParser.GetPageCount(out var totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex != pageIndex) { continue; } var pageHtml = await pageChannelsElementParser.ParseAsync(currentPageIndex, pageCount); contentBuilder.Replace(stlPageChannelsElementReplaceString, pageHtml); await parseManager.ReplacePageElementsInDynamicPageAsync(contentBuilder, stlElementList, currentPageIndex, pageCount, totalNum, false, dynamicInfo.ElementId); break; } } //如果标签中存在<stl:pageSqlContents> else if (StlParserUtility.IsStlElementExists(StlPageSqlContents.ElementName, stlElementList)) { var stlElement = StlParserUtility.GetStlElement(StlPageSqlContents.ElementName, stlElementList); var stlPageSqlContentsElement = stlElement; var stlPageSqlContentsElementReplaceString = stlElement; var pageSqlContentsElementParser = await StlPageSqlContents.GetAsync(stlPageSqlContentsElement, parseManager); var pageCount = pageSqlContentsElementParser.GetPageCount(out var totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex != pageIndex) { continue; } var pageHtml = await pageSqlContentsElementParser.ParseAsync(totalNum, currentPageIndex, pageCount, false); contentBuilder.Replace(stlPageSqlContentsElementReplaceString, pageHtml); await parseManager.ReplacePageElementsInDynamicPageAsync(contentBuilder, stlElementList, currentPageIndex, pageCount, totalNum, false, dynamicInfo.ElementId); break; } } else if (StlParserUtility.IsStlElementExists(StlPageItems.ElementName, stlElementList)) { var pageCount = TranslateUtils.ToInt(dynamicInfo.QueryString["pageCount"]); var totalNum = TranslateUtils.ToInt(dynamicInfo.QueryString["totalNum"]); var pageContentsAjaxDivId = dynamicInfo.QueryString["pageContentsAjaxDivId"]; for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex != pageIndex) { continue; } await parseManager.ReplacePageElementsInDynamicPageAsync(contentBuilder, stlElementList, currentPageIndex, pageCount, totalNum, false, pageContentsAjaxDivId); break; } } await parseManager.ParseInnerContentAsync(contentBuilder); //var parsedContent = StlParserUtility.GetBackHtml(contentBuilder.ToString(), pageInfo); //return pageInfo.HeadCodesHtml + pageInfo.BodyCodesHtml + parsedContent + pageInfo.FootCodesHtml; return(contentBuilder.ToString()); }