@@ -7,14 +7,13 @@ import (
77 "fmt"
88 "net/http"
99 "net/url"
10- "strconv"
1110 "strings"
1211
1312 "code.gitea.io/gitea/models/db"
1413 user_model "code.gitea.io/gitea/models/user"
15- "code.gitea.io/gitea/modules/base"
1614 "code.gitea.io/gitea/modules/log"
1715 "code.gitea.io/gitea/modules/setting"
16+ "code.gitea.io/gitea/modules/templates"
1817 "code.gitea.io/gitea/modules/web"
1918 "code.gitea.io/gitea/routers/web/explore"
2019 "code.gitea.io/gitea/services/context"
@@ -23,11 +22,11 @@ import (
2322)
2423
2524const (
26- tplBadges base .TplName = "admin/badge/list"
27- tplBadgeNew base .TplName = "admin/badge/new"
28- tplBadgeView base .TplName = "admin/badge/view"
29- tplBadgeEdit base .TplName = "admin/badge/edit"
30- tplBadgeUsers base .TplName = "admin/badge/users"
25+ tplBadges templates .TplName = "admin/badge/list"
26+ tplBadgeNew templates .TplName = "admin/badge/new"
27+ tplBadgeView templates .TplName = "admin/badge/view"
28+ tplBadgeEdit templates .TplName = "admin/badge/edit"
29+ tplBadgeUsers templates .TplName = "admin/badge/users"
3130)
3231
3332// BadgeSearchDefaultAdminSort is the default sort type for admin view
@@ -97,25 +96,31 @@ func NewBadgePost(ctx *context.Context) {
9796 log .Trace ("Badge created by admin (%s): %s" , ctx .Doer .Name , b .Slug )
9897
9998 ctx .Flash .Success (ctx .Tr ("admin.badges.new_success" , b .Slug ))
100- ctx .Redirect (setting .AppSubURL + "/admin/badges/" + strconv . FormatInt (b .ID , 10 ))
99+ ctx .Redirect (setting .AppSubURL + "/-/ admin/badges/" + url . PathEscape (b .Slug ))
101100}
102101
103102func prepareBadgeInfo (ctx * context.Context ) * user_model.Badge {
104103 b , err := user_model .GetBadge (ctx , ctx .PathParam (":badge_slug" ))
105104 if err != nil {
106105 if user_model .IsErrBadgeNotExist (err ) {
107- ctx .Redirect (setting .AppSubURL + "/admin/badges" )
106+ ctx .Redirect (setting .AppSubURL + "/-/ admin/badges" )
108107 } else {
109108 ctx .ServerError ("GetBadge" , err )
110109 }
111110 return nil
112111 }
113112 ctx .Data ["Badge" ] = b
114113
115- users , count , err := user_model .GetBadgeUsers (ctx , b )
114+ opts := & user_model.GetBadgeUsersOptions {
115+ ListOptions : db.ListOptions {
116+ PageSize : setting .UI .User .RepoPagingNum ,
117+ },
118+ Badge : b ,
119+ }
120+ users , count , err := user_model .GetBadgeUsers (ctx , opts )
116121 if err != nil {
117122 if user_model .IsErrUserNotExist (err ) {
118- ctx .Redirect (setting .AppSubURL + "/admin/badges" )
123+ ctx .Redirect (setting .AppSubURL + "/-/ admin/badges" )
119124 } else {
120125 ctx .ServerError ("GetBadgeUsers" , err )
121126 }
@@ -187,7 +192,7 @@ func EditBadgePost(ctx *context.Context) {
187192 log .Trace ("Badge updated by admin (%s): %s" , ctx .Doer .Name , b .Slug )
188193
189194 ctx .Flash .Success (ctx .Tr ("admin.badges.update_success" ))
190- ctx .Redirect (setting .AppSubURL + "/admin/badges/" + url .PathEscape (ctx .PathParam (":badge_slug" )))
195+ ctx .Redirect (setting .AppSubURL + "/-/ admin/badges/" + url .PathEscape (ctx .PathParam (":badge_slug" )))
191196}
192197
193198// DeleteBadge response for deleting a badge
@@ -206,20 +211,35 @@ func DeleteBadge(ctx *context.Context) {
206211 log .Trace ("Badge deleted by admin (%s): %s" , ctx .Doer .Name , b .Slug )
207212
208213 ctx .Flash .Success (ctx .Tr ("admin.badges.deletion_success" ))
209- ctx .Redirect (setting .AppSubURL + "/admin/badges" )
214+ ctx .Redirect (setting .AppSubURL + "/-/ admin/badges" )
210215}
211216
212217func BadgeUsers (ctx * context.Context ) {
213218 ctx .Data ["Title" ] = ctx .Tr ("admin.badges.users_with_badge" , ctx .PathParam (":badge_slug" ))
214219 ctx .Data ["PageIsAdminBadges" ] = true
215220
216- users , _ , err := user_model .GetBadgeUsers (ctx , & user_model.Badge {Slug : ctx .PathParam (":badge_slug" )})
221+ page := ctx .FormInt ("page" )
222+ if page <= 0 {
223+ page = 1
224+ }
225+
226+ badge := & user_model.Badge {Slug : ctx .PathParam (":badge_slug" )}
227+ opts := & user_model.GetBadgeUsersOptions {
228+ ListOptions : db.ListOptions {
229+ Page : page ,
230+ PageSize : setting .UI .User .RepoPagingNum ,
231+ },
232+ Badge : badge ,
233+ }
234+ users , count , err := user_model .GetBadgeUsers (ctx , opts )
217235 if err != nil {
218236 ctx .ServerError ("GetBadgeUsers" , err )
219237 return
220238 }
221239
222240 ctx .Data ["Users" ] = users
241+ ctx .Data ["Total" ] = count
242+ ctx .Data ["Page" ] = context .NewPagination (int (count ), setting .UI .User .RepoPagingNum , page , 5 )
223243
224244 ctx .HTML (http .StatusOK , tplBadgeUsers )
225245}
@@ -267,8 +287,41 @@ func DeleteBadgeUser(ctx *context.Context) {
267287 ctx .Flash .Success (ctx .Tr ("admin.badges.user_remove_success" ))
268288 } else {
269289 ctx .Flash .Error ("DeleteUser: " + err .Error ())
290+ }
291+
292+ ctx .JSONRedirect (fmt .Sprintf ("%s/-/admin/badges/%s/users" , setting .AppSubURL , ctx .PathParam (":badge_slug" )))
293+ }
294+
295+ // ViewBadgeUsers render badge's users page
296+ func ViewBadgeUsers (ctx * context.Context ) {
297+ badge , err := user_model .GetBadge (ctx , ctx .PathParam (":slug" ))
298+ if err != nil {
299+ ctx .ServerError ("GetBadge" , err )
270300 return
271301 }
272302
273- ctx .JSONRedirect (fmt .Sprintf ("%s/admin/badges/%s/users" , setting .AppSubURL , ctx .PathParam (":badge_slug" )))
303+ page := ctx .FormInt ("page" )
304+ if page <= 0 {
305+ page = 1
306+ }
307+
308+ opts := & user_model.GetBadgeUsersOptions {
309+ ListOptions : db.ListOptions {
310+ Page : page ,
311+ PageSize : setting .UI .User .RepoPagingNum ,
312+ },
313+ Badge : badge ,
314+ }
315+ users , count , err := user_model .GetBadgeUsers (ctx , opts )
316+ if err != nil {
317+ ctx .ServerError ("GetBadgeUsers" , err )
318+ return
319+ }
320+
321+ ctx .Data ["Title" ] = badge .Description
322+ ctx .Data ["Badge" ] = badge
323+ ctx .Data ["Users" ] = users
324+ ctx .Data ["Total" ] = count
325+ ctx .Data ["Pages" ] = context .NewPagination (int (count ), setting .UI .User .RepoPagingNum , page , 5 )
326+ ctx .HTML (http .StatusOK , tplBadgeUsers )
274327}
0 commit comments