Exemplo n.º 1
0
        public async Task <IActionResult> OnGetAsync(string keyword)
        {
            if (!await _documentAppService.FullSearchEnabledAsync())
            {
                return(RedirectToPage("Index"));
            }

            KeyWord = keyword;

            Project = await _projectAppService.GetAsync(ProjectName);

            var output = await _projectAppService.GetVersionsAsync(Project.ShortName);

            var versions = output.Items.ToList();

            if (versions.Any() && string.Equals(Version, DocsAppConsts.Latest, StringComparison.OrdinalIgnoreCase))
            {
                Version = versions.First().Name;
            }

            SearchOutputs = await _documentAppService.SearchAsync(new DocumentSearchInput
            {
                ProjectId    = Project.Id,
                Context      = KeyWord,
                LanguageCode = LanguageCode,
                Version      = Version
            });

            return(Page());
        }
Exemplo n.º 2
0
        public virtual async Task <IActionResult> OnGetAsync(string keyword)
        {
            if (!await _documentAppService.FullSearchEnabledAsync())
            {
                return(RedirectToPage("Index"));
            }

            KeyWord = keyword;

            Project = await _projectAppService.GetAsync(ProjectName);

            var output = await _projectAppService.GetVersionsAsync(Project.ShortName);

            var versions = output.Items.ToList();

            if (versions.Any() &&
                string.Equals(Version, DocsAppConsts.Latest, StringComparison.OrdinalIgnoreCase))
            {
                if ((!Project.ExtraProperties.ContainsKey("GithubVersionProviderSource") ||
                     (GithubVersionProviderSource)(long)Project.ExtraProperties["GithubVersionProviderSource"] == GithubVersionProviderSource.Releases) &&
                    !string.IsNullOrEmpty(Project.LatestVersionBranchName))
                {
                    Version = Project.LatestVersionBranchName;
                }
                else
                {
                    Version = (versions.FirstOrDefault(v => !SemanticVersionHelper.IsPreRelease(v.Name)) ?? versions.First()).Name;
                }
            }

            SearchOutputs = await _documentAppService.SearchAsync(new DocumentSearchInput
            {
                ProjectId    = Project.Id,
                Context      = KeyWord,
                LanguageCode = LanguageCode,
                Version      = Version
            });

            var highlightTag1 = Guid.NewGuid().ToString();
            var highlightTag2 = Guid.NewGuid().ToString();

            foreach (var searchOutput in SearchOutputs)
            {
                for (var i = 0; i < searchOutput.Highlight.Count; i++)
                {
                    searchOutput.Highlight[i] = _encoder
                                                .Encode(searchOutput.Highlight[i].Replace("<highlight>", highlightTag1)
                                                        .Replace("</highlight>", highlightTag2))
                                                .Replace(highlightTag1, "<highlight>").Replace(highlightTag2, "</highlight>");
                }
            }

            return(Page());
        }
Exemplo n.º 3
0
        private async Task <IActionResult> SetPageAsync()
        {
            DocumentsUrlPrefix   = _uiOptions.RoutePrefix;
            ShowProjectsCombobox = _uiOptions.ShowProjectsCombobox;
            FullSearchEnabled    = await _documentAppService.FullSearchEnabledAsync();

            try
            {
                await SetProjectAsync();
            }
            catch (EntityNotFoundException e)
            {
                Logger.LogWarning(e.Message);
                ProjectFound        = false;
                Response.StatusCode = 404;
                return(Page());
            }

            if (ShowProjectsCombobox)
            {
                await SetProjectsAsync();
            }

            await SetVersionAsync();
            await SetLanguageList();

            if (IsDefaultDocument())
            {
                return(RedirectToDefaultDocument());
            }

            if (!CheckLanguage())
            {
                return(RedirectToDefaultLanguage());
            }

            if (IsDocumentCultureDifferentThanCurrent())
            {
                return(ReloadPageWithCulture());
            }

            await SetDocumentAsync();
            await SetNavigationAsync();

            SetLanguageSelectListItems();

            return(Page());
        }