public void Save(int id, string focusKeyword, PageAnalysis pageAnalysis) { if (_nodeReportRepository.DatabaseExists()) { var serializer = new JavaScriptSerializer(); var json = serializer.Serialize(pageAnalysis.Score); var nodeReport = _nodeReportRepository.GetById(id); if (nodeReport == null) { nodeReport = new NodeReport { Id = id, FocusKeyword = focusKeyword, Report = json }; _nodeReportRepository.Insert(nodeReport); } else { nodeReport.FocusKeyword = focusKeyword; nodeReport.Report = json; _nodeReportRepository.Update(nodeReport); } } }
public PageAnalysis CreatePageAnalysis(IPublishedContent node, string focusKeyword = null) { if (node == null) { throw new ArgumentNullException(nameof(node)); } var pageAnalysis = new PageAnalysis(); try { var htmlString = _templateHelper.GetNodeHtml(node); pageAnalysis.AbsoluteUrl = node.UrlAbsolute(); pageAnalysis.FocusKeyword = focusKeyword; pageAnalysis.Size = _byteSizeHelper.GetByteSize(htmlString); SetAnalyzerResults(pageAnalysis, htmlString); } catch (WebException ex) { pageAnalysis.Status = ((HttpWebResponse)ex.Response).StatusCode; } pageAnalysis.Score = _scoreService.GetScore(pageAnalysis); return(pageAnalysis); }
public void Save(int id, PageAnalysis pageAnalysis) { if (id < 0) { throw new ArgumentException(nameof(id)); } if (pageAnalysis == null) { throw new ArgumentNullException(nameof(pageAnalysis)); } if (_nodeReportRepository.TableExists) { var scoreReport = _pageScoreSerializer.Serialize(pageAnalysis.Score); var nodeReport = new NodeReport { Id = id, FocusKeyword = pageAnalysis.FocusKeyword, Report = scoreReport, CreatedOn = DateTime.Now, UpdatedOn = DateTime.Now }; Save(nodeReport); } }
public PageScore GetScore(PageAnalysis pageAnalysis) { if (pageAnalysis == null) { throw new ArgumentNullException(nameof(pageAnalysis)); } var analyzers = pageAnalysis.SummaryResults.SelectMany(x => x.Analysis.Results); return(CalculatePageScore(analyzers)); }
public void GetScore_OnExecuteWith5Hints_SetsOverallScoreTo0() { var scoreService = new ScoreService(); var pageAnalysis = new PageAnalysis() { SummaryResults = { new SummaryResult() { Analysis = new Analysis() { Results = new List <AnalyzeResult>() { new AnalyzeResult() { ResultRules = new List <ResultRule>() { new ResultRule() { Type = ResultType.Hint }, new ResultRule() { Type = ResultType.Hint }, new ResultRule() { Type = ResultType.Hint }, new ResultRule() { Type = ResultType.Hint }, new ResultRule() { Type = ResultType.Hint }, } } } } } } }; var result = scoreService.GetScore(pageAnalysis); Assert.IsNotNull(result); Assert.AreEqual(0, result.ErrorCount); Assert.AreEqual(0, result.WarningCount); Assert.AreEqual(5, result.HintCount); Assert.AreEqual(0, result.SuccessCount); Assert.AreEqual(0, result.OverallScore); }
public void Save(int id, PageAnalysis pageAnalysis) { var scoreReport = _javaScriptSerializer.Serialize(pageAnalysis.Score); var nodeReport = new NodeReport { Id = id, FocusKeyword = pageAnalysis.FocusKeyword, Report = scoreReport, CreatedOn = DateTime.Now, UpdatedOn = DateTime.Now }; CreateOrUpdateNodeReport(nodeReport); }
/// <summary> /// Gets the score for a category. /// </summary> /// <param name="pageAnalysis">The page analysis.</param> /// <returns></returns> public PageScore GetScore(PageAnalysis pageAnalysis) { var pageScore = new PageScore(); var totalScore = 0; foreach (var analyzerResult in pageAnalysis.AnalyzerResults) { totalScore += CalculateScore(analyzerResult.Analysis, pageScore); } var numberOfAnalyzers = pageAnalysis.AnalyzerResults.Sum(x => x.Analysis.Results.Count); pageScore.OverallScore = totalScore / numberOfAnalyzers; return(pageScore); }
private void SetAnalyzerResults(PageAnalysis pageAnalysis, HtmlResult html) { var summaries = _configurationHelper.GetSummaries(); // Instantiate the types and retrieve te results foreach (var summary in summaries) { summary.FocusKeyword = pageAnalysis.FocusKeyword; summary.HtmlResult = html; summary.Url = pageAnalysis.Url; var analyzerResult = new AnalyzerResult { Alias = summary.Alias, Analysis = summary.GetAnalysis() }; pageAnalysis.AnalyzerResults.Add(analyzerResult); } }
private void SetAnalyzerResults(PageAnalysis pageAnalysis, string html) { var htmlNode = CreateHtmlNode(html); // Instantiate the types and retrieve te results foreach (var summary in _summaries) { summary.FocusKeyword = pageAnalysis.FocusKeyword; summary.Document = htmlNode; summary.Url = pageAnalysis.AbsoluteUrl; var analyzerResult = new SummaryResult { Alias = summary.Alias, Analysis = summary.GetAnalysis() }; pageAnalysis.SummaryResults.Add(analyzerResult); } }
private void SetAnalyzerResults(PageAnalysis pageAnalysis, HtmlResult html) { // Get all types marked with the Summary attribute var summaryDefinitions = _reflectionService.GetSummaryDefinitions(); // Instantiate the types and retrieve te results foreach (var summaryDefinition in summaryDefinitions) { var summary = summaryDefinition.Type.GetInstance <BaseSummary>(); summary.FocusKeyword = pageAnalysis.FocusKeyword; summary.HtmlResult = html; summary.Url = pageAnalysis.Url; var analyzerResult = new AnalyzerResult { Alias = summaryDefinition.Summary.Alias, Analysis = summary.GetAnalysis() }; pageAnalysis.AnalyzerResults.Add(analyzerResult); } }
public PageAnalysis AnalyzeWebPage(string url, string focusKeyword) { var webpage = new PageAnalysis { Url = url, }; try { webpage.HtmlResult = GetHtml(url); var keywordAnalyzer = new KeywordSummary(webpage.HtmlResult); keywordAnalyzer.FocusKeyword = focusKeyword; webpage.AnalyzerResults.Add(new AnalyzerResult { Alias = "keywordanalyzer", Analysis = keywordAnalyzer.GetAnalysis() }); var htmlAnalyzer = new HtmlSummary(webpage.HtmlResult); webpage.AnalyzerResults.Add(new AnalyzerResult { Alias = "htmlanalyzer", Analysis = htmlAnalyzer.GetAnalysis() }); var performanceAnalyzer = new PerformanceSummary(webpage.HtmlResult); webpage.AnalyzerResults.Add(new AnalyzerResult { Alias = "performanceanalyzer", Analysis = performanceAnalyzer.GetAnalysis() }); } catch (WebException ex) { webpage.Status = ((HttpWebResponse)ex.Response).StatusCode; } return(webpage); }
public PageScore GetScore(PageAnalysis pageAnalysis) { var pageScore = new PageScore(); var totalScore = 0; foreach (var analyzerResult in pageAnalysis.AnalyzerResults) { var analysis = analyzerResult.Analysis; foreach (var result in analysis.Results) { pageScore.ErrorCount += result.ErrorCount; pageScore.WarningCount += result.WarningCount; pageScore.HintCount += result.HintCount; pageScore.SuccessCount += result.SuccessCount; result.Score = GetResultScore(result); totalScore += result.Score; } } pageScore.OverallScore = totalScore / pageAnalysis.AnalyzerResults.Sum(x => x.Analysis.Results.Count); return(pageScore); }
public PageAnalysis CreatePageAnalysis(IPublishedContent node, string focusKeyword) { var pageAnalysis = new PageAnalysis(); try { var htmlString = _htmlHelper.GetTemplateHtml(node); var htmlResult = _htmlHelper.GetHtmlResult(htmlString); pageAnalysis.Url = node.UrlAbsolute(); pageAnalysis.FocusKeyword = focusKeyword; pageAnalysis.Size = _byteSizeHelper.GetByteSize(htmlString); SetAnalyzerResults(pageAnalysis, htmlResult); } catch (WebException ex) { pageAnalysis.Status = ((HttpWebResponse)ex.Response).StatusCode; } pageAnalysis.Score = _scoreService.GetScore(pageAnalysis); return(pageAnalysis); }
// 插件被激活时初始化工作 public override void Startup(IService service) { PluginId = Id; service.AddContentModel(ContentDao.TableName, ContentDao.Columns) // 插件对应的内容模型表 .AddDatabaseTable(ChannelDao.TableName, ChannelDao.Columns) // 插件需要用到的其他表结构 .AddDatabaseTable(LogDao.TableName, LogDao.Columns) .AddDatabaseTable(PermissionsDao.TableName, PermissionsDao.Columns) .AddDatabaseTable(RemarkDao.TableName, RemarkDao.Columns) .AddDatabaseTable(ReplyDao.TableName, ReplyDao.Columns) .AddDatabaseTable(TypeDao.TableName, TypeDao.Columns) .AddSiteMenu(siteId => new Menu { Text = "互动交流", IconClass = "ion-chatbox-working", Menus = new List <Menu> { new Menu { Text = "待受理办件", Href = PageMain.GetRedirectUrl(siteId, PageListAccept.GetRedirectUrl(siteId, 0)) }, new Menu { Text = "待办理办件", Href = PageMain.GetRedirectUrl(siteId, PageListReply.GetRedirectUrl(siteId, 0)) }, new Menu { Text = "待审核办件", Href = PageMain.GetRedirectUrl(siteId, PageListCheck.GetRedirectUrl(siteId, 0)) }, new Menu { Text = "所有办件", Href = PageMain.GetRedirectUrl(siteId, PageListAll.GetRedirectUrl(siteId, 0)) }, new Menu { Text = "新增办件", Href = PageMain.GetRedirectUrl(siteId, $"@/cms/pageContentAdd.aspx?siteId={siteId}") }, new Menu { Text = "互动交流设置", Href = PageInit.GetRedirectUrl(siteId, PageConfiguration.GetRedirectUrl(siteId)) }, new Menu { Text = "前台页面标签", Href = PageInit.GetRedirectUrl(siteId, PageFormStyle.GetRedirectUrl(siteId)) }, new Menu { Text = "数据统计分析", Href = PageInit.GetRedirectUrl(siteId, PageAnalysis.GetRedirectUrl(siteId)) } } }); // 插件站点菜单 service.ContentFormSubmit += Service_ContentFormSubmited; // 页面提交处理函数 service.ContentFormLoad += Service_ContentFormLoad; // 页面加载处理函数 }
public PageAnalysis AnalyzeWebPage(int id, string focusKeyword = null) { var pageAnalysis = new PageAnalysis(); try { var node = _umbracoHelper.TypedContent(id); if (node.TemplateId == 0) { return(null); } var htmlString = _contentHelper.GetNodeHtml(node); if (string.IsNullOrEmpty(focusKeyword)) { focusKeyword = GetFocusKeyword(node); } _htmlParser.LoadHtml(htmlString); pageAnalysis.Url = node.UrlAbsolute(); pageAnalysis.FocusKeyword = focusKeyword; pageAnalysis.Size = Encoding.ASCII.GetByteCount(htmlString); var html = new HtmlResult { Html = htmlString, Document = _htmlParser.DocumentNode }; // Get all types marked with the Summary attribute var reflectionService = new ReflectionService(); var types = reflectionService.GetSummaries(); // Instantiate the types and retrieve te results foreach (var type in types) { var instance = Activator.CreateInstance(type.Type); var summary = (BaseSummary)instance; summary.FocusKeyword = focusKeyword; summary.HtmlResult = html; summary.Url = pageAnalysis.Url; pageAnalysis.AnalyzerResults.Add(new AnalyzerResult { Alias = type.Summary.Alias, Analysis = summary.GetAnalysis() }); } } catch (WebException ex) { pageAnalysis.Status = ((HttpWebResponse)ex.Response).StatusCode; } pageAnalysis.Score = _scoreService.GetScore(pageAnalysis); _nodeReportService.Save(id, focusKeyword, pageAnalysis); return(pageAnalysis); }
private void CreateCachedAnalysisItem(int pageId, PageAnalysis analysis) { _analysisCacheService.Save(pageId, analysis); }
public override void Startup(IService service) { ContentRepository = new ContentRepository(); CategoryClassRepository = new CategoryClassRepository(); CategoryRepository = new CategoryRepository(); DepartmentRepository = new DepartmentRepository(); IdentifierRuleRepository = new IdentifierRuleRepository(); IdentifierSeqRepository = new IdentifierSeqRepository(); service .AddContentModel(ContentRepository.TableName, ContentRepository.TableColumns, ContentRepository.InputStyles) .AddDatabaseTable(CategoryClassRepository.TableName, CategoryClassRepository.TableColumns) .AddDatabaseTable(CategoryRepository.TableName, CategoryRepository.TableColumns) .AddDatabaseTable(DepartmentRepository.TableName, DepartmentRepository.TableColumns) .AddDatabaseTable(IdentifierRuleRepository.TableName, IdentifierRuleRepository.TableColumns) .AddDatabaseTable(IdentifierSeqRepository.TableName, IdentifierSeqRepository.TableColumns) .AddSiteMenu(siteId => new Menu { Text = "主动信息公开", IconClass = "ion-ios-book", Menus = new List <Menu> { new Menu { Text = "信息采集", Href = PageMain.GetRedirectUrl(siteId, Context.UtilsApi.GetAdminUrl($"cms/pageContentAdd.aspx?siteId={siteId}")) }, new Menu { Text = "信息管理", Href = PageMain.GetRedirectUrl(siteId, Context.UtilsApi.GetAdminUrl($"cms/contents.cshtml?siteId={siteId}")) }, new Menu { Text = "信息审核", Href = PageMain.GetRedirectUrl(siteId, Context.UtilsApi.GetAdminUrl($"cms/pageContentSearch.aspx?isCheckOnly=true&siteId={siteId}")) }, new Menu { Text = "分类法管理", Href = PageInit.GetRedirectUrl(siteId, PageCategoryMain.GetRedirectUrl(siteId)) }, new Menu { Text = "索引号生成规则", Href = PageInit.GetRedirectUrl(siteId, PageIdentifierRule.GetRedirectUrl(siteId)) }, new Menu { Text = "重新生成索引号", Href = PageInit.GetRedirectUrl(siteId, PageIdentifierCreate.GetRedirectUrl(siteId)) }, new Menu { Text = "部门设置", Href = "pages/departments.html" }, new Menu { Text = "信息公开设置", Href = PageInit.GetRedirectUrl(siteId, PageSettings.GetRedirectUrl(siteId)) }, new Menu { Text = "数据统计分析", Href = PageInit.GetRedirectUrl(siteId, PageAnalysis.GetRedirectUrl(siteId)) } } }); service.ContentFormSubmit += Service_ContentFormSubmited; // 页面提交处理函数 service.ContentFormLoad += Service_ContentFormLoad; // // 页面加载处理函数 }
private void SavePageAnalysis(int pageId, PageAnalysis analysis) { _pageAnalysisService.Save(pageId, analysis); }