@@ -34,86 +34,91 @@ func Code(ctx *context.Context) {
3434
3535 language := ctx .FormTrim ("l" )
3636 keyword := ctx .FormTrim ("q" )
37+
38+ queryType := ctx .FormTrim ("t" )
39+ isMatch := queryType == "match"
40+
41+ ctx .Data ["Keyword" ] = keyword
42+ ctx .Data ["Language" ] = language
43+ ctx .Data ["queryType" ] = queryType
44+ ctx .Data ["PageIsViewCode" ] = true
45+
46+ if keyword == "" {
47+ ctx .HTML (http .StatusOK , tplExploreCode )
48+ return
49+ }
50+
3751 page := ctx .FormInt ("page" )
3852 if page <= 0 {
3953 page = 1
4054 }
4155
42- queryType := ctx .FormTrim ("t" )
43- isMatch := queryType == "match"
56+ var (
57+ repoIDs []int64
58+ err error
59+ isAdmin bool
60+ )
61+ if ctx .Doer != nil {
62+ isAdmin = ctx .Doer .IsAdmin
63+ }
4464
45- if keyword != "" {
46- var (
47- repoIDs []int64
48- err error
49- isAdmin bool
50- )
51- if ctx .Doer != nil {
52- isAdmin = ctx .Doer .IsAdmin
65+ // guest user or non-admin user
66+ if ctx .Doer == nil || ! isAdmin {
67+ repoIDs , err = repo_model .FindUserCodeAccessibleRepoIDs (ctx , ctx .Doer )
68+ if err != nil {
69+ ctx .ServerError ("FindUserCodeAccessibleRepoIDs" , err )
70+ return
5371 }
72+ }
5473
55- // guest user or non-admin user
56- if ctx .Doer == nil || ! isAdmin {
57- repoIDs , err = repo_model .FindUserCodeAccessibleRepoIDs (ctx .Doer )
58- if err != nil {
74+ var (
75+ total int
76+ searchResults []* code_indexer.Result
77+ searchResultLanguages []* code_indexer.SearchResultLanguages
78+ )
79+
80+ if (len (repoIDs ) > 0 ) || isAdmin {
81+ total , searchResults , searchResultLanguages , err = code_indexer .PerformSearch (ctx , repoIDs , language , keyword , page , setting .UI .RepoSearchPagingNum , isMatch )
82+ if err != nil {
83+ if code_indexer .IsAvailable () {
5984 ctx .ServerError ("SearchResults" , err )
6085 return
6186 }
87+ ctx .Data ["CodeIndexerUnavailable" ] = true
88+ } else {
89+ ctx .Data ["CodeIndexerUnavailable" ] = ! code_indexer .IsAvailable ()
6290 }
6391
64- var (
65- total int
66- searchResults []* code_indexer.Result
67- searchResultLanguages []* code_indexer.SearchResultLanguages
68- )
69-
70- if (len (repoIDs ) > 0 ) || isAdmin {
71- total , searchResults , searchResultLanguages , err = code_indexer .PerformSearch (ctx , repoIDs , language , keyword , page , setting .UI .RepoSearchPagingNum , isMatch )
72- if err != nil {
73- if code_indexer .IsAvailable () {
74- ctx .ServerError ("SearchResults" , err )
75- return
92+ loadRepoIDs := make ([]int64 , 0 , len (searchResults ))
93+ for _ , result := range searchResults {
94+ var find bool
95+ for _ , id := range loadRepoIDs {
96+ if id == result .RepoID {
97+ find = true
98+ break
7699 }
77- ctx .Data ["CodeIndexerUnavailable" ] = true
78- } else {
79- ctx .Data ["CodeIndexerUnavailable" ] = ! code_indexer .IsAvailable ()
80100 }
81-
82- loadRepoIDs := make ([]int64 , 0 , len (searchResults ))
83- for _ , result := range searchResults {
84- var find bool
85- for _ , id := range loadRepoIDs {
86- if id == result .RepoID {
87- find = true
88- break
89- }
90- }
91- if ! find {
92- loadRepoIDs = append (loadRepoIDs , result .RepoID )
93- }
94- }
95-
96- repoMaps , err := repo_model .GetRepositoriesMapByIDs (loadRepoIDs )
97- if err != nil {
98- ctx .ServerError ("SearchResults" , err )
99- return
101+ if ! find {
102+ loadRepoIDs = append (loadRepoIDs , result .RepoID )
100103 }
104+ }
101105
102- ctx .Data ["RepoMaps" ] = repoMaps
106+ repoMaps , err := repo_model .GetRepositoriesMapByIDs (loadRepoIDs )
107+ if err != nil {
108+ ctx .ServerError ("GetRepositoriesMapByIDs" , err )
109+ return
103110 }
104111
105- ctx .Data ["Keyword" ] = keyword
106- ctx .Data ["Language" ] = language
107- ctx .Data ["queryType" ] = queryType
108- ctx .Data ["SearchResults" ] = searchResults
109- ctx .Data ["SearchResultLanguages" ] = searchResultLanguages
110- ctx .Data ["PageIsViewCode" ] = true
111-
112- pager := context .NewPagination (total , setting .UI .RepoSearchPagingNum , page , 5 )
113- pager .SetDefaultParams (ctx )
114- pager .AddParam (ctx , "l" , "Language" )
115- ctx .Data ["Page" ] = pager
112+ ctx .Data ["RepoMaps" ] = repoMaps
116113 }
117114
115+ ctx .Data ["SearchResults" ] = searchResults
116+ ctx .Data ["SearchResultLanguages" ] = searchResultLanguages
117+
118+ pager := context .NewPagination (total , setting .UI .RepoSearchPagingNum , page , 5 )
119+ pager .SetDefaultParams (ctx )
120+ pager .AddParam (ctx , "l" , "Language" )
121+ ctx .Data ["Page" ] = pager
122+
118123 ctx .HTML (http .StatusOK , tplExploreCode )
119124}
0 commit comments