2017-10-26 23:10:54 -07:00
// Copyright 2017 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package repo
import (
"path"
"strings"
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/search"
"code.gitea.io/gitea/modules/setting"
)
const tplSearch base . TplName = "repo/search"
// Search render repository search page
func Search ( ctx * context . Context ) {
if ! setting . Indexer . RepoIndexerEnabled {
ctx . Redirect ( ctx . Repo . RepoLink , 302 )
return
}
keyword := strings . TrimSpace ( ctx . Query ( "q" ) )
page := ctx . QueryInt ( "page" )
if page <= 0 {
page = 1
}
2018-03-16 22:04:33 +08:00
total , searchResults , err := search . PerformSearch ( [ ] int64 { ctx . Repo . Repository . ID } ,
keyword , page , setting . UI . RepoSearchPagingNum )
2017-10-26 23:10:54 -07:00
if err != nil {
2018-01-10 22:34:17 +01:00
ctx . ServerError ( "SearchResults" , err )
2017-10-26 23:10:54 -07:00
return
}
ctx . Data [ "Keyword" ] = keyword
ctx . Data [ "SourcePath" ] = setting . AppSubURL + "/" +
2017-11-27 02:58:54 +02:00
path . Join ( ctx . Repo . Repository . Owner . Name , ctx . Repo . Repository . Name , "src" , "branch" , ctx . Repo . Repository . DefaultBranch )
2017-10-26 23:10:54 -07:00
ctx . Data [ "SearchResults" ] = searchResults
ctx . Data [ "RequireHighlightJS" ] = true
ctx . Data [ "PageIsViewCode" ] = true
2019-04-20 06:15:19 +02:00
pager := context . NewPagination ( total , setting . UI . RepoSearchPagingNum , page , 5 )
pager . SetDefaultParams ( ctx )
ctx . Data [ "Page" ] = pager
2017-10-26 23:10:54 -07:00
ctx . HTML ( 200 , tplSearch )
}