public string GetCurrentUrl(IParseContext context) { var siteInfo = SiteManager.GetSiteInfo(context.SiteId); return(StlParserUtility.GetStlCurrentUrl(siteInfo, context.ChannelId, context.ContentId, context.ContentInfo, context.TemplateType, context.TemplateId, false)); }
private static string ParseImpl(PageInfo pageInfo, ContextInfo contextInfo, string templateContent, bool isPageRefresh, string onBeforeSend, string onSuccess, string onComplete, string onError) { pageInfo.AddPageBodyCodeIfNotExists(PageInfo.Const.StlClient); var ajaxDivId = StlParserUtility.GetAjaxDivId(pageInfo.UniqueId); var functionName = $"stlDynamic_{ajaxDivId}"; if (string.IsNullOrEmpty(templateContent)) { return(string.Empty); } StlParserManager.ParseInnerContent(new StringBuilder(templateContent), pageInfo, contextInfo); var apiUrl = ApiRouteActionsDynamic.GetUrl(pageInfo.ApiUrl); var currentPageUrl = StlParserUtility.GetStlCurrentUrl(pageInfo.SiteInfo, contextInfo.ChannelId, contextInfo.ContentId, contextInfo.ContentInfo, pageInfo.TemplateInfo.TemplateType, pageInfo.TemplateInfo.Id, pageInfo.IsLocal); currentPageUrl = PageUtils.AddQuestionOrAndToUrl(currentPageUrl); var apiParameters = ApiRouteActionsDynamic.GetParameters(pageInfo.SiteId, contextInfo.ChannelId, contextInfo.ContentId, pageInfo.TemplateInfo.Id, currentPageUrl, ajaxDivId, isPageRefresh, templateContent); var builder = new StringBuilder(); builder.Append($@"<span id=""{ajaxDivId}""></span>"); builder.Append($@" <script type=""text/javascript"" language=""javascript""> function {functionName}(pageNum) {{ var url = ""{apiUrl}?"" + StlClient.getQueryString(); var data = {apiParameters}; if (pageNum && pageNum > 0) {{ data.pageNum = pageNum; }} var containerId = '{ajaxDivId}'; {onBeforeSend} stlClient.post(url, data, function (err, data, status) {{ if (!err) {{ {onSuccess} document.getElementById(containerId).innerHTML = data.html; }} else {{ {onError} }} {onComplete} }}); }} {functionName}(0); </script> "); return(builder.ToString()); }
private static string TestTypeDynamic(PageInfo pageInfo, ContextInfo contextInfo, string testType, string testValue, string testOperate, string successTemplateString, string failureTemplateString) { pageInfo.AddPageBodyCodeIfNotExists(PageInfo.Const.StlClient); var ajaxDivId = StlParserUtility.GetAjaxDivId(pageInfo.UniqueId); var functionName = $"stlIf_{ajaxDivId}"; if (string.IsNullOrEmpty(successTemplateString) && string.IsNullOrEmpty(failureTemplateString)) { return(string.Empty); } var pageUrl = StlParserUtility.GetStlCurrentUrl(pageInfo.SiteInfo, contextInfo.ChannelId, contextInfo.ContentId, contextInfo.ContentInfo, pageInfo.TemplateInfo.TemplateType, pageInfo.TemplateInfo.Id, pageInfo.IsLocal); var ifApiUrl = ApiRouteActionsIf.GetUrl(pageInfo.ApiUrl); var ifApiParms = ApiRouteActionsIf.GetParameters(pageInfo.SiteId, contextInfo.ChannelId, contextInfo.ContentId, pageInfo.TemplateInfo.Id, ajaxDivId, pageUrl, testType, testValue, testOperate, successTemplateString, failureTemplateString); var builder = new StringBuilder(); builder.Append($@"<span id=""{ajaxDivId}""></span>"); builder.Append($@" <script type=""text/javascript"" language=""javascript""> function {functionName}(pageNum) {{ var url = ""{ifApiUrl}""; var data = {ifApiParms}; stlClient.post(url, data, function (err, data, status) {{ if (!err) document.getElementById(""{ajaxDivId}"").innerHTML = data.html; }}); }} {functionName}(0); </script> "); return(builder.ToString()); }
internal static string Parse(string stlEntity, PageInfo pageInfo, ContextInfo contextInfo) { var parsedContent = string.Empty; try { var entityName = StlParserUtility.GetNameFromEntity(stlEntity); var attributeName = entityName.Substring(5, entityName.Length - 6); if (StringUtils.EqualsIgnoreCase(PoweredBy, attributeName))//支持信息 { parsedContent = @"Powered by <a href=""http://www.siteserver.cn"" target=""_blank"">SiteServer CMS</a>"; } else if (StringUtils.EqualsIgnoreCase(RootUrl, attributeName))//系统根目录地址 { parsedContent = PageUtils.ParseConfigRootUrl("~"); if (!string.IsNullOrEmpty(parsedContent)) { parsedContent = parsedContent.TrimEnd('/'); } } else if (StringUtils.EqualsIgnoreCase(ApiUrl, attributeName))//API地址 { parsedContent = pageInfo.ApiUrl.TrimEnd('/'); } else if (StringUtils.EqualsIgnoreCase(SiteId, attributeName))//ID { parsedContent = pageInfo.SiteId.ToString(); } else if (StringUtils.EqualsIgnoreCase(SiteName, attributeName))//名称 { parsedContent = pageInfo.SiteInfo.SiteName; } else if (StringUtils.EqualsIgnoreCase(SiteUrl, attributeName))//域名地址 { parsedContent = PageUtility.GetSiteUrl(pageInfo.SiteInfo, pageInfo.IsLocal).TrimEnd('/'); } else if (StringUtils.EqualsIgnoreCase(SiteDir, attributeName))//文件夹 { parsedContent = pageInfo.SiteInfo.SiteDir; } else if (StringUtils.EqualsIgnoreCase(CurrentUrl, attributeName))//当前页地址 { parsedContent = StlParserUtility.GetStlCurrentUrl(pageInfo.SiteInfo, contextInfo.ChannelId, contextInfo.ContentId, contextInfo.ContentInfo, pageInfo.TemplateInfo.TemplateType, pageInfo.TemplateInfo.Id, pageInfo.IsLocal); } else if (StringUtils.EqualsIgnoreCase(ChannelUrl, attributeName))//栏目页地址 { parsedContent = PageUtility.GetChannelUrl(pageInfo.SiteInfo, ChannelManager.GetChannelInfo(pageInfo.SiteId, contextInfo.ChannelId), pageInfo.IsLocal); } //else if (StringUtils.EqualsIgnoreCase(HomeUrl, attributeName))//用户中心地址 //{ // parsedContent = pageInfo.HomeUrl.TrimEnd('/'); //} //else if (StringUtils.EqualsIgnoreCase(attributeName, LoginUrl)) //{ // var returnUrl = StlUtility.GetStlCurrentUrl(pageInfo.SiteInfo, contextInfo.ChannelId, contextInfo.ContentId, contextInfo.ContentInfo, pageInfo.TemplateInfo.TemplateType, pageInfo.TemplateInfo.TemplateId); // parsedContent = HomeUtils.GetLoginUrl(pageInfo.HomeUrl, returnUrl); //} //else if (StringUtils.EqualsIgnoreCase(attributeName, LogoutUrl)) //{ // var returnUrl = StlUtility.GetStlCurrentUrl(pageInfo.SiteInfo, contextInfo.ChannelId, contextInfo.ContentId, contextInfo.ContentInfo, pageInfo.TemplateInfo.TemplateType, pageInfo.TemplateInfo.TemplateId); // parsedContent = HomeUtils.GetLogoutUrl(pageInfo.HomeUrl, returnUrl); //} //else if (StringUtils.EqualsIgnoreCase(attributeName, RegisterUrl)) //{ // var returnUrl = StlUtility.GetStlCurrentUrl(pageInfo.SiteInfo, contextInfo.ChannelId, contextInfo.ContentId, contextInfo.ContentInfo, pageInfo.TemplateInfo.TemplateType, pageInfo.TemplateInfo.TemplateId); // parsedContent = HomeUtils.GetRegisterUrl(pageInfo.HomeUrl, returnUrl); //} else if (StringUtils.StartsWithIgnoreCase(attributeName, "TableFor"))// { if (StringUtils.EqualsIgnoreCase(attributeName, "TableForContent")) { parsedContent = pageInfo.SiteInfo.TableName; } } else if (StringUtils.StartsWithIgnoreCase(attributeName, "Site"))// { parsedContent = pageInfo.SiteInfo.Additional.GetString(attributeName.Substring(4)); } else { if (pageInfo.SiteInfo.Additional.ContainsKey(attributeName)) { parsedContent = pageInfo.SiteInfo.Additional.GetString(attributeName); if (!string.IsNullOrEmpty(parsedContent)) { var styleInfo = TableStyleManager.GetTableStyleInfo(DataProvider.SiteDao.TableName, attributeName, RelatedIdentities.GetRelatedIdentities(pageInfo.SiteId, pageInfo.SiteId)); // 如果 styleInfo.TableStyleId <= 0,表示此字段已经被删除了,不需要再显示值了 ekun008 if (styleInfo.Id > 0) { parsedContent = InputTypeUtils.EqualsAny(styleInfo.InputType, InputType.Image, InputType.File) ? PageUtility.ParseNavigationUrl(pageInfo.SiteInfo, parsedContent, pageInfo.IsLocal) : InputParserUtility.GetContentByTableStyle(parsedContent, string.Empty, pageInfo.SiteInfo, styleInfo, string.Empty, null, string.Empty, true); } else { // 如果字段已经被删除或不再显示了,则此字段的值为空。有时虚拟字段值不会清空 parsedContent = string.Empty; } } } } } catch { // ignored } return(parsedContent); }