Skip to content

Commit f30cc9f

Browse files
authoredApr 19, 2023
Add unset default project column (#23531)
Close: #23401
1 parent e422342 commit f30cc9f

File tree

7 files changed

+102
-25
lines changed

7 files changed

+102
-25
lines changed
 

‎options/locale/locale_en-US.ini

+2
Original file line numberDiff line numberDiff line change
@@ -1261,6 +1261,8 @@ projects.column.new_submit = "Create Column"
12611261
projects.column.new = "New Column"
12621262
projects.column.set_default = "Set Default"
12631263
projects.column.set_default_desc = "Set this column as default for uncategorized issues and pulls"
1264+
projects.column.unset_default = "Unset Default"
1265+
projects.column.unset_default_desc = "Unset this column as default"
12641266
projects.column.delete = "Delete Column"
12651267
projects.column.deletion_desc = "Deleting a project column moves all related issues to 'Uncategorized'. Continue?"
12661268
projects.column.color = "Color"

‎routers/web/org/projects.go

+17
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,23 @@ func SetDefaultProjectBoard(ctx *context.Context) {
610610
})
611611
}
612612

613+
// UnsetDefaultProjectBoard unset default board for uncategorized issues/pulls
614+
func UnsetDefaultProjectBoard(ctx *context.Context) {
615+
project, _ := CheckProjectBoardChangePermissions(ctx)
616+
if ctx.Written() {
617+
return
618+
}
619+
620+
if err := project_model.SetDefaultBoard(project.ID, 0); err != nil {
621+
ctx.ServerError("SetDefaultBoard", err)
622+
return
623+
}
624+
625+
ctx.JSON(http.StatusOK, map[string]interface{}{
626+
"ok": true,
627+
})
628+
}
629+
613630
// MoveIssues moves or keeps issues in a column and sorts them inside that column
614631
func MoveIssues(ctx *context.Context) {
615632
if ctx.Doer == nil {

‎routers/web/repo/projects.go

+17
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,23 @@ func SetDefaultProjectBoard(ctx *context.Context) {
576576
})
577577
}
578578

579+
// UnSetDefaultProjectBoard unset default board for uncategorized issues/pulls
580+
func UnSetDefaultProjectBoard(ctx *context.Context) {
581+
project, _ := checkProjectBoardChangePermissions(ctx)
582+
if ctx.Written() {
583+
return
584+
}
585+
586+
if err := project_model.SetDefaultBoard(project.ID, 0); err != nil {
587+
ctx.ServerError("SetDefaultBoard", err)
588+
return
589+
}
590+
591+
ctx.JSON(http.StatusOK, map[string]interface{}{
592+
"ok": true,
593+
})
594+
}
595+
579596
// MoveIssues moves or keeps issues in a column and sorts them inside that column
580597
func MoveIssues(ctx *context.Context) {
581598
if ctx.Doer == nil {

‎routers/web/web.go

+2
Original file line numberDiff line numberDiff line change
@@ -936,6 +936,7 @@ func RegisterRoutes(m *web.Route) {
936936
m.Put("", web.Bind(forms.EditProjectBoardForm{}), org.EditProjectBoard)
937937
m.Delete("", org.DeleteProjectBoard)
938938
m.Post("/default", org.SetDefaultProjectBoard)
939+
m.Post("/unsetdefault", org.UnsetDefaultProjectBoard)
939940

940941
m.Post("/move", org.MoveIssues)
941942
})
@@ -1292,6 +1293,7 @@ func RegisterRoutes(m *web.Route) {
12921293
m.Put("", web.Bind(forms.EditProjectBoardForm{}), repo.EditProjectBoard)
12931294
m.Delete("", repo.DeleteProjectBoard)
12941295
m.Post("/default", repo.SetDefaultProjectBoard)
1296+
m.Post("/unsetdefault", repo.UnSetDefaultProjectBoard)
12951297

12961298
m.Post("/move", repo.MoveIssues)
12971299
})

‎templates/projects/view.tmpl

+20-7
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,25 @@
9595
{{$.locale.Tr "repo.projects.column.edit"}}
9696
</a>
9797
{{if not .Default}}
98-
<a class="item show-modal button" data-modal="#set-default-project-board-modal-{{.ID}}">
98+
<a class="item show-modal button default-project-board-show"
99+
data-modal="#default-project-board-modal-{{.ID}}"
100+
data-modal-default-project-board-header="{{$.locale.Tr "repo.projects.column.set_default"}}"
101+
data-modal-default-project-board-content="{{$.locale.Tr "repo.projects.column.set_default_desc"}}"
102+
data-modal-default-project-board-submit="{{$.locale.Tr "repo.projects.column.set_default"}}"
103+
data-url="{{$.Link}}/{{.ID}}/default">
99104
{{svg "octicon-pin"}}
100105
{{$.locale.Tr "repo.projects.column.set_default"}}
101106
</a>
107+
{{else}}
108+
<a class="item show-modal button default-project-board-show"
109+
data-modal="#default-project-board-modal-{{.ID}}"
110+
data-modal-default-project-board-header="{{$.locale.Tr "repo.projects.column.unset_default"}}"
111+
data-modal-default-project-board-content="{{$.locale.Tr "repo.projects.column.unset_default_desc"}}"
112+
data-modal-default-project-board-submit="{{$.locale.Tr "repo.projects.column.unset_default"}}"
113+
data-url="{{$.Link}}/{{.ID}}/unsetdefault">
114+
{{svg "octicon-pin"}}
115+
{{$.locale.Tr "repo.projects.column.unset_default"}}
116+
</a>
102117
{{end}}
103118
<a class="item show-modal button" data-modal="#delete-board-modal-{{.ID}}">
104119
{{svg "octicon-trash"}}
@@ -134,18 +149,16 @@
134149
</div>
135150
</div>
136151

