aboutsummaryrefslogtreecommitdiff
path: root/internal/route
diff options
context:
space:
mode:
authorAndrey Filippov <afilippov1985@users.noreply.github.com>2020-01-26 01:42:38 +0400
committerᴜɴᴋɴᴡᴏɴ <u@gogs.io>2020-01-26 05:42:38 +0800
commit0a461b829af1ff54994287505012bd07fbf3bf44 (patch)
tree0c50d69577ee9bf02ab829c7d49b072d5fd93dc8 /internal/route
parent91e9495148378ccb2766a63c1e8191d6787fab02 (diff)
repo: fix redirect after opening/closing milestone (#5903)
* Fix milestone redirect * gosimple * Apply suggestions from code review Co-Authored-By: ᴜɴᴋɴᴡᴏɴ <u@gogs.io> * fix typo * Update docstring of MakeURL Co-authored-by: ᴜɴᴋɴᴡᴏɴ <u@gogs.io>
Diffstat (limited to 'internal/route')
-rw-r--r--internal/route/repo/issue.go58
1 files changed, 34 insertions, 24 deletions
diff --git a/internal/route/repo/issue.go b/internal/route/repo/issue.go
index 470575a0..6b7ef1fb 100644
--- a/internal/route/repo/issue.go
+++ b/internal/route/repo/issue.go
@@ -23,7 +23,6 @@ import (
"gogs.io/gogs/internal/form"
"gogs.io/gogs/internal/markup"
"gogs.io/gogs/internal/setting"
- "gogs.io/gogs/internal/template"
"gogs.io/gogs/internal/tool"
)
@@ -449,7 +448,7 @@ func NewIssuePost(c *context.Context, f form.NewIssue) {
}
log.Trace("Issue created: %d/%d", c.Repo.Repository.ID, issue.ID)
- c.Redirect(c.Repo.RepoLink + "/issues/" + com.ToStr(issue.Index))
+ c.RawRedirect(c.Repo.MakeURL(fmt.Sprintf("issues/%d", issue.Index)))
}
func uploadAttachment(c *context.Context, allowedTypes []string) {
@@ -522,10 +521,10 @@ func viewIssue(c *context.Context, isPullList bool) {
// Make sure type and URL matches.
if !isPullList && issue.IsPull {
- c.Redirect(c.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index))
+ c.RawRedirect(c.Repo.MakeURL(fmt.Sprintf("pulls/%d", issue.Index)))
return
} else if isPullList && !issue.IsPull {
- c.Redirect(c.Repo.RepoLink + "/issues/" + com.ToStr(issue.Index))
+ c.RawRedirect(c.Repo.MakeURL(fmt.Sprintf("issues/%d", issue.Index)))
return
}
@@ -660,8 +659,10 @@ func viewIssue(c *context.Context, isPullList bool) {
c.Repo.IsWriter() && c.Repo.GitRepo.IsBranchExist(pull.HeadBranch) &&
!branchProtected
- deleteBranchUrl := template.EscapePound(c.Repo.RepoLink + "/branches/delete/" + pull.HeadBranch)
- c.Data["DeleteBranchLink"] = fmt.Sprintf("%s?commit=%s&redirect_to=%s", deleteBranchUrl, pull.MergedCommitID, c.Data["Link"])
+ c.Data["DeleteBranchLink"] = c.Repo.MakeURL(url.URL{
+ Path: "branches/delete/" + pull.HeadBranch,
+ RawQuery: fmt.Sprintf("commit=%s&redirect_to=%s", pull.MergedCommitID, c.Data["Link"]),
+ })
}
c.Data["Participants"] = participants
@@ -850,7 +851,7 @@ func NewComment(c *context.Context, f form.CreateComment) {
if c.HasError() {
c.Flash.Error(c.Data["ErrorMsg"].(string))
- c.Redirect(fmt.Sprintf("%s/issues/%d", c.Repo.RepoLink, issue.Index))
+ c.RawRedirect(c.Repo.MakeURL(fmt.Sprintf("issues/%d", issue.Index)))
return
}
@@ -902,11 +903,16 @@ func NewComment(c *context.Context, f form.CreateComment) {
if issue.IsPull {
typeName = "pulls"
}
+
+ location := url.URL{
+ Path: fmt.Sprintf("%s/%d", typeName, issue.Index),
+ }
+
if comment != nil {
- c.RawRedirect(fmt.Sprintf("%s/%s/%d#%s", c.Repo.RepoLink, typeName, issue.Index, comment.HashTag()))
- } else {
- c.Redirect(fmt.Sprintf("%s/%s/%d", c.Repo.RepoLink, typeName, issue.Index))
+ location.Fragment = comment.HashTag()
}
+
+ c.RawRedirect(c.Repo.MakeURL(location))
}()
// Fix #321: Allow empty comments, as long as we have attachments.
@@ -990,13 +996,13 @@ func Labels(c *context.Context) {
func InitializeLabels(c *context.Context, f form.InitializeLabels) {
if c.HasError() {
- c.Redirect(c.Repo.RepoLink + "/labels")
+ c.RawRedirect(c.Repo.MakeURL("labels"))
return
}
list, err := db.GetLabelTemplateFile(f.TemplateName)
if err != nil {
c.Flash.Error(c.Tr("repo.issues.label_templates.fail_to_load_file", f.TemplateName, err))
- c.Redirect(c.Repo.RepoLink + "/labels")
+ c.RawRedirect(c.Repo.MakeURL("labels"))
return
}
@@ -1012,7 +1018,7 @@ func InitializeLabels(c *context.Context, f form.InitializeLabels) {
c.Handle(500, "NewLabels", err)
return
}
- c.Redirect(c.Repo.RepoLink + "/labels")
+ c.RawRedirect(c.Repo.MakeURL("labels"))
}
func NewLabel(c *context.Context, f form.CreateLabel) {
@@ -1021,7 +1027,7 @@ func NewLabel(c *context.Context, f form.CreateLabel) {
if c.HasError() {
c.Flash.Error(c.Data["ErrorMsg"].(string))
- c.Redirect(c.Repo.RepoLink + "/labels")
+ c.RawRedirect(c.Repo.MakeURL("labels"))
return
}
@@ -1034,7 +1040,7 @@ func NewLabel(c *context.Context, f form.CreateLabel) {
c.Handle(500, "NewLabel", err)
return
}
- c.Redirect(c.Repo.RepoLink + "/labels")
+ c.RawRedirect(c.Repo.MakeURL("labels"))
}
func UpdateLabel(c *context.Context, f form.CreateLabel) {
@@ -1055,7 +1061,7 @@ func UpdateLabel(c *context.Context, f form.CreateLabel) {
c.Handle(500, "UpdateLabel", err)
return
}
- c.Redirect(c.Repo.RepoLink + "/labels")
+ c.RawRedirect(c.Repo.MakeURL("labels"))
}
func DeleteLabel(c *context.Context) {
@@ -1066,7 +1072,7 @@ func DeleteLabel(c *context.Context) {
}
c.JSON(200, map[string]interface{}{
- "redirect": c.Repo.RepoLink + "/labels",
+ "redirect": c.Repo.MakeURL("labels"),
})
return
}
@@ -1161,7 +1167,7 @@ func NewMilestonePost(c *context.Context, f form.CreateMilestone) {
}
c.Flash.Success(c.Tr("repo.milestones.create_success", f.Title))
- c.Redirect(c.Repo.RepoLink + "/milestones")
+ c.RawRedirect(c.Repo.MakeURL("milestones"))
}
func EditMilestone(c *context.Context) {
@@ -1228,7 +1234,7 @@ func EditMilestonePost(c *context.Context, f form.CreateMilestone) {
}
c.Flash.Success(c.Tr("repo.milestones.edit_success", m.Name))
- c.Redirect(c.Repo.RepoLink + "/milestones")
+ c.RawRedirect(c.Repo.MakeURL("milestones"))
}
func ChangeMilestonStatus(c *context.Context) {
@@ -1242,6 +1248,10 @@ func ChangeMilestonStatus(c *context.Context) {
return
}
+ location := url.URL{
+ Path: "milestones",
+ }
+
switch c.Params(":action") {
case "open":
if m.IsClosed {
@@ -1250,7 +1260,7 @@ func ChangeMilestonStatus(c *context.Context) {
return
}
}
- c.Redirect(c.Repo.RepoLink + "/milestones?state=open")
+ location.RawQuery = "state=open"
case "close":
if !m.IsClosed {
m.ClosedDate = time.Now()
@@ -1259,10 +1269,10 @@ func ChangeMilestonStatus(c *context.Context) {
return
}
}
- c.Redirect(c.Repo.RepoLink + "/milestones?state=closed")
- default:
- c.Redirect(c.Repo.RepoLink + "/milestones")
+ location.RawQuery = "state=closed"
}
+
+ c.RawRedirect(c.Repo.MakeURL(location))
}
func DeleteMilestone(c *context.Context) {
@@ -1273,6 +1283,6 @@ func DeleteMilestone(c *context.Context) {
}
c.JSON(200, map[string]interface{}{
- "redirect": c.Repo.RepoLink + "/milestones",
+ "redirect": c.Repo.MakeURL("milestones"),
})
}