You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

badge.go 3.8 kB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package badge
  2. import (
  3. "code.gitea.io/gitea/models"
  4. "code.gitea.io/gitea/modules/context"
  5. "code.gitea.io/gitea/modules/log"
  6. "code.gitea.io/gitea/modules/setting"
  7. "code.gitea.io/gitea/routers/response"
  8. "code.gitea.io/gitea/services/badge"
  9. "errors"
  10. "github.com/unknwon/com"
  11. "net/http"
  12. "strings"
  13. )
  14. func GetCustomizeBadgeList(ctx *context.Context) {
  15. page := ctx.QueryInt("page")
  16. category := ctx.QueryInt64("category")
  17. pageSize := 50
  18. n, r, err := badge.GetBadgeList(models.GetBadgeOpts{CategoryId: category, BadgeType: models.CustomizeBadge, ListOpts: models.ListOptions{PageSize: pageSize, Page: page}})
  19. if err != nil {
  20. log.Error("GetCustomizeBadgeList error.%v", err)
  21. ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
  22. return
  23. }
  24. m := make(map[string]interface{})
  25. m["List"] = r
  26. m["Total"] = n
  27. m["PageSize"] = pageSize
  28. ctx.JSON(http.StatusOK, response.SuccessWithData(m))
  29. }
  30. func OperateBadge(ctx *context.Context, req models.BadgeOperateReq) {
  31. action := ctx.Params(":action")
  32. var err *response.BizError
  33. switch action {
  34. case "edit":
  35. err = badge.EditBadge(req, ctx.User)
  36. case "new":
  37. err = badge.AddBadge(req, ctx.User)
  38. case "del":
  39. err = badge.DelBadge(req.ID, ctx.User)
  40. default:
  41. err = response.NewBizError(errors.New("action type error"))
  42. }
  43. if err != nil {
  44. log.Error("OperateBadge error ,%v", err)
  45. ctx.JSON(http.StatusOK, response.ResponseError(err))
  46. return
  47. }
  48. ctx.JSON(http.StatusOK, response.Success())
  49. }
  50. func GetBadgeUsers(ctx *context.Context) {
  51. page := ctx.QueryInt("page")
  52. badgeId := ctx.QueryInt64("badge")
  53. pageSize := 50
  54. n, r, err := badge.GetBadgeUsers(badgeId, models.ListOptions{PageSize: pageSize, Page: page})
  55. if err != nil {
  56. log.Error("GetBadgeUsers error.%v", err)
  57. ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
  58. return
  59. }
  60. m := make(map[string]interface{})
  61. m["List"] = r
  62. m["Total"] = n
  63. m["PageSize"] = pageSize
  64. ctx.JSON(http.StatusOK, response.SuccessWithData(m))
  65. }
  66. func AddOperateBadgeUsers(ctx *context.Context, req models.AddBadgeUsersReq) {
  67. userStr := req.Users
  68. if userStr == "" {
  69. ctx.JSON(http.StatusOK, response.Success())
  70. return
  71. }
  72. userStr = strings.ReplaceAll(userStr, " ", "")
  73. userStr = strings.ReplaceAll(userStr, "\r", "")
  74. userNames := strings.Split(userStr, "\n")
  75. n, err := badge.AddBadgeUsers(req.BadgeId, userNames)
  76. if err != nil {
  77. log.Error("AddOperateBadgeUsers error.%v", err)
  78. ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
  79. return
  80. }
  81. m := make(map[string]interface{})
  82. m["Total"] = len(userNames)
  83. m["Success"] = n
  84. ctx.JSON(http.StatusOK, response.SuccessWithData(m))
  85. }
  86. func DelBadgeUsers(ctx *context.Context, req models.DelBadgeUserReq) {
  87. id := req.ID
  88. if id <= 0 {
  89. ctx.JSON(http.StatusOK, response.Success())
  90. return
  91. }
  92. err := badge.DelBadgeUser(id)
  93. if err != nil {
  94. log.Error("DelBadgeUsers error.%v", err)
  95. ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
  96. return
  97. }
  98. ctx.JSON(http.StatusOK, response.Success())
  99. }
  100. func UploadIcon(ctx *context.Context, form badge.IconUploadForm) {
  101. uploader := badge.NewIconUploader(badge.IconUploadConfig{
  102. FileMaxSize: setting.BadgeIconMaxFileSize,
  103. FileMaxWidth: setting.BadgeIconMaxWidth,
  104. FileMaxHeight: setting.BadgeIconMaxHeight,
  105. NeedSquare: true,
  106. })
  107. iconName, err := uploader.Upload(form, ctx.User)
  108. if err != nil {
  109. log.Error("UploadIcon error.%v", err)
  110. ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
  111. return
  112. }
  113. m := make(map[string]string, 0)
  114. m["IconName"] = iconName
  115. ctx.JSON(http.StatusOK, response.SuccessWithData(m))
  116. }
  117. func GetIcon(ctx *context.Context) {
  118. hash := ctx.Params(":hash")
  119. if !com.IsFile(models.GetCustomIconByHash(hash)) {
  120. ctx.NotFound(ctx.Req.URL.RequestURI(), nil)
  121. return
  122. }
  123. ctx.Redirect(setting.AppSubURL + "/icons/" + hash)
  124. }