func ChangeMilestonStatus(ctx *middleware.Context) { m, err := models.GetMilestoneByID(ctx.ParamsInt64(":id")) if err != nil { if models.IsErrMilestoneNotExist(err) { ctx.Handle(404, "GetMilestoneByID", err) } else { ctx.Handle(500, "GetMilestoneByID", err) } return } switch ctx.Params(":action") { case "open": if m.IsClosed { if err = models.ChangeMilestoneStatus(m, false); err != nil { ctx.Handle(500, "ChangeMilestoneStatus", err) return } } ctx.Redirect(ctx.Repo.RepoLink + "/milestones?state=open") case "close": if !m.IsClosed { m.ClosedDate = time.Now() if err = models.ChangeMilestoneStatus(m, true); err != nil { ctx.Handle(500, "ChangeMilestoneStatus", err) return } } ctx.Redirect(ctx.Repo.RepoLink + "/milestones?state=closed") default: ctx.Redirect(ctx.Repo.RepoLink + "/milestones") } }
func UpdateMilestone(ctx *middleware.Context) { ctx.Data["Title"] = "Update Milestone" ctx.Data["IsRepoToolbarIssues"] = true ctx.Data["IsRepoToolbarIssuesList"] = true idx := com.StrTo(ctx.Params(":index")).MustInt64() if idx == 0 { ctx.Handle(404, "issue.UpdateMilestone", nil) return } mile, err := models.GetMilestoneByIndex(ctx.Repo.Repository.Id, idx) if err != nil { if err == models.ErrMilestoneNotExist { ctx.Handle(404, "issue.UpdateMilestone(GetMilestoneByIndex)", err) } else { ctx.Handle(500, "issue.UpdateMilestone(GetMilestoneByIndex)", err) } return } action := ctx.Params(":action") if len(action) > 0 { switch action { case "open": if mile.IsClosed { if err = models.ChangeMilestoneStatus(mile, false); err != nil { ctx.Handle(500, "issue.UpdateMilestone(ChangeMilestoneStatus)", err) return } } case "close": if !mile.IsClosed { mile.ClosedDate = time.Now() if err = models.ChangeMilestoneStatus(mile, true); err != nil { ctx.Handle(500, "issue.UpdateMilestone(ChangeMilestoneStatus)", err) return } } case "delete": if err = models.DeleteMilestone(mile); err != nil { ctx.Handle(500, "issue.UpdateMilestone(DeleteMilestone)", err) return } } ctx.Redirect(ctx.Repo.RepoLink + "/issues/milestones") return } mile.DeadlineString = mile.Deadline.UTC().Format("01/02/2006") if mile.DeadlineString == "12/31/9999" { mile.DeadlineString = "" } ctx.Data["Milestone"] = mile ctx.HTML(200, MILESTONE_EDIT) }