mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 11:35:03 +01:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									198a9ca635
								
							
						
					
					
						commit
						8d0343e028
					
				| @ -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) | ||||
|  | ||||
| @ -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) | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user