137-
<div class="ui basic modal" id="set-default-project-board-modal-{{.ID}}">
152+
<div class="ui basic modal default-project-board-modal" id="default-project-board-modal-{{.ID}}">
138153
<div class="ui icon header">
139-
{{$.locale.Tr "repo.projects.column.set_default"}}
154+
<span id="default-project-board-header"></span>
140155
</div>
141156
<div class="content center">
142-
<label>
143-
{{$.locale.Tr "repo.projects.column.set_default_desc"}}
144-
</label>
157+
<label id="default-project-board-content"></label>
145158
</div>
146159
<div class="text right actions">
147160
<button class="ui cancel button">{{$.locale.Tr "settings.cancel"}}</button>
148-
<button class="ui primary button set-default-project-board" data-url="{{$.Link}}/{{.ID}}/default">{{$.locale.Tr "repo.projects.column.set_default"}}</button>
161+
<button class="ui primary button default-project-board-button" id="default-project-board-submit"></button>
149162
</div>
150163
</div>
151164

‎templates/repo/projects/view.tmpl

+22-7
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,27 @@
9999
{{$.locale.Tr "repo.projects.column.edit"}}
100100
</a>
101101
{{if not .Default}}
102-
<a class="item show-modal button" data-modal="#set-default-project-board-modal-{{.ID}}">
102+
<a class="item show-modal button default-project-board-show"
103+
data-modal="#default-project-board-modal-{{.ID}}"
104+
data-modal-default-project-board-header="{{$.locale.Tr "repo.projects.column.set_default"}}"
105+
data-modal-default-project-board-content="{{$.locale.Tr "repo.projects.column.set_default_desc"}}"
106+
data-modal-default-project-board-submit="{{$.locale.Tr "repo.projects.column.set_default"}}"
107+
data-type="set_default"
108+
data-url="{{$.Link}}/{{.ID}}/default">
103109
{{svg "octicon-pin"}}
104110
{{$.locale.Tr "repo.projects.column.set_default"}}
105111
</a>
112+
{{else}}
113+
<a class="item show-modal button default-project-board-show"
114+
data-modal="#default-project-board-modal-{{.ID}}"
115+
data-modal-default-project-board-header="{{$.locale.Tr "repo.projects.column.unset_default"}}"
116+
data-modal-default-project-board-content="{{$.locale.Tr "repo.projects.column.unset_default_desc"}}"
117+
data-modal-default-project-board-submit="{{$.locale.Tr "repo.projects.column.unset_default"}}"
118+
data-type="unset_default"
119+
data-url="{{$.Link}}/{{.ID}}/unsetdefault">
120+
{{svg "octicon-pin"}}
121+
{{$.locale.Tr "repo.projects.column.unset_default"}}
122+
</a>
106123
{{end}}
107124
<a class="item show-modal button" data-modal="#delete-board-modal-{{.ID}}">
108125
{{svg "octicon-trash"}}
@@ -138,18 +155,16 @@
138155
</div>
139156
</div>
140157

141-
<div class="ui basic modal" id="set-default-project-board-modal-{{.ID}}">
158+
<div class="ui basic modal default-project-board-modal" id="default-project-board-modal-{{.ID}}">
142159
<div class="ui icon header">
143-
{{$.locale.Tr "repo.projects.column.set_default"}}
160+
<span id="default-project-board-header"></span>
144161
</div>
145162
<div class="content center">
146-
<label>
147-
{{$.locale.Tr "repo.projects.column.set_default_desc"}}
148-
</label>
163+
<label id="default-project-board-content"></label>
149164
</div>
150165
<div class="text right actions">
151166
<button class="ui cancel button">{{$.locale.Tr "settings.cancel"}}</button>
152-
<button class="ui primary button set-default-project-board" data-url="{{$.RepoLink}}/projects/{{$.Project.ID}}/{{.ID}}/default">{{$.locale.Tr "repo.projects.column.set_default"}}</button>
167+
<button class="ui primary button default-project-board-button" id="default-project-board-submit"></button>
153168
</div>
154169
</div>
155170

‎web_src/js/features/repo-projects.js

+22-11
Original file line numberDiff line numberDiff line change
@@ -126,19 +126,30 @@ export function initRepoProject() {
126126
});
127127
});
128128

129-
$(document).on('click', '.set-default-project-board', async function (e) {
130-
e.preventDefault();
129+
$('.default-project-board-modal').each(function () {
130+
const boardColumn = $(this).closest('.board-column');
131+
const showButton = $(boardColumn).find('.default-project-board-show');
132+
const commitButton = $(this).find('.default-project-board-button');
131133

132-
await $.ajax({
133-
method: 'POST',
134-
url: $(this).data('url'),
135-
headers: {
136-
'X-Csrf-Token': csrfToken,
137-
},
138-
contentType: 'application/json',
139-
});
134+
if ($(showButton).data('type') === 'unset_default') {
135+
$(commitButton).removeClass('primary');
136+
$(commitButton).addClass('red');
137+
}
140138

141-
window.location.reload();
139+
$(commitButton).on('click', (e) => {
140+
e.preventDefault();
141+
142+
$.ajax({
143+
method: 'POST',
144+
url: $(showButton).data('url'),
145+
headers: {
146+
'X-Csrf-Token': csrfToken,
147+
},
148+
contentType: 'application/json',
149+
}).done(() => {
150+
window.location.reload();
151+
});
152+
});
142153
});
143154

144155
$('.delete-project-board').each(function () {

0 commit comments

Comments
 (0)
Please sign in to comment.