diff options
Diffstat (limited to 'routers/repo/issue.go')
-rw-r--r-- | routers/repo/issue.go | 51 |
1 files changed, 14 insertions, 37 deletions
diff --git a/routers/repo/issue.go b/routers/repo/issue.go index d66123f912..7c6db13ade 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -195,16 +195,6 @@ func Issues(ctx *context.Context) { // Get posters. for i := range issues { - if err = issues[i].GetPoster(); err != nil { - ctx.Handle(500, "GetPoster", fmt.Errorf("[#%d]%v", issues[i].ID, err)) - return - } - - if err = issues[i].GetLabels(); err != nil { - ctx.Handle(500, "GetLabels", fmt.Errorf("[#%d]%v", issues[i].ID, err)) - return - } - if !ctx.IsSigned { issues[i].IsRead = true continue @@ -405,7 +395,7 @@ func ValidateRepoMetas(ctx *context.Context, form auth.CreateIssueForm) ([]int64 return labelIDs, milestoneID, assigneeID } -func notifyWatchersAndMentions(ctx *context.Context, issue *models.Issue) { +func MailWatchersAndMentions(ctx *context.Context, issue *models.Issue) error { // Update mentions mentions := markdown.MentionPattern.FindAllString(issue.Content, -1) if len(mentions) > 0 { @@ -414,8 +404,7 @@ func notifyWatchersAndMentions(ctx *context.Context, issue *models.Issue) { } if err := models.UpdateMentions(mentions, issue.ID); err != nil { - ctx.Handle(500, "UpdateMentions", err) - return + return fmt.Errorf("UpdateMentions: %v", err) } } @@ -425,8 +414,7 @@ func notifyWatchersAndMentions(ctx *context.Context, issue *models.Issue) { if setting.Service.EnableNotifyMail { tos, err := mailer.SendIssueNotifyMail(ctx.User, ctx.Repo.Owner, repo, issue) if err != nil { - ctx.Handle(500, "SendIssueNotifyMail", err) - return + return fmt.Errorf("SendIssueNotifyMail: %v", err) } tos = append(tos, ctx.User.LowerName) @@ -440,10 +428,11 @@ func notifyWatchersAndMentions(ctx *context.Context, issue *models.Issue) { } if err = mailer.SendIssueMentionMail(ctx.Render, ctx.User, ctx.Repo.Owner, repo, issue, models.GetUserEmailsByNames(newTos)); err != nil { - ctx.Handle(500, "SendIssueMentionMail", err) - return + return fmt.Errorf("SendIssueMentionMail: %v", err) } } + + return nil } func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) { @@ -471,9 +460,8 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) { } issue := &models.Issue{ - RepoID: ctx.Repo.Repository.ID, - Index: repo.NextIssueIndex(), - Name: strings.TrimSpace(form.Title), + RepoID: repo.ID, + Name: form.Title, PosterID: ctx.User.Id, Poster: ctx.User, MilestoneID: milestoneID, @@ -483,10 +471,8 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) { if err := models.NewIssue(repo, issue, labelIDs, attachments); err != nil { ctx.Handle(500, "NewIssue", err) return - } - - notifyWatchersAndMentions(ctx, issue) - if ctx.Written() { + } else if err := MailWatchersAndMentions(ctx, issue); err != nil { + ctx.Handle(500, "MailWatchersAndMentions", err) return } @@ -586,10 +572,6 @@ func ViewIssue(ctx *context.Context) { ctx.Data["PageIsIssueList"] = true } - if err = issue.GetPoster(); err != nil { - ctx.Handle(500, "GetPoster", err) - return - } issue.RenderedContent = string(markdown.Render([]byte(issue.Content), ctx.Repo.RepoLink, ctx.Repo.Repository.ComposeMetas())) @@ -610,10 +592,6 @@ func ViewIssue(ctx *context.Context) { // Metas. // Check labels. - if err = issue.GetLabels(); err != nil { - ctx.Handle(500, "GetLabels", err) - return - } labelIDMark := make(map[int64]bool) for i := range issue.Labels { labelIDMark[issue.Labels[i].ID] = true @@ -698,7 +676,7 @@ func ViewIssue(ctx *context.Context) { ctx.Data["Participants"] = participants ctx.Data["NumParticipants"] = len(participants) ctx.Data["Issue"] = issue - ctx.Data["IsIssueOwner"] = ctx.Repo.IsWriter() || (ctx.IsSigned && (issue.IsPoster(ctx.User.Id) || ctx.User.IsAdmin)) + ctx.Data["IsIssueOwner"] = ctx.Repo.IsWriter() || (ctx.IsSigned && issue.IsPoster(ctx.User.Id)) ctx.Data["SignInLink"] = setting.AppSubUrl + "/user/login" ctx.Data["RequireHighlightJS"] = true @@ -725,7 +703,7 @@ func UpdateIssueTitle(ctx *context.Context) { return } - if !ctx.IsSigned || (ctx.User.Id != issue.PosterID && !ctx.Repo.IsWriter() && !ctx.User.IsAdmin) { + if !ctx.IsSigned || (!issue.IsPoster(ctx.User.Id) && !ctx.Repo.IsWriter()) { ctx.Error(403) return } @@ -752,7 +730,7 @@ func UpdateIssueContent(ctx *context.Context) { return } - if !ctx.IsSigned || (ctx.User.Id != issue.PosterID && !ctx.Repo.IsWriter() && !ctx.User.IsAdmin) { + if !ctx.IsSigned || (ctx.User.Id != issue.PosterID && !ctx.Repo.IsWriter()) { ctx.Error(403) return } @@ -955,7 +933,7 @@ func NewComment(ctx *context.Context, form auth.CreateCommentForm) { return } - notifyWatchersAndMentions(ctx, &models.Issue{ + MailWatchersAndMentions(ctx, &models.Issue{ ID: issue.ID, Index: issue.Index, Name: issue.Name, @@ -1099,7 +1077,6 @@ func Milestones(ctx *context.Context) { } for _, m := range miles { m.RenderedContent = string(markdown.Render([]byte(m.Content), ctx.Repo.RepoLink, ctx.Repo.Repository.ComposeMetas())) - m.CalOpenIssues() } ctx.Data["Milestones"] = miles |