Skip to content

Commit c879891

Browse files
committed
Merge branch 'main' into lunny/automerge_support_delete_branch
2 parents b68ed81 + d80f99e commit c879891

39 files changed

+855
-791
lines changed

routers/web/repo/issue.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1443,11 +1443,11 @@ func ViewIssue(ctx *context.Context) {
14431443
}
14441444

14451445
if issue.IsPull && !ctx.Repo.CanRead(unit.TypeIssues) {
1446-
ctx.Data["IssueType"] = "pulls"
1446+
ctx.Data["IssueDependencySearchType"] = "pulls"
14471447
} else if !issue.IsPull && !ctx.Repo.CanRead(unit.TypePullRequests) {
1448-
ctx.Data["IssueType"] = "issues"
1448+
ctx.Data["IssueDependencySearchType"] = "issues"
14491449
} else {
1450-
ctx.Data["IssueType"] = "all"
1450+
ctx.Data["IssueDependencySearchType"] = "all"
14511451
}
14521452

14531453
ctx.Data["IsProjectsEnabled"] = ctx.Repo.CanRead(unit.TypeProjects)

services/repository/push.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,10 @@ func pushUpdateAddTags(ctx context.Context, repo *repo_model.Repository, gitRepo
318318
}
319319

320320
releases, err := db.Find[repo_model.Release](ctx, repo_model.FindReleasesOptions{
321-
RepoID: repo.ID,
322-
TagNames: tags,
323-
IncludeTags: true,
321+
RepoID: repo.ID,
322+
TagNames: tags,
323+
IncludeDrafts: true,
324+
IncludeTags: true,
324325
})
325326
if err != nil {
326327
return fmt.Errorf("db.Find[repo_model.Release]: %w", err)
@@ -407,13 +408,17 @@ func pushUpdateAddTags(ctx context.Context, repo *repo_model.Repository, gitRepo
407408

408409
newReleases = append(newReleases, rel)
409410
} else {
410-
rel.Title = parts[0]
411-
rel.Note = note
412411
rel.Sha1 = commit.ID.String()
413412
rel.CreatedUnix = timeutil.TimeStamp(createdAt.Unix())
414413
rel.NumCommits = commitsCount
415-
if rel.IsTag && author != nil {
416-
rel.PublisherID = author.ID
414+
if rel.IsTag {
415+
rel.Title = parts[0]
416+
rel.Note = note
417+
if author != nil {
418+
rel.PublisherID = author.ID
419+
}
420+
} else {
421+
rel.IsDraft = false
417422
}
418423
if err = repo_model.UpdateRelease(ctx, rel); err != nil {
419424
return fmt.Errorf("Update: %w", err)

services/webhook/discord.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ func (d discordConvertor) Push(p *api.PushPayload) (DiscordPayload, error) {
156156
// for each commit, generate attachment text
157157
for i, commit := range p.Commits {
158158
// limit the commit message display to just the summary, otherwise it would be hard to read
159-
message := strings.TrimRight(strings.SplitN(commit.Message, "\n", 1)[0], "\r")
159+
message := strings.TrimRight(strings.SplitN(commit.Message, "\n", 2)[0], "\r")
160160

161161
// a limit of 50 is set because GitHub does the same
162162
if utf8.RuneCountInString(message) > 50 {

services/webhook/discord_test.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,26 @@ func TestDiscordPayload(t *testing.T) {
8080
assert.Equal(t, p.Sender.AvatarURL, pl.Embeds[0].Author.IconURL)
8181
})
8282

83-
t.Run("PushWithLongCommitMessage", func(t *testing.T) {
83+
t.Run("PushWithMultilineCommitMessage", func(t *testing.T) {
8484
p := pushTestMultilineCommitMessagePayload()
8585

8686
pl, err := dc.Push(p)
8787
require.NoError(t, err)
8888

89+
assert.Len(t, pl.Embeds, 1)
90+
assert.Equal(t, "[test/repo:test] 2 new commits", pl.Embeds[0].Title)
91+
assert.Equal(t, "[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) chore: This is a commit summary - user1\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) chore: This is a commit summary - user1", pl.Embeds[0].Description)
92+
assert.Equal(t, p.Sender.UserName, pl.Embeds[0].Author.Name)
93+
assert.Equal(t, setting.AppURL+p.Sender.UserName, pl.Embeds[0].Author.URL)
94+
assert.Equal(t, p.Sender.AvatarURL, pl.Embeds[0].Author.IconURL)
95+
})
96+
97+
t.Run("PushWithLongCommitSummary", func(t *testing.T) {
98+
p := pushTestPayloadWithCommitMessage("This is a commit summary ⚠️⚠️⚠️⚠️ containing 你好 ⚠️⚠️️\n\nThis is the message body")
99+
100+
pl, err := dc.Push(p)
101+
require.NoError(t, err)
102+
89103
assert.Len(t, pl.Embeds, 1)
90104
assert.Equal(t, "[test/repo:test] 2 new commits", pl.Embeds[0].Title)
91105
assert.Equal(t, "[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) This is a commit summary ⚠️⚠️⚠️⚠️ containing 你好... - user1\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) This is a commit summary ⚠️⚠️⚠️⚠️ containing 你好... - user1", pl.Embeds[0].Description)

services/webhook/general_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func pushTestPayload() *api.PushPayload {
6868
}
6969

7070
func pushTestMultilineCommitMessagePayload() *api.PushPayload {
71-
return pushTestPayloadWithCommitMessage("This is a commit summary ⚠️⚠️⚠️⚠️ containing 你好 ⚠️⚠️️\n\nThis is the message body.")
71+
return pushTestPayloadWithCommitMessage("chore: This is a commit summary\n\nThis is a commit description.")
7272
}
7373

7474
func pushTestPayloadWithCommitMessage(message string) *api.PushPayload {

templates/base/footer_content.tmpl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
{{end}}
1818
</div>
1919
<div class="right-links" role="group" aria-label="{{ctx.Locale.Tr "aria.footer.links"}}">
20-
<div class="ui dropdown upward language">
20+
<div class="ui dropdown upward">
2121
<span class="flex-text-inline">{{svg "octicon-globe" 14}} {{ctx.Locale.LangName}}</span>
2222
<div class="menu language-menu">
23-
{{range .AllLangs}}
24-
<a lang="{{.Lang}}" data-url="{{AppSubUrl}}/?lang={{.Lang}}" class="item {{if eq ctx.Locale.Lang .Lang}}active selected{{end}}">{{.Name}}</a>
25-
{{end}}
23+
{{range .AllLangs -}}
24+
<a lang="{{.Lang}}" data-url="{{AppSubUrl}}/?lang={{.Lang}}" class="item {{if eq ctx.Locale.Lang .Lang}}selected{{end}}">{{.Name}}</a>
25+
{{end -}}
2626
</div>
2727
</div>
2828
<a href="{{AssetUrlPrefix}}/licenses.txt">{{ctx.Locale.Tr "licenses"}}</a>

templates/repo/issue/branch_selector_field.tmpl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,5 @@
4444
</div>
4545
</div>
4646
</div>
47-
4847
<div class="divider"></div>
4948
{{end}}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{{if and .Issue.IsPull .IsIssuePoster (not .Issue.IsClosed) .Issue.PullRequest.HeadRepo}}
2+
{{if and (not (eq .Issue.PullRequest.HeadRepo.FullName .Issue.PullRequest.BaseRepo.FullName)) .CanWriteToHeadRepo}}
3+
<div class="divider"></div>
4+
<div class="ui checkbox loading-icon-2px" id="allow-edits-from-maintainers"
5+
data-url="{{.Issue.Link}}"
6+
data-tooltip-content="{{ctx.Locale.Tr "repo.pulls.allow_edits_from_maintainers_desc"}}"
7+
data-prompt-error="{{ctx.Locale.Tr "repo.pulls.allow_edits_from_maintainers_err"}}"
8+
>
9+
<label><strong>{{ctx.Locale.Tr "repo.pulls.allow_edits_from_maintainers"}}</strong></label>
10+
<input type="checkbox" {{if .Issue.PullRequest.AllowMaintainerEdit}}checked{{end}}>
11+
</div>
12+
{{end}}
13+
{{end}}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<div class="divider"></div>
2+
<input id="assignee_id" name="assignee_id" type="hidden" value="{{.assignee_id}}">
3+
<div class="ui {{if or (not .HasIssuesOrPullsWritePermission) .Repository.IsArchived}}disabled{{end}} floating jump select-assignees-modify dropdown">
4+
<a class="text muted flex-text-block">
5+
<strong>{{ctx.Locale.Tr "repo.issues.new.assignees"}}</strong>
6+
{{if and .HasIssuesOrPullsWritePermission (not .Repository.IsArchived)}}
7+
{{svg "octicon-gear" 16 "tw-ml-1"}}
8+
{{end}}
9+
</a>
10+
<div class="filter menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/assignee">
11+
<div class="ui icon search input">
12+
<i class="icon">{{svg "octicon-search" 16}}</i>
13+
<input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_assignees"}}">
14+
</div>
15+
<div class="no-select item">{{ctx.Locale.Tr "repo.issues.new.clear_assignees"}}</div>
16+
{{range .Assignees}}
17+
18+
{{$AssigneeID := .ID}}
19+
<a class="item{{range $.Issue.Assignees}}{{if eq .ID $AssigneeID}} checked{{end}}{{end}}" href="#" data-id="{{.ID}}" data-id-selector="#assignee_{{.ID}}">
20+
{{$checked := false}}
21+
{{range $.Issue.Assignees}}
22+
{{if eq .ID $AssigneeID}}
23+
{{$checked = true}}
24+
{{end}}
25+
{{end}}
26+
<span class="octicon-check {{if not $checked}}tw-invisible{{end}}">{{svg "octicon-check"}}</span>
27+
<span class="text">
28+
{{ctx.AvatarUtils.Avatar . 20 "tw-mr-2"}}{{template "repo/search_name" .}}
29+
</span>
30+
</a>
31+
{{end}}
32+
</div>
33+
</div>
34+
<div class="ui assignees list">
35+
<span class="no-select item {{if .Issue.Assignees}}tw-hidden{{end}}">{{ctx.Locale.Tr "repo.issues.new.no_assignees"}}</span>
36+
<div class="selected">
37+
{{range .Issue.Assignees}}
38+
<div class="item">
39+
<a class="muted sidebar-item-link" href="{{$.RepoLink}}/{{if $.Issue.IsPull}}pulls{{else}}issues{{end}}?assignee={{.ID}}">
40+
{{ctx.AvatarUtils.Avatar . 28 "tw-mr-2"}}
41+
{{.GetDisplayName}}
42+
</a>
43+
</div>
44+
{{end}}
45+
</div>
46+
</div>
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<div class="divider"></div>
2+
<span class="text"><strong>{{ctx.Locale.Tr "repo.issues.due_date"}}</strong></span>
3+
<div class="ui form tw-mt-2">
4+
{{if .Issue.DeadlineUnix}}
5+
<div class="tw-flex tw-justify-between tw-items-center tw-gap-2">
6+
<div class="due-date {{if .Issue.IsOverdue}}text red{{end}}" {{if .Issue.IsOverdue}}data-tooltip-content="{{ctx.Locale.Tr "repo.issues.due_date_overdue"}}"{{end}}>
7+
{{svg "octicon-calendar"}} {{DateUtils.AbsoluteLong .Issue.DeadlineUnix}}
8+
</div>
9+
<div class="flex-text-block">
10+
{{if and .HasIssuesOrPullsWritePermission (not .Repository.IsArchived)}}
11+
<a class="issue-due-edit muted" data-tooltip-content="{{ctx.Locale.Tr "repo.issues.due_date_form_edit"}}">{{svg "octicon-pencil"}}</a>
12+
<a class="issue-due-remove muted" data-tooltip-content="{{ctx.Locale.Tr "repo.issues.due_date_form_remove"}}">{{svg "octicon-trash"}}</a>
13+
{{end}}
14+
</div>
15+
</div>
16+
{{else}}
17+
{{ctx.Locale.Tr "repo.issues.due_date_not_set"}}
18+
{{end}}
19+
20+
{{if and .HasIssuesOrPullsWritePermission (not .Repository.IsArchived)}}
21+
<form class="ui fluid action input issue-due-form form-fetch-action tw-mt-2 {{if .Issue.DeadlineUnix}}tw-hidden{{end}}"
22+
method="post" action="{{AppSubUrl}}/{{PathEscape .Repository.Owner.Name}}/{{PathEscape .Repository.Name}}/issues/{{.Issue.Index}}/deadline"
23+
>
24+
{{$.CsrfTokenHtml}}
25+
<input required type="date" name="deadline" placeholder="{{ctx.Locale.Tr "repo.issues.due_date_form"}}" {{if .Issue.DeadlineUnix}}value="{{.Issue.DeadlineUnix.FormatDate}}"{{end}}>
26+
<button class="ui icon button">{{Iif .Issue.DeadlineUnix (svg "octicon-pencil") (svg "octicon-plus")}}</button>
27+
</form>
28+
{{end}}
29+
</div>

0 commit comments

Comments
 (0)