diff --git a/models/issue.go b/models/issue.go index 90ef287ce..c0f2da2f2 100644 --- a/models/issue.go +++ b/models/issue.go @@ -96,6 +96,11 @@ func (i *Issue) GetAssignee() (err error) { return err } +func (i *Issue) Attachments() []*Attachment { + a, _ := GetAttachmentsForIssue(i.Id) + return a +} + func (i *Issue) AfterDelete() { _, err := DeleteAttachmentsByIssue(i.Id, true) @@ -871,8 +876,9 @@ func GetIssueComments(issueId int64) ([]Comment, error) { } // Attachments returns the attachments for this comment. -func (c *Comment) Attachments() ([]*Attachment, error) { - return GetAttachmentsByComment(c.Id) +func (c *Comment) Attachments() []*Attachment { + a, _ := GetAttachmentsByComment(c.Id) + return a } func (c *Comment) AfterDelete() { @@ -928,10 +934,16 @@ func GetAttachmentById(id int64) (*Attachment, error) { return m, nil } +func GetAttachmentsForIssue(issueId int64) ([]*Attachment, error) { + attachments := make([]*Attachment, 0, 10) + err := x.Where("issue_id = ?", issueId).Where("comment_id = 0").Find(&attachments) + return attachments, err +} + // GetAttachmentsByIssue returns a list of attachments for the given issue func GetAttachmentsByIssue(issueId int64) ([]*Attachment, error) { attachments := make([]*Attachment, 0, 10) - err := x.Where("issue_id = ?", issueId).Find(&attachments) + err := x.Where("issue_id = ?", issueId).Where("comment_id > 0").Find(&attachments) return attachments, err } diff --git a/public/js/app.js b/public/js/app.js index 77719efe0..16d1d5dab 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -525,6 +525,7 @@ function initIssue() { var $attachments = $("input[name=attachments]"); var $addButton = $("#attachments-button"); + var commentId = $addButton.attr("data-comment-id"); // "0" == for issue, "" == for comment var accepted = $addButton.attr("data-accept"); $addButton.on("click", function() { diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 9a265e095..abcf43a94 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -173,7 +173,10 @@ func CreateIssue(ctx *middleware.Context, params martini.Params) { ctx.Handle(500, "issue.CreateIssue(GetCollaborators)", err) return } + + ctx.Data["AllowedTypes"] = setting.AttachmentAllowedTypes ctx.Data["Collaborators"] = us + ctx.HTML(200, ISSUE_CREATE) } @@ -1030,6 +1033,10 @@ func IssuePostAttachment(ctx *middleware.Context, params martini.Params) { return } + if commentId == 0 { + commentId = -1 + } + file, header, err := ctx.Req.FormFile("attachment") if err != nil { diff --git a/templates/repo/issue/create.tmpl b/templates/repo/issue/create.tmpl index b548b1e74..b7f281c51 100644 --- a/templates/repo/issue/create.tmpl +++ b/templates/repo/issue/create.tmpl @@ -101,8 +101,14 @@