diff --git a/src/main/scala/gitbucket/core/controller/IndexController.scala b/src/main/scala/gitbucket/core/controller/IndexController.scala index 7770ccc..e553864 100644 --- a/src/main/scala/gitbucket/core/controller/IndexController.scala +++ b/src/main/scala/gitbucket/core/controller/IndexController.scala @@ -237,9 +237,19 @@ } target.toLowerCase match { - case "issue" => + case "issues" => gitbucket.core.search.html.issues( - if (query.nonEmpty) searchIssues(repository.owner, repository.name, query) else Nil, + if (query.nonEmpty) searchIssues(repository.owner, repository.name, query, false) else Nil, + false, + query, + page, + repository + ) + + case "pulls" => + gitbucket.core.search.html.issues( + if (query.nonEmpty) searchIssues(repository.owner, repository.name, query, true) else Nil, + true, query, page, repository diff --git a/src/main/scala/gitbucket/core/service/IssuesService.scala b/src/main/scala/gitbucket/core/service/IssuesService.scala index 05255c4..816a552 100644 --- a/src/main/scala/gitbucket/core/service/IssuesService.scala +++ b/src/main/scala/gitbucket/core/service/IssuesService.scala @@ -630,7 +630,7 @@ * @param query the keywords separated by whitespace. * @return issues with comment count and matched content of issue or comment */ - def searchIssuesByKeyword(owner: String, repository: String, query: String)( + def searchIssuesByKeyword(owner: String, repository: String, query: String, pullRequest: Boolean)( implicit s: Session ): List[(Issue, Int, String)] = { //import slick.driver.JdbcDriver.likeEncode @@ -638,7 +638,9 @@ // Search Issue val issues = Issues - .filter(_.byRepository(owner, repository)) + .filter { t => + t.byRepository(owner, repository) && t.pullRequest === pullRequest.bind + } .join(IssueOutline) .on { case (t1, t2) => diff --git a/src/main/scala/gitbucket/core/service/RepositorySearchService.scala b/src/main/scala/gitbucket/core/service/RepositorySearchService.scala index 4c53792..683b97b 100644 --- a/src/main/scala/gitbucket/core/service/RepositorySearchService.scala +++ b/src/main/scala/gitbucket/core/service/RepositorySearchService.scala @@ -14,13 +14,15 @@ trait RepositorySearchService { self: IssuesService => import RepositorySearchService._ - def countIssues(owner: String, repository: String, query: String)(implicit session: Session): Int = - searchIssuesByKeyword(owner, repository, query).length + def countIssues(owner: String, repository: String, query: String, pullRequest: Boolean)( + implicit session: Session + ): Int = + searchIssuesByKeyword(owner, repository, query, pullRequest).length - def searchIssues(owner: String, repository: String, query: String)( + def searchIssues(owner: String, repository: String, query: String, pullRequest: Boolean)( implicit session: Session ): List[IssueSearchResult] = - searchIssuesByKeyword(owner, repository, query).map { + searchIssuesByKeyword(owner, repository, query, pullRequest).map { case (issue, commentCount, content) => IssueSearchResult( issue.issueId, diff --git a/src/main/twirl/gitbucket/core/search/issues.scala.html b/src/main/twirl/gitbucket/core/search/issues.scala.html index 817b47a..e87a358 100644 --- a/src/main/twirl/gitbucket/core/search/issues.scala.html +++ b/src/main/twirl/gitbucket/core/search/issues.scala.html @@ -1,16 +1,17 @@ @(issues: List[gitbucket.core.service.RepositorySearchService.IssueSearchResult], + pullRequest: Boolean, query: String, page: Int, repository: gitbucket.core.service.RepositoryService.RepositoryInfo)(implicit context: gitbucket.core.controller.Context) @import gitbucket.core.view.helpers @import gitbucket.core.service.RepositorySearchService @gitbucket.core.html.main("Search Results", Some(repository)){ - @gitbucket.core.search.html.menu("issues", query, repository){ + @gitbucket.core.search.html.menu(if(pullRequest) "pulls" else "issues", query, repository){ @if(query.nonEmpty) { @if(issues.isEmpty) { -