aboutsummaryrefslogtreecommitdiffstats
path: root/routers/web
diff options
context:
space:
mode:
authorJakobDev <jakobdev@gmx.de>2023-09-14 16:20:16 +0200
committerGitHub <noreply@github.com>2023-09-14 14:20:16 +0000
commit8d0343e028cf5b1794ba2bfebf23c863e340d108 (patch)
tree327833f1fcfb1535ce67af6d42e6920e5da6007d /routers/web
parent198a9ca6350954a6d3327a408021fec2bc0fc805 (diff)
downloadgitea-8d0343e028cf5b1794ba2bfebf23c863e340d108.tar.gz
gitea-8d0343e028cf5b1794ba2bfebf23c863e340d108.zip
Fix issue templates when blank isses are disabled (#27061)
Fixes #27060 --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: delvh <dev.lh@web.de>
Diffstat (limited to 'routers/web')
-rw-r--r--routers/web/repo/compare.go2
-rw-r--r--routers/web/repo/issue.go23
2 files changed, 14 insertions, 11 deletions
diff --git a/routers/web/repo/compare.go b/routers/web/repo/compare.go
index aee3495612..7f51cb01f3 100644
--- a/routers/web/repo/compare.go
+++ b/routers/web/repo/compare.go
@@ -804,7 +804,7 @@ func CompareDiff(ctx *context.Context) {
ctx.Data["IsRepoToolbarCommits"] = true
ctx.Data["IsDiffCompare"] = true
- templateErrs := setTemplateIfExists(ctx, pullRequestTemplateKey, pullRequestTemplateCandidates)
+ _, templateErrs := setTemplateIfExists(ctx, pullRequestTemplateKey, pullRequestTemplateCandidates)
if len(templateErrs) > 0 {
ctx.Flash.Warning(renderErrorOfTemplates(ctx, templateErrs), true)
diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index c95d54532a..3796fb7d3e 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -830,10 +830,11 @@ func RetrieveRepoMetas(ctx *context.Context, repo *repo_model.Repository, isPull
return labels
}
-func setTemplateIfExists(ctx *context.Context, ctxDataKey string, possibleFiles []string) map[string]error {
+// Tries to load and set an issue template. The first return value indicates if a template was loaded.
+func setTemplateIfExists(ctx *context.Context, ctxDataKey string, possibleFiles []string) (bool, map[string]error) {
commit, err := ctx.Repo.GitRepo.GetBranchCommit(ctx.Repo.Repository.DefaultBranch)
if err != nil {
- return nil
+ return false, nil
}
templateCandidates := make([]string, 0, 1+len(possibleFiles))
@@ -896,20 +897,15 @@ func setTemplateIfExists(ctx *context.Context, ctxDataKey string, possibleFiles
ctx.Data["label_ids"] = strings.Join(labelIDs, ",")
ctx.Data["Reference"] = template.Ref
ctx.Data["RefEndName"] = git.RefName(template.Ref).ShortName()
- return templateErrs
+ return true, templateErrs
}
- return templateErrs
+ return false, templateErrs
}
// NewIssue render creating issue page
func NewIssue(ctx *context.Context) {
issueConfig, _ := issue_service.GetTemplateConfigFromDefaultBranch(ctx.Repo.Repository, ctx.Repo.GitRepo)
hasTemplates := issue_service.HasTemplatesOrContactLinks(ctx.Repo.Repository, ctx.Repo.GitRepo)
- if !issueConfig.BlankIssuesEnabled && hasTemplates {
- // The "issues/new" and "issues/new/choose" share the same query parameters "project" and "milestone", if blank issues are disabled, just redirect to the "issues/choose" page with these parameters.
- ctx.Redirect(fmt.Sprintf("%s/issues/new/choose?%s", ctx.Repo.Repository.Link(), ctx.Req.URL.RawQuery), http.StatusSeeOther)
- return
- }
ctx.Data["Title"] = ctx.Tr("repo.issues.new")
ctx.Data["PageIsIssueList"] = true
@@ -963,7 +959,8 @@ func NewIssue(ctx *context.Context) {
ctx.Data["Tags"] = tags
_, templateErrs := issue_service.GetTemplatesFromDefaultBranch(ctx.Repo.Repository, ctx.Repo.GitRepo)
- if errs := setTemplateIfExists(ctx, issueTemplateKey, IssueTemplateCandidates); len(errs) > 0 {
+ templateLoaded, errs := setTemplateIfExists(ctx, issueTemplateKey, IssueTemplateCandidates)
+ if len(errs) > 0 {
for k, v := range errs {
templateErrs[k] = v
}
@@ -978,6 +975,12 @@ func NewIssue(ctx *context.Context) {
ctx.Data["HasIssuesOrPullsWritePermission"] = ctx.Repo.CanWrite(unit.TypeIssues)
+ if !issueConfig.BlankIssuesEnabled && hasTemplates && !templateLoaded {
+ // The "issues/new" and "issues/new/choose" share the same query parameters "project" and "milestone", if blank issues are disabled, just redirect to the "issues/choose" page with these parameters.
+ ctx.Redirect(fmt.Sprintf("%s/issues/new/choose?%s", ctx.Repo.Repository.Link(), ctx.Req.URL.RawQuery), http.StatusSeeOther)
+ return
+ }
+
ctx.HTML(http.StatusOK, tplIssueNew)
}