Skip to content

Commit ea46142

Browse files
Otto Richter (fnetX)noerw6543
authored
Add button for issue deletion (#19032)
Co-authored-by: Norwin <[email protected]> Co-authored-by: 6543 <[email protected]>
1 parent ddf7f13 commit ea46142

File tree

4 files changed

+40
-0
lines changed

4 files changed

+40
-0
lines changed

options/locale/locale_en-US.ini

+3
Original file line numberDiff line numberDiff line change
@@ -1374,6 +1374,9 @@ issues.lock.reason = Reason for locking
13741374
issues.lock.title = Lock conversation on this issue.
13751375
issues.unlock.title = Unlock conversation on this issue.
13761376
issues.comment_on_locked = You cannot comment on a locked issue.
1377+
issues.delete = Delete
1378+
issues.delete.title = Delete this issue?
1379+
issues.delete.text = Do you really want to delete this issue? (This will permanently remove all content. Consider closing it instead, if you intend to keep it archived)
13771380
issues.tracker = Time Tracker
13781381
issues.start_tracking_short = Start Timer
13791382
issues.start_tracking = Start Time Tracking

routers/web/repo/issue.go

+15
Original file line numberDiff line numberDiff line change
@@ -852,6 +852,21 @@ func NewIssueChooseTemplate(ctx *context.Context) {
852852
ctx.HTML(http.StatusOK, tplIssueChoose)
853853
}
854854

855+
// DeleteIssue deletes an issue
856+
func DeleteIssue(ctx *context.Context) {
857+
issue := GetActionIssue(ctx)
858+
if ctx.Written() {
859+
return
860+
}
861+
862+
if err := issue_service.DeleteIssue(ctx.User, ctx.Repo.GitRepo, issue); err != nil {
863+
ctx.ServerError("DeleteIssueByID", err)
864+
return
865+
}
866+
867+
ctx.Redirect(fmt.Sprintf("%s/issues", ctx.Repo.Repository.HTMLURL()), http.StatusSeeOther)
868+
}
869+
855870
// ValidateRepoMetas check and returns repository's meta information
856871
func ValidateRepoMetas(ctx *context.Context, form forms.CreateIssueForm, isPull bool) ([]int64, []int64, int64, int64) {
857872
var (

routers/web/web.go

+1
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,7 @@ func RegisterRoutes(m *web.Route) {
757757
m.Post("/reactions/{action}", bindIgnErr(forms.ReactionForm{}), repo.ChangeIssueReaction)
758758
m.Post("/lock", reqRepoIssueWriter, bindIgnErr(forms.IssueLockForm{}), repo.LockIssue)
759759
m.Post("/unlock", reqRepoIssueWriter, repo.UnlockIssue)
760+
m.Post("/delete", reqRepoAdmin, repo.DeleteIssue)
760761
}, context.RepoMustNotBeArchived())
761762
m.Group("/{index}", func() {
762763
m.Get("/attachments", repo.GetIssueAttachments)

templates/repo/issue/view_content/sidebar.tmpl

+21
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,27 @@
645645
</form>
646646
</div>
647647
</div>
648+
<button class="fluid ui show-modal button negative mt-3" data-modal="#delete">
649+
{{svg "octicon-trash"}}
650+
{{.i18n.Tr "repo.issues.delete"}}
651+
</button>
652+
<div class="ui basic modal" id="delete">
653+
<div class="ui icon header">
654+
{{.i18n.Tr "repo.issues.delete.title"}}
655+
</div>
656+
<div class="content center">
657+
<p>
658+
{{.i18n.Tr "repo.issues.delete.text"}}
659+
</p>
660+
</div>
661+
<form action="{{.Issue.Link}}/delete" method="post">
662+
{{.CsrfTokenHtml}}
663+
<div class="center actions">
664+
<div class="ui basic cancel inverted button">{{.i18n.Tr "settings.cancel"}}</div>
665+
<button class="ui basic red inverted button">{{.i18n.Tr "modal.yes"}}</button>
666+
</div>
667+
</form>
668+
</div>
648669
{{end}}
649670
</div>
650671
</div>

0 commit comments

Comments
 (0)