private static async Task <string> ParseImplAsync(IParseManager parseManager, string testType, string testOperate, string testValue, string onBeforeSend, string onSuccess, string onComplete, string onError) { var databaseManager = parseManager.DatabaseManager; var pageInfo = parseManager.PageInfo; var contextInfo = parseManager.ContextInfo; StlParserUtility.GetLoadingYesNo(contextInfo.InnerHtml, out var loading, out var yes, out var no); if (StringUtils.EqualsIgnoreCase(testType, TypeIsUserLoggin)) { return(await ParseDynamicAsync(parseManager, testType, testValue, testOperate, loading, yes, no, onBeforeSend, onSuccess, onComplete, onError)); } var isSuccess = false; if (StringUtils.EqualsIgnoreCase(testType, TypeChannelName)) { var channelName = await databaseManager.ChannelRepository.GetChannelNameAsync(pageInfo.SiteId, contextInfo.ChannelId); isSuccess = TestTypeValue(testOperate, testValue, channelName); } else if (StringUtils.EqualsIgnoreCase(testType, TypeChannelIndex)) { var channelIndex = await databaseManager.ChannelRepository.GetIndexNameAsync(pageInfo.SiteId, contextInfo.ChannelId); isSuccess = TestTypeValue(testOperate, testValue, channelIndex); } else if (StringUtils.EqualsIgnoreCase(testType, TypeTemplateName)) { isSuccess = TestTypeValue(testOperate, testValue, pageInfo.Template.TemplateName); } else if (StringUtils.EqualsIgnoreCase(testType, TypTemplateType)) { isSuccess = TestTypeValue(testOperate, testValue, pageInfo.Template.TemplateType.GetValue()); } else if (StringUtils.EqualsIgnoreCase(testType, TypeTopLevel)) { var topLevel = await databaseManager.ChannelRepository.GetTopLevelAsync(pageInfo.SiteId, contextInfo.ChannelId); isSuccess = IsNumber(topLevel, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeUpChannel)) { isSuccess = await TestTypeUpChannelAsync(parseManager, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeUpChannelOrSelf)) { isSuccess = await TestTypeUpChannelOrSelfAsync(parseManager, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeSelfChannel)) { isSuccess = pageInfo.PageChannelId == contextInfo.ChannelId; } else if (StringUtils.EqualsIgnoreCase(testType, TypeGroupChannel)) { var channel = await databaseManager.ChannelRepository.GetAsync(contextInfo.ChannelId); isSuccess = TestTypeValues(testOperate, testValue, channel.GroupNames); } else if (StringUtils.EqualsIgnoreCase(testType, TypeGroupContent)) { if (contextInfo.ContextType == ParseType.Content) { var content = await parseManager.GetContentAsync(); if (content != null) { var groupContents = content.GroupNames; isSuccess = TestTypeValues(testOperate, testValue, groupContents); } } } else if (StringUtils.EqualsIgnoreCase(testType, TypeAddDate)) { var addDate = await GetAddDateByContextAsync(parseManager); isSuccess = IsDateTime(addDate, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeLastModifiedDate)) { var lastModifiedDate = await GetLastModifiedDateGetAsync(parseManager); isSuccess = IsDateTime(lastModifiedDate, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeItemIndex)) { var itemIndex = StlParserUtility.GetItemIndex(contextInfo); isSuccess = IsNumber(itemIndex, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeOddItem)) { var itemIndex = StlParserUtility.GetItemIndex(contextInfo); isSuccess = itemIndex % 2 == 1; } else { isSuccess = await TestTypeDefaultAsync(parseManager, testType, testOperate, testValue); } var parsedContent = isSuccess ? yes : no; if (string.IsNullOrEmpty(parsedContent)) { return(string.Empty); } var innerBuilder = new StringBuilder(parsedContent); await parseManager.ParseInnerContentAsync(innerBuilder); parsedContent = innerBuilder.ToString(); return(parsedContent); }
public static string Parse(PageInfo pageInfo, ContextInfo contextInfo) { var isAllSites = false; var siteName = string.Empty; var siteDir = string.Empty; var siteIds = string.Empty; var channelIndex = string.Empty; var channelName = string.Empty; var channelIds = string.Empty; var type = ContentAttribute.Title; var word = string.Empty; var dateAttribute = ContentAttribute.AddDate; var dateFrom = string.Empty; var dateTo = string.Empty; var since = string.Empty; var pageNum = 0; var isHighlight = false; foreach (var name in contextInfo.Attributes.AllKeys) { var value = contextInfo.Attributes[name]; if (StringUtils.EqualsIgnoreCase(name, IsAllSites)) { isAllSites = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, SiteName)) { siteName = value; } else if (StringUtils.EqualsIgnoreCase(name, SiteDir)) { siteDir = value; } else if (StringUtils.EqualsIgnoreCase(name, SiteIds)) { siteIds = value; } else if (StringUtils.EqualsIgnoreCase(name, ChannelIndex)) { channelIndex = value; } else if (StringUtils.EqualsIgnoreCase(name, ChannelName)) { channelName = value; } else if (StringUtils.EqualsIgnoreCase(name, ChannelIds)) { channelIds = value; } else if (StringUtils.EqualsIgnoreCase(name, Type)) { type = value; } else if (StringUtils.EqualsIgnoreCase(name, Word)) { word = value; } else if (StringUtils.EqualsIgnoreCase(name, DateAttribute)) { dateAttribute = value; } else if (StringUtils.EqualsIgnoreCase(name, DateFrom)) { dateFrom = value; } else if (StringUtils.EqualsIgnoreCase(name, DateTo)) { dateTo = value; } else if (StringUtils.EqualsIgnoreCase(name, Since)) { since = value; } else if (StringUtils.EqualsIgnoreCase(name, PageNum)) { pageNum = TranslateUtils.ToInt(value, 0); } else if (StringUtils.EqualsIgnoreCase(name, IsHighlight)) { isHighlight = TranslateUtils.ToBool(value); } } string loading; string yes; string no; StlParserUtility.GetLoadingYesNo(contextInfo.InnerHtml, out loading, out yes, out no); if (string.IsNullOrEmpty(loading)) { loading = TemplateManager.GetContentByFilePath(SiteFilesAssets.Search.LoadingTemplatePath); } if (string.IsNullOrEmpty(yes)) { yes = TemplateManager.GetContentByFilePath(SiteFilesAssets.Search.YesTemplatePath); } if (string.IsNullOrEmpty(no)) { no = TemplateManager.GetContentByFilePath(SiteFilesAssets.Search.NoTemplatePath); } pageInfo.AddPageBodyCodeIfNotExists(PageInfo.Const.Jquery); var ajaxDivId = StlParserUtility.GetAjaxDivId(pageInfo.UniqueId); var apiUrl = ApiRouteActionsSearch.GetUrl(pageInfo.ApiUrl); var apiParameters = ApiRouteActionsSearch.GetParameters(isAllSites, siteName, siteDir, siteIds, channelIndex, channelName, channelIds, type, word, dateAttribute, dateFrom, dateTo, since, pageNum, isHighlight, pageInfo.SiteId, ajaxDivId, yes); var builder = new StringBuilder(); builder.Append($@" <div id=""{ajaxDivId}""> <div class=""stl_loading"">{loading}</div> <div class=""stl_yes"" style=""display:none""></div> <div class=""stl_no"" style=""display:none"">{no}</div> </div> "); builder.Append($@" <script type=""text/javascript"" language=""javascript""> jQuery(document).ready(function(){{ var url = '{apiUrl}'; var parameters = {apiParameters}; var queryString = document.location.search; if (queryString && queryString.length > 1) {{ queryString = queryString.substring(1); var arr = queryString.split('&'); for(var i=0; i < arr.length; i++) {{ var item = arr[i]; var arr2 = item.split('='); if (arr2 && arr2.length == 2) {{ var key = (arr2[0] || '').toLowerCase(); if (key) {{ parameters[key] = decodeURIComponent(arr2[1]); }} }} }} if (!parameters['page']) {{ parameters['page'] = 1; }} jQuery.support.cors = true; jQuery.ajax({{ url: url, type: 'POST', contentType: 'application/json', data: JSON.stringify(parameters), dataType: 'json', success: function(res) {{ jQuery(""#{ajaxDivId} .stl_loading"").hide(); jQuery(""#{ajaxDivId} .stl_yes"").show(); jQuery(""#{ajaxDivId} .stl_no"").hide(); jQuery(""#{ajaxDivId} .stl_yes"").html(res); }}, error: function(e) {{ jQuery(""#{ajaxDivId} .stl_loading"").hide(); jQuery(""#{ajaxDivId} .stl_yes"").hide(); jQuery(""#{ajaxDivId} .stl_no"").show(); }} }}); }} else {{ jQuery(""#{ajaxDivId} .stl_loading"").hide(); jQuery(""#{ajaxDivId} .stl_yes"").hide(); jQuery(""#{ajaxDivId} .stl_no"").hide(); }} }}); function stlRedirect{ajaxDivId}(page) {{ var queryString = document.location.search; if (queryString && queryString.length > 1) {{ queryString = queryString.substring(1); var parameters = ''; var arr = queryString.split('&'); for(var i=0; i < arr.length; i++) {{ var item = arr[i]; var arr2 = item.split('='); if (arr2 && arr2.length == 2) {{ if (arr2[0] !== 'page') {{ parameters += item + '&'; }} }} }} parameters += 'page=' + page; location.href = location.protocol + '//' + location.host + location.pathname + location.hash + '?' + parameters; }} }} function stlJump{ajaxDivId}(selObj) {{ stlRedirect{ajaxDivId}(selObj.options[selObj.selectedIndex].value); }} </script> "); return(builder.ToString()); }
private static string ParseImpl(PageInfo pageInfo, ContextInfo contextInfo, string testType, string testOperate, string testValue, string onBeforeSend, string onSuccess, string onComplete, string onError) { string loading; string yes; string no; StlParserUtility.GetLoadingYesNo(contextInfo.InnerHtml, out loading, out yes, out no); if (StringUtils.EqualsIgnoreCase(testType, TypeIsUserLoggin) || StringUtils.EqualsIgnoreCase(testType, TypeIsAdministratorLoggin) || StringUtils.EqualsIgnoreCase(testType, TypeIsUserOrAdministratorLoggin)) { return(ParseDynamic(pageInfo, contextInfo, testType, testValue, testOperate, loading, yes, no, onBeforeSend, onSuccess, onComplete, onError)); } var isSuccess = false; if (StringUtils.EqualsIgnoreCase(testType, TypeChannelName)) { var channelName = ChannelManager.GetChannelInfo(pageInfo.SiteId, contextInfo.ChannelId).ChannelName; isSuccess = TestTypeValue(testOperate, testValue, channelName); } else if (StringUtils.EqualsIgnoreCase(testType, TypeChannelIndex)) { var channelIndex = ChannelManager.GetChannelInfo(pageInfo.SiteId, contextInfo.ChannelId).IndexName; isSuccess = TestTypeValue(testOperate, testValue, channelIndex); } else if (StringUtils.EqualsIgnoreCase(testType, TypeTemplateName)) { isSuccess = TestTypeValue(testOperate, testValue, pageInfo.TemplateInfo.TemplateName); } else if (StringUtils.EqualsIgnoreCase(testType, TypTemplateType)) { isSuccess = TestTypeValue(testOperate, testValue, pageInfo.TemplateInfo.TemplateType.Value); } else if (StringUtils.EqualsIgnoreCase(testType, TypeTopLevel)) { var topLevel = ChannelManager.GetTopLevel(pageInfo.SiteId, contextInfo.ChannelId); isSuccess = IsNumber(topLevel, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeUpChannel)) { isSuccess = TestTypeUpChannel(pageInfo, contextInfo, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeUpChannelOrSelf)) { isSuccess = TestTypeUpChannelOrSelf(pageInfo, contextInfo, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeSelfChannel)) { isSuccess = pageInfo.PageChannelId == contextInfo.ChannelId; } else if (StringUtils.EqualsIgnoreCase(testType, TypeGroupChannel)) { var groupChannels = TranslateUtils.StringCollectionToStringList( ChannelManager.GetChannelInfo(pageInfo.SiteId, contextInfo.ChannelId).GroupNameCollection); isSuccess = TestTypeValues(testOperate, testValue, groupChannels); } else if (StringUtils.EqualsIgnoreCase(testType, TypeGroupContent)) { if (contextInfo.ContextType == EContextType.Content) { var tableName = ChannelManager.GetTableName(pageInfo.SiteInfo, contextInfo.ChannelId); //var groupContents = TranslateUtils.StringCollectionToStringList(DataProvider.ContentDao.GetValue(tableName, contextInfo.ContentId, ContentAttribute.ContentGroupNameCollection)); var groupContents = TranslateUtils.StringCollectionToStringList(StlContentCache.GetValue(tableName, contextInfo.ContentId, ContentAttribute.GroupNameCollection)); isSuccess = TestTypeValues(testOperate, testValue, groupContents); } } else if (StringUtils.EqualsIgnoreCase(testType, TypeAddDate)) { var addDate = GetAddDateByContext(pageInfo, contextInfo); isSuccess = IsDateTime(addDate, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeLastEditDate)) { var lastEditDate = GetLastEditDateByContext(contextInfo); isSuccess = IsDateTime(lastEditDate, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeItemIndex)) { var itemIndex = StlParserUtility.GetItemIndex(contextInfo); isSuccess = IsNumber(itemIndex, testOperate, testValue); } else if (StringUtils.EqualsIgnoreCase(testType, TypeOddItem)) { var itemIndex = StlParserUtility.GetItemIndex(contextInfo); isSuccess = itemIndex % 2 == 1; } else { isSuccess = TestTypeDefault(pageInfo, contextInfo, testType, testOperate, testValue); } var parsedContent = isSuccess ? yes : no; if (string.IsNullOrEmpty(parsedContent)) { return(string.Empty); } var innerBuilder = new StringBuilder(parsedContent); StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo); parsedContent = innerBuilder.ToString(); return(parsedContent); }
public static async Task <object> ParseAsync(IParseManager parseManager) { var pageInfo = parseManager.PageInfo; var contextInfo = parseManager.ContextInfo; var isAllSites = false; var siteName = string.Empty; var siteDir = string.Empty; var siteIds = string.Empty; var channelIndex = string.Empty; var channelName = string.Empty; var channelIds = string.Empty; var type = nameof(Content.Title); var word = string.Empty; var dateAttribute = nameof(Content.AddDate); var dateFrom = string.Empty; var dateTo = string.Empty; var since = string.Empty; var pageNum = 0; var isHighlight = false; foreach (var name in contextInfo.Attributes.AllKeys) { var value = contextInfo.Attributes[name]; if (StringUtils.EqualsIgnoreCase(name, IsAllSites)) { isAllSites = TranslateUtils.ToBool(value); } else if (StringUtils.EqualsIgnoreCase(name, SiteName)) { siteName = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, SiteDir)) { siteDir = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, SiteIds)) { siteIds = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, ChannelIndex) || StringUtils.EqualsIgnoreCase(name, Index)) { channelIndex = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, ChannelName)) { channelName = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, ChannelIds)) { channelIds = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, Type)) { type = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, Word)) { word = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, DateAttribute)) { dateAttribute = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, DateFrom)) { dateFrom = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, DateTo)) { dateTo = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, Since)) { since = await parseManager.ReplaceStlEntitiesForAttributeValueAsync(value); } else if (StringUtils.EqualsIgnoreCase(name, PageNum)) { pageNum = TranslateUtils.ToInt(value); } else if (StringUtils.EqualsIgnoreCase(name, IsHighlight)) { isHighlight = TranslateUtils.ToBool(value); } } StlParserUtility.GetLoadingYesNo(contextInfo.InnerHtml, out var loading, out var yes, out var no); if (string.IsNullOrEmpty(loading)) { var filePath = parseManager.PathManager.GetSiteFilesPath(Resources.Search.LoadingTemplatePath); loading = parseManager.PathManager.GetContentByFilePath(filePath); } if (string.IsNullOrEmpty(yes)) { var filePath = parseManager.PathManager.GetSiteFilesPath(Resources.Search.YesTemplatePath); yes = parseManager.PathManager.GetContentByFilePath(filePath); } if (string.IsNullOrEmpty(no)) { var filePath = parseManager.PathManager.GetSiteFilesPath(Resources.Search.NoTemplatePath); no = parseManager.PathManager.GetContentByFilePath(filePath); } await pageInfo.AddPageHeadCodeIfNotExistsAsync(ParsePage.Const.StlClient); await pageInfo.AddPageHeadCodeIfNotExistsAsync(ParsePage.Const.Jquery); var elementId = StringUtils.GetElementId(); var apiUrl = GetSearchApiUrl(pageInfo.Site, parseManager.PathManager); var apiParameters = GetSearchApiParameters(parseManager.SettingsManager, isAllSites, siteName, siteDir, siteIds, channelIndex, channelName, channelIds, type, word, dateAttribute, dateFrom, dateTo, since, pageNum, isHighlight, pageInfo.SiteId, elementId, yes); var builder = new StringBuilder(); builder.Append($@" <div id=""{elementId}""> <div class=""stl_loading"">{loading}</div> <div class=""stl_yes"" style=""display:none""></div> <div class=""stl_no"" style=""display:none"">{no}</div> </div> "); builder.Append($@" <script type=""text/javascript"" language=""javascript""> jQuery(document).ready(function(){{ var url = '{apiUrl}'; var parameters = {apiParameters}; var queryString = document.location.search; if (queryString && queryString.length > 1) {{ queryString = queryString.substring(1); var arr = queryString.split('&'); for(var i=0; i < arr.length; i++) {{ var item = arr[i]; var arr2 = item.split('='); if (arr2 && arr2.length == 2) {{ var key = (arr2[0] || '').toLowerCase(); if (key) {{ var value = decodeURIComponent(arr2[1]) || ''; value = value.replace(/\+/g, ' '); parameters[key] = value; }} }} }} if (!parameters['page']) {{ parameters['page'] = 1; }} jQuery.support.cors = true; jQuery.ajax({{ url: url, type: 'POST', contentType: 'application/json', data: JSON.stringify(parameters), dataType: 'json', success: function(res) {{ jQuery(""#{elementId} .stl_loading"").hide(); jQuery(""#{elementId} .stl_yes"").show(); jQuery(""#{elementId} .stl_no"").hide(); jQuery(""#{elementId} .stl_yes"").html(res.value); }}, error: function(e) {{ jQuery(""#{elementId} .stl_loading"").hide(); jQuery(""#{elementId} .stl_yes"").hide(); jQuery(""#{elementId} .stl_no"").show(); }} }}); }} else {{ jQuery(""#{elementId} .stl_loading"").hide(); jQuery(""#{elementId} .stl_yes"").hide(); jQuery(""#{elementId} .stl_no"").hide(); }} }}); function stlRedirect{elementId}(page) {{ var queryString = document.location.search; if (queryString && queryString.length > 1) {{ queryString = queryString.substring(1); var parameters = ''; var arr = queryString.split('&'); for(var i=0; i < arr.length; i++) {{ var item = arr[i]; var arr2 = item.split('='); if (arr2 && arr2.length == 2) {{ if (arr2[0] !== 'page') {{ parameters += item + '&'; }} }} }} parameters += 'page=' + page; location.href = location.protocol + '//' + location.host + location.pathname + location.hash + '?' + parameters; }} }} </script> "); return(builder.ToString()); }