Skip to content

Commit

Permalink
Fix PR/issue redirects when having external tracker (go-gitea#9339)
Browse files Browse the repository at this point in the history
* 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.
  • Loading branch information
David Svantesson authored and typeless committed Dec 14, 2019
1 parent 81a5244 commit 4f0329f
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 24 deletions.
16 changes: 8 additions & 8 deletions .drone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,8 @@ steps:
commands:
- "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash"
- apt-get install -y git-lfs
- timeout -s ABRT 20m make test-sqlite-migration
- timeout -s ABRT 20m make test-sqlite
- timeout -s ABRT 30m make test-sqlite-migration
- timeout -s ABRT 30m make test-sqlite
environment:
GOPROXY: off
TAGS: bindata
Expand Down Expand Up @@ -200,8 +200,8 @@ steps:
commands:
- "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash"
- apt-get install -y git-lfs
- timeout -s ABRT 20m make test-mysql-migration
- timeout -s ABRT 20m make test-mysql
- timeout -s ABRT 30m make test-mysql-migration
- timeout -s ABRT 30m make test-mysql
environment:
GOPROXY: off
TAGS: bindata
Expand All @@ -218,8 +218,8 @@ steps:
commands:
- "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash"
- apt-get install -y git-lfs
- timeout -s ABRT 20m make test-mysql8-migration
- timeout -s ABRT 20m make test-mysql8
- timeout -s ABRT 30m make test-mysql8-migration
- timeout -s ABRT 30m make test-mysql8
environment:
GOPROXY: off
TAGS: bindata
Expand All @@ -233,8 +233,8 @@ steps:
commands:
- "curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash"
- apt-get install -y git-lfs
- timeout -s ABRT 20m make test-pgsql-migration
- timeout -s ABRT 20m make test-pgsql
- timeout -s ABRT 30m make test-pgsql-migration
- timeout -s ABRT 30m make test-pgsql
environment:
GOPROXY: off
TAGS: bindata
Expand Down
23 changes: 13 additions & 10 deletions routers/repo/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"))
Expand Down Expand Up @@ -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
}

Expand Down
5 changes: 2 additions & 3 deletions routers/repo/issue_dependency.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
package repo

import (
"fmt"
"net/http"

"code.gitea.io/gitea/models"
Expand All @@ -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)
Expand Down Expand Up @@ -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")
Expand Down
4 changes: 1 addition & 3 deletions routers/repo/issue_watch.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
package repo

import (
"fmt"
"net/http"
"strconv"

Expand Down Expand Up @@ -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)
}

0 comments on commit 4f0329f

Please sign in to comment.