Skip to content

Commit 104344a

Browse files
committed
add unset default project board
1 parent 272cf6a commit 104344a

File tree

5 files changed

+55
-0
lines changed

5 files changed

+55
-0
lines changed

options/locale/locale_en-US.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1228,6 +1228,8 @@ projects.column.new_submit = "Create Column"
12281228
projects.column.new = "New Column"
12291229
projects.column.set_default = "Set Default"
12301230
projects.column.set_default_desc = "Set this column as default for uncategorized issues and pulls"
1231+
projects.column.unset_default = "Unset Default"
1232+
projects.column.unset_default_desc = "Unset this column as default"
12311233
projects.column.delete = "Delete Column"
12321234
projects.column.deletion_desc = "Deleting a project column moves all related issues to 'Uncategorized'. Continue?"
12331235
projects.column.color = "Color"

routers/web/org/projects.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,23 @@ func SetDefaultProjectBoard(ctx *context.Context) {
573573
})
574574
}
575575

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

routers/web/web.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,7 @@ func RegisterRoutes(m *web.Route) {
907907
m.Put("", web.Bind(forms.EditProjectBoardForm{}), org.EditProjectBoard)
908908
m.Delete("", org.DeleteProjectBoard)
909909
m.Post("/default", org.SetDefaultProjectBoard)
910+
m.Post("/unsetdefault", org.UnsetDefaultProjectBoard)
910911

911912
m.Post("/move", org.MoveIssues)
912913
})

templates/projects/view.tmpl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@
9999
{{svg "octicon-pin"}}
100100
{{$.locale.Tr "repo.projects.column.set_default"}}
101101
</a>
102+
{{else}}
103+
<a class="item show-modal button" data-modal="#unset-default-project-board-modal-{{.ID}}">
104+
{{svg "octicon-pin"}}
105+
{{$.locale.Tr "repo.projects.column.unset_default"}}
106+
</a>
102107
{{end}}
103108
<a class="item show-modal button" data-modal="#delete-board-modal-{{.ID}}">
104109
{{svg "octicon-trash"}}
@@ -149,6 +154,21 @@
149154
</div>
150155
</div>
151156

157+
<div class="ui basic modal" id="unset-default-project-board-modal-{{.ID}}">
158+
<div class="ui icon header">
159+
{{$.locale.Tr "repo.projects.column.unset_default"}}
160+
</div>
161+
<div class="content center">
162+
<label>
163+
{{$.locale.Tr "repo.projects.column.unset_default_desc"}}
164+
</label>
165+
</div>
166+
<div class="text right actions">
167+
<button class="ui cancel button">{{$.locale.Tr "settings.cancel"}}</button>
168+
<button class="ui red button unset-default-project-board" data-url="{{$.Link}}/{{.ID}}/unsetdefault">{{$.locale.Tr "repo.projects.column.unset_default"}}</button>
169+
</div>
170+
</div>
171+
152172
<div class="ui basic modal" id="delete-board-modal-{{.ID}}">
153173
<div class="ui icon header">
154174
{{$.locale.Tr "repo.projects.column.delete"}}

web_src/js/features/repo-projects.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,21 @@ export function initRepoProject() {
141141
window.location.reload();
142142
});
143143

144+
$(document).on('click', '.unset-default-project-board', async function (e) {
145+
e.preventDefault();
146+
147+
await $.ajax({
148+
method: 'POST',
149+
url: $(this).data('url'),
150+
headers: {
151+
'X-Csrf-Token': csrfToken,
152+
},
153+
contentType: 'application/json',
154+
});
155+
156+
window.location.reload();
157+
});
158+
144159
$('.delete-project-board').each(function () {
145160
$(this).click(function (e) {
146161
e.preventDefault();

0 commit comments

Comments
 (0)