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);
                }
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        /// <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);
            }
        }
Esempio n. 9
0
        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);
        }
Esempio n. 14
0
        // 插件被激活时初始化工作
        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;     // 页面加载处理函数
        }
Esempio n. 15
0
        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);
 }
Esempio n. 17
0
        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;     // // 页面加载处理函数
        }
Esempio n. 18
0
 private void SavePageAnalysis(int pageId, PageAnalysis analysis)
 {
     _pageAnalysisService.Save(pageId, analysis);
 }