|
|
|
@ -445,7 +445,7 @@ func UpdateIssueLabel(ctx *middleware.Context, params martini.Params) {
|
|
|
|
|
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.Id, idx) |
|
|
|
|
if err != nil { |
|
|
|
|
if err == models.ErrIssueNotExist { |
|
|
|
|
ctx.Handle(404, "issue.UpdateIssueLabel", err) |
|
|
|
|
ctx.Handle(404, "issue.UpdateIssueLabel(GetIssueByIndex)", err) |
|
|
|
|
} else { |
|
|
|
|
ctx.Handle(500, "issue.UpdateIssueLabel(GetIssueByIndex)", err) |
|
|
|
|
} |
|
|
|
@ -454,6 +454,17 @@ func UpdateIssueLabel(ctx *middleware.Context, params martini.Params) {
|
|
|
|
|
|
|
|
|
|
isAttach := ctx.Query("action") == "attach" |
|
|
|
|
labelStrId := ctx.Query("id") |
|
|
|
|
labelId, _ := base.StrTo(labelStrId).Int64() |
|
|
|
|
label, err := models.GetLabelById(labelId) |
|
|
|
|
if err != nil { |
|
|
|
|
if err == models.ErrLabelNotExist { |
|
|
|
|
ctx.Handle(404, "issue.UpdateIssueLabel(GetLabelById)", err) |
|
|
|
|
} else { |
|
|
|
|
ctx.Handle(500, "issue.UpdateIssueLabel(GetLabelById)", err) |
|
|
|
|
} |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
isHad := strings.Contains(issue.LabelIds, "$"+labelStrId+"|") |
|
|
|
|
isNeedUpdate := false |
|
|
|
|
if isAttach { |
|
|
|
@ -473,6 +484,22 @@ func UpdateIssueLabel(ctx *middleware.Context, params martini.Params) {
|
|
|
|
|
ctx.Handle(500, "issue.UpdateIssueLabel(UpdateIssue)", err) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if isAttach { |
|
|
|
|
label.NumIssues++ |
|
|
|
|
if issue.IsClosed { |
|
|
|
|
label.NumClosedIssues++ |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
label.NumIssues-- |
|
|
|
|
if issue.IsClosed { |
|
|
|
|
label.NumClosedIssues-- |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if err = models.UpdateLabel(label); err != nil { |
|
|
|
|
ctx.Handle(500, "issue.UpdateIssueLabel(UpdateLabel)", err) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
ctx.JSON(200, map[string]interface{}{ |
|
|
|
|
"ok": true, |
|
|
|
|