Skip to content

Commit f35b20b

Browse files
authored
track issue title changes (#841)
1 parent 027591a commit f35b20b

File tree

6 files changed

+52
-3
lines changed

6 files changed

+52
-3
lines changed

models/issue.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -641,8 +641,23 @@ func (issue *Issue) ChangeStatus(doer *User, repo *Repository, isClosed bool) (e
641641
func (issue *Issue) ChangeTitle(doer *User, title string) (err error) {
642642
oldTitle := issue.Title
643643
issue.Title = title
644-
if err = UpdateIssueCols(issue, "name"); err != nil {
645-
return fmt.Errorf("UpdateIssueCols: %v", err)
644+
sess := x.NewSession()
645+
defer sess.Close()
646+
647+
if err = sess.Begin(); err != nil {
648+
return err
649+
}
650+
651+
if err = updateIssueCols(sess, issue, "name"); err != nil {
652+
return fmt.Errorf("updateIssueCols: %v", err)
653+
}
654+
655+
if _, err = createChangeTitleComment(sess, doer, issue.Repo, issue, oldTitle, title); err != nil {
656+
return fmt.Errorf("createChangeTitleComment: %v", err)
657+
}
658+
659+
if err = sess.Commit(); err != nil {
660+
return err
646661
}
647662

648663
if issue.IsPull {
@@ -1106,7 +1121,6 @@ func Issues(opts *IssuesOptions) ([]*Issue, error) {
11061121
return issues, nil
11071122
}
11081123

1109-
11101124
// UpdateIssueMentions extracts mentioned people from content and
11111125
// updates issue-user relations for them.
11121126
func UpdateIssueMentions(e Engine, issueID int64, mentions []string) error {

models/issue_comment.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ const (
4242
CommentTypeMilestone
4343
// Assignees changed
4444
CommentTypeAssignees
45+
// Change Title
46+
CommentTypeChangeTitle
4547
)
4648

4749
// CommentTag defines comment tag type
@@ -72,6 +74,8 @@ type Comment struct {
7274
AssigneeID int64
7375
Assignee *User `xorm:"-"`
7476
OldAssignee *User `xorm:"-"`
77+
OldTitle string
78+
NewTitle string
7579

7680
CommitID int64
7781
Line int64
@@ -308,6 +312,8 @@ func createComment(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err
308312
CommitSHA: opts.CommitSHA,
309313
Line: opts.LineNum,
310314
Content: opts.Content,
315+
OldTitle: opts.OldTitle,
316+
NewTitle: opts.NewTitle,
311317
}
312318
if _, err = e.Insert(comment); err != nil {
313319
return nil, err
@@ -455,6 +461,17 @@ func createAssigneeComment(e *xorm.Session, doer *User, repo *Repository, issue
455461
})
456462
}
457463

464+
func createChangeTitleComment(e *xorm.Session, doer *User, repo *Repository, issue *Issue, oldTitle, newTitle string) (*Comment, error) {
465+
return createComment(e, &CreateCommentOptions{
466+
Type: CommentTypeChangeTitle,
467+
Doer: doer,
468+
Repo: repo,
469+
Issue: issue,
470+
OldTitle: oldTitle,
471+
NewTitle: newTitle,
472+
})
473+
}
474+
458475
// CreateCommentOptions defines options for creating comment
459476
type CreateCommentOptions struct {
460477
Type CommentType
@@ -467,6 +484,8 @@ type CreateCommentOptions struct {
467484
MilestoneID int64
468485
OldAssigneeID int64
469486
AssigneeID int64
487+
OldTitle string
488+
NewTitle string
470489
CommitID int64
471490
CommitSHA string
472491
LineNum int64

options/locale/locale_en-US.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,7 @@ issues.remove_milestone_at = `removed this from the <b>%s</b> milestone %s`
549549
issues.self_assign_at = `self-assigned this %s`
550550
issues.add_assignee_at = `was assigned by <b>%s</b> %s`
551551
issues.remove_assignee_at = `removed their assignment %s`
552+
issues.change_title_at = `changed title from <b>%s</b> to <b>%s</b> %s`
552553
issues.open_tab = %d Open
553554
issues.close_tab = %d Closed
554555
issues.filter_label = Label

options/locale/locale_zh-CN.ini

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,10 @@ issues.remove_label_at = ` %[4]s 删除了标签 <div class="ui label" style="co
506506
issues.add_milestone_at = ` %[2]s 添加了里程碑 <b>%[1]s</b>`
507507
issues.change_milestone_at = `%[3]s 修改了里程碑从 <b>%[1]s</b> 到 <b>%[2]s</b>`
508508
issues.remove_milestone_at = `%[2]s 删除了里程碑 <b>%[1]s</b>`
509+
issues.self_assign_at = `于 %s 指派给自己`
510+
issues.add_assignee_at = `于 %[2]s 被 <b>%[1]s</b> 指派`
511+
issues.remove_assignee_at = `于 %s 取消了指派`
512+
issues.change_title_at = `于 %[3]s 修改标题 <b>%[1]s</b> 为 <b>%[2]s</b>`
509513
issues.open_tab=%d 个开启中
510514
issues.close_tab=%d 个已关闭
511515
issues.filter_label=标签筛选

public/js/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,7 @@ function initRepository() {
444444
function (data) {
445445
$editInput.val(data.title);
446446
$issueTitle.text(data.title);
447+
location.reload();
447448
});
448449
return false;
449450
});

templates/repo/issue/view_content.tmpl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,16 @@
175175
<img src="{{.Poster.RelAvatarLink}}">
176176
</a> <span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.Name}}</a> {{$.i18n.Tr "repo.issues.remove_assignee_at" $createdStr | Safe}} </span>{{end}}
177177
</div>
178+
{{else if eq .Type 10}}
179+
<div class="event">
180+
<span class="octicon octicon-primitive-dot"></span>
181+
</div>
182+
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
183+
<img src="{{.Poster.RelAvatarLink}}">
184+
</a>
185+
<span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.Name}}</a>
186+
{{$.i18n.Tr "repo.issues.change_title_at" .OldTitle .NewTitle $createdStr | Safe}}
187+
</span>
178188
{{end}}
179189

180190
{{end}}

0 commit comments

Comments
 (0)