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) { -

We couldn't find any code matching '@query'

+

We couldn't find any @{if(pullRequest) "pull requests" else "issues"} matching '@query'

} else { -

We've found @issues.size @helpers.plural(issues.size, "issue")

+

We've found @issues.size @helpers.plural(issues.size, if(pullRequest) "pull request" else "issue")

} } @issues.drop((page - 1) * RepositorySearchService.IssueLimit).take(RepositorySearchService.IssueLimit).map { issue => @@ -31,6 +32,6 @@ } @gitbucket.core.helper.html.paginator(page, issues.size, RepositorySearchService.IssueLimit, 10, - s"${helpers.url(repository)}/search?q=${helpers.urlEncode(query)}&type=issue") + s"${helpers.url(repository)}/search?q=${helpers.urlEncode(query)}&type=${if(pullRequest) "pulls" else "issues"}") } -} \ No newline at end of file +} diff --git a/src/main/twirl/gitbucket/core/search/menu.scala.html b/src/main/twirl/gitbucket/core/search/menu.scala.html index d3b1d93..f576b54 100644 --- a/src/main/twirl/gitbucket/core/search/menu.scala.html +++ b/src/main/twirl/gitbucket/core/search/menu.scala.html @@ -6,7 +6,10 @@ @body -} \ No newline at end of file +} diff --git a/src/main/twirl/gitbucket/core/search/wiki.scala.html b/src/main/twirl/gitbucket/core/search/wiki.scala.html index 234784d..56228fd 100644 --- a/src/main/twirl/gitbucket/core/search/wiki.scala.html +++ b/src/main/twirl/gitbucket/core/search/wiki.scala.html @@ -8,7 +8,7 @@ @gitbucket.core.search.html.menu("wiki", query, repository){ @if(query.nonEmpty) { @if(wikis.isEmpty) { -

We could not find any code matching '@query'

+

We could not find any pages matching '@query'

} else {

We've found @wikis.size @helpers.plural(wikis.size, "page")

} @@ -23,4 +23,4 @@ @gitbucket.core.helper.html.paginator(page, wikis.size, RepositorySearchService.CodeLimit, 10, s"${helpers.url(repository)}/search?q=${helpers.urlEncode(query)}&type=wiki") } -} \ No newline at end of file +}