Fix PR/issue redirects when having external tracker (#9339)
* Make sure only issues are redirected to external tracker * Ensure correct redirects for pulls after dependency or watch. * NewIssuePost is always issues so no need to redirect with type.
This commit is contained in:
		
							parent
							
								
									81a52442a1
								
							
						
					
					
						commit
						f46176a418
					
				
					 3 changed files with 16 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -607,17 +607,20 @@ func commentTag(repo *models.Repository, poster *models.User, issue *models.Issu
 | 
			
		|||
 | 
			
		||||
// ViewIssue render issue view page
 | 
			
		||||
func ViewIssue(ctx *context.Context) {
 | 
			
		||||
	extIssueUnit, err := ctx.Repo.Repository.GetUnit(models.UnitTypeExternalTracker)
 | 
			
		||||
	if err == nil && extIssueUnit != nil {
 | 
			
		||||
		if extIssueUnit.ExternalTrackerConfig().ExternalTrackerStyle == markup.IssueNameStyleNumeric || extIssueUnit.ExternalTrackerConfig().ExternalTrackerStyle == "" {
 | 
			
		||||
			metas := ctx.Repo.Repository.ComposeMetas()
 | 
			
		||||
			metas["index"] = ctx.Params(":index")
 | 
			
		||||
			ctx.Redirect(com.Expand(extIssueUnit.ExternalTrackerConfig().ExternalTrackerFormat, metas))
 | 
			
		||||
	if ctx.Params(":type") == "issues" {
 | 
			
		||||
		// If issue was requested we check if repo has external tracker and redirect
 | 
			
		||||
		extIssueUnit, err := ctx.Repo.Repository.GetUnit(models.UnitTypeExternalTracker)
 | 
			
		||||
		if err == nil && extIssueUnit != nil {
 | 
			
		||||
			if extIssueUnit.ExternalTrackerConfig().ExternalTrackerStyle == markup.IssueNameStyleNumeric || extIssueUnit.ExternalTrackerConfig().ExternalTrackerStyle == "" {
 | 
			
		||||
				metas := ctx.Repo.Repository.ComposeMetas()
 | 
			
		||||
				metas["index"] = ctx.Params(":index")
 | 
			
		||||
				ctx.Redirect(com.Expand(extIssueUnit.ExternalTrackerConfig().ExternalTrackerFormat, metas))
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
		} else if err != nil && !models.IsErrUnitTypeNotExist(err) {
 | 
			
		||||
			ctx.ServerError("GetUnit", err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	} else if err != nil && !models.IsErrUnitTypeNotExist(err) {
 | 
			
		||||
		ctx.ServerError("GetUnit", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
 | 
			
		||||
| 
						 | 
				
			
			@ -1255,7 +1258,7 @@ func NewComment(ctx *context.Context, form auth.CreateCommentForm) {
 | 
			
		|||
 | 
			
		||||
	if ctx.HasError() {
 | 
			
		||||
		ctx.Flash.Error(ctx.Data["ErrorMsg"].(string))
 | 
			
		||||
		ctx.Redirect(fmt.Sprintf("%s/issues/%d", ctx.Repo.RepoLink, issue.Index))
 | 
			
		||||
		ctx.Redirect(issue.HTMLURL())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,6 @@
 | 
			
		|||
package repo
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +30,7 @@ func AddDependency(ctx *context.Context) {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	// Redirect
 | 
			
		||||
	defer ctx.Redirect(fmt.Sprintf("%s/issues/%d", ctx.Repo.RepoLink, issueIndex), http.StatusSeeOther)
 | 
			
		||||
	defer ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther)
 | 
			
		||||
 | 
			
		||||
	// Dependency
 | 
			
		||||
	dep, err := models.GetIssueByID(depID)
 | 
			
		||||
| 
						 | 
				
			
			@ -85,7 +84,7 @@ func RemoveDependency(ctx *context.Context) {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	// Redirect
 | 
			
		||||
	ctx.Redirect(fmt.Sprintf("%s/issues/%d", ctx.Repo.RepoLink, issueIndex), http.StatusSeeOther)
 | 
			
		||||
	ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther)
 | 
			
		||||
 | 
			
		||||
	// Dependency Type
 | 
			
		||||
	depTypeStr := ctx.Req.PostForm.Get("dependencyType")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,6 @@
 | 
			
		|||
package repo
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strconv"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -54,6 +53,5 @@ func IssueWatch(ctx *context.Context) {
 | 
			
		|||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	url := fmt.Sprintf("%s/issues/%d", ctx.Repo.RepoLink, issue.Index)
 | 
			
		||||
	ctx.Redirect(url, http.StatusSeeOther)
 | 
			
		||||
	ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue