|
|
|
@ -1685,6 +1685,9 @@ type Comment struct { |
|
|
|
|
RenderedContent string `xorm:"-"` |
|
|
|
|
Created time.Time `xorm:"CREATED"` |
|
|
|
|
|
|
|
|
|
// Reference issue in commit message
|
|
|
|
|
CommitSHA string `xorm:"VARCHAR(40)"` |
|
|
|
|
|
|
|
|
|
Attachments []*Attachment `xorm:"-"` |
|
|
|
|
|
|
|
|
|
// For view issue page.
|
|
|
|
@ -1733,7 +1736,7 @@ func (c *Comment) EventTag() string { |
|
|
|
|
return "event-" + com.ToStr(c.ID) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, commitID, line int64, cmtType CommentType, content string, uuids []string) (_ *Comment, err error) { |
|
|
|
|
func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, commitID, line int64, cmtType CommentType, content, commitSHA string, uuids []string) (_ *Comment, err error) { |
|
|
|
|
comment := &Comment{ |
|
|
|
|
PosterID: u.Id, |
|
|
|
|
Type: cmtType, |
|
|
|
@ -1741,6 +1744,7 @@ func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, com |
|
|
|
|
CommitID: commitID, |
|
|
|
|
Line: line, |
|
|
|
|
Content: content, |
|
|
|
|
CommitSHA: commitSHA, |
|
|
|
|
} |
|
|
|
|
if _, err = e.Insert(comment); err != nil { |
|
|
|
|
return nil, err |
|
|
|
@ -1819,18 +1823,18 @@ func createStatusComment(e *xorm.Session, doer *User, repo *Repository, issue *I |
|
|
|
|
if !issue.IsClosed { |
|
|
|
|
cmtType = COMMENT_TYPE_REOPEN |
|
|
|
|
} |
|
|
|
|
return createComment(e, doer, repo, issue, 0, 0, cmtType, "", nil) |
|
|
|
|
return createComment(e, doer, repo, issue, 0, 0, cmtType, "", "", nil) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// CreateComment creates comment of issue or commit.
|
|
|
|
|
func CreateComment(doer *User, repo *Repository, issue *Issue, commitID, line int64, cmtType CommentType, content string, attachments []string) (comment *Comment, err error) { |
|
|
|
|
func CreateComment(doer *User, repo *Repository, issue *Issue, commitID, line int64, cmtType CommentType, content, commitSHA string, attachments []string) (comment *Comment, err error) { |
|
|
|
|
sess := x.NewSession() |
|
|
|
|
defer sessionRelease(sess) |
|
|
|
|
if err = sess.Begin(); err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
comment, err = createComment(sess, doer, repo, issue, commitID, line, cmtType, content, attachments) |
|
|
|
|
comment, err = createComment(sess, doer, repo, issue, commitID, line, cmtType, content, commitSHA, attachments) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
@ -1840,7 +1844,29 @@ func CreateComment(doer *User, repo *Repository, issue *Issue, commitID, line in |
|
|
|
|
|
|
|
|
|
// CreateIssueComment creates a plain issue comment.
|
|
|
|
|
func CreateIssueComment(doer *User, repo *Repository, issue *Issue, content string, attachments []string) (*Comment, error) { |
|
|
|
|
return CreateComment(doer, repo, issue, 0, 0, COMMENT_TYPE_COMMENT, content, attachments) |
|
|
|
|
return CreateComment(doer, repo, issue, 0, 0, COMMENT_TYPE_COMMENT, content, "", attachments) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// CreateRefComment creates a commit reference comment to issue.
|
|
|
|
|
func CreateRefComment(doer *User, repo *Repository, issue *Issue, content, commitSHA string) error { |
|
|
|
|
if len(commitSHA) == 0 { |
|
|
|
|
return fmt.Errorf("cannot create reference with empty commit SHA") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Check if same reference from same commit has already existed.
|
|
|
|
|
has, err := x.Get(&Comment{ |
|
|
|
|
Type: COMMENT_TYPE_COMMIT_REF, |
|
|
|
|
IssueID: issue.ID, |
|
|
|
|
CommitSHA: commitSHA, |
|
|
|
|
}) |
|
|
|
|
if err != nil { |
|
|
|
|
return fmt.Errorf("check reference comment: %v", err) |
|
|
|
|
} else if has { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_, err = CreateComment(doer, repo, issue, 0, 0, COMMENT_TYPE_COMMIT_REF, content, commitSHA, nil) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// GetCommentByID returns the comment by given ID.
|
|
|
|
